53 zb_zcl_device_callback_param_t *p_device_cb_param = ZB_BUF_GET_PARAM(bufid, zb_zcl_device_callback_param_t);
54 zb_zcl_device_callback_id_t device_cb_id = p_device_cb_param->device_cb_id;
55 zb_uint16_t cluster_id = p_device_cb_param->cb_param.set_attr_value_param.cluster_id;
56 zb_uint16_t attr_id = p_device_cb_param->cb_param.set_attr_value_param.attr_id;
58 switch (device_cb_id) {
60 case ZB_ZCL_SET_ATTR_VALUE_CB_ID:
61 if (cluster_id == ZB_ZCL_CLUSTER_ID_TIME) {
62 if (attr_id == ZB_ZCL_ATTR_TIME_TIME_ID) {
63 zb_uint32_t value = p_device_cb_param->cb_param.set_attr_value_param.values.data32;
64 ESP_LOGI(TAG,
"Synchronize time to %u", value);
66 }
else if (attr_id == ZB_ZCL_ATTR_TIME_TIME_STATUS_ID) {
67 zb_uint8_t value = p_device_cb_param->cb_param.set_attr_value_param.values.data8;
68 ESP_LOGI(TAG,
"Time status %hd", value);
69 this->
defer([
this, value]() { this->
has_time_ = ZB_ZCL_TIME_TIME_STATUS_SYNCHRONIZED_BIT_IS_SET(value); });
73 ESP_LOGI(TAG,
"Unhandled cluster attribute id: %d", cluster_id);
74 p_device_cb_param->status = RET_NOT_IMPLEMENTED;
78 p_device_cb_param->status = RET_NOT_IMPLEMENTED;
82 ESP_LOGD(TAG,
"Zcl_device_cb_ status: %hd", p_device_cb_param->status);
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi defer)(const char *name, std::function< void()> &&f)
Defer a callback to the next loop() call.