@@ -9,6 +9,7 @@ static esp_err_t zb_attribute_set_handler(const esp_zb_zcl_set_attr_value_messag
99static  esp_err_t  zb_attribute_reporting_handler (const  esp_zb_zcl_report_attr_message_t  *message);
1010static  esp_err_t  zb_cmd_read_attr_resp_handler (const  esp_zb_zcl_cmd_read_attr_resp_message_t  *message);
1111static  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);
1213static  esp_err_t  zb_cmd_default_resp_handler (const  esp_zb_zcl_cmd_default_resp_message_t  *message);
1314
1415//  Zigbee action handlers
@@ -20,8 +21,11 @@ static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id,
2021    case  ESP_ZB_CORE_REPORT_ATTR_CB_ID:            ret = zb_attribute_reporting_handler ((esp_zb_zcl_report_attr_message_t  *)message); break ;
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 ;
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" 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" break ;
2529  }
2630  return  ret;
2731}
@@ -132,6 +136,28 @@ static esp_err_t zb_configure_report_resp_handler(const esp_zb_zcl_cmd_config_re
132136  return  ESP_OK;
133137}
134138
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)" 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)" 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+ 
135161static  esp_err_t  zb_cmd_default_resp_handler (const  esp_zb_zcl_cmd_default_resp_message_t  *message) {
136162  if  (!message) {
137163    log_e (" Empty message" 
0 commit comments