35 case EZB_ZCL_CORE_SET_ATTR_VALUE_CB_ID:
36 if (!this->
event_.set_attr.is_inline && this->event_.set_attr.data.heap_data !=
nullptr) {
37 delete[] this->
event_.set_attr.data.heap_data;
38 this->
event_.set_attr.data.heap_data =
nullptr;
61 struct set_attr_event {
62 ezb_zcl_message_info_t
info;
66 uint8_t inline_data[4];
75 void init_set_attr_value_data_(ezb_zcl_message_info_t
info, ezb_zcl_attribute_t
attribute) {
79 if (attribute.data.value !=
nullptr) {
81 size_t value_size = ezb_zcl_get_attr_value_size(
attribute.data.type,
attribute.data.value);
83 this->
event_.set_attr.data.heap_data =
new uint8_t[value_size];
84 memcpy(this->
event_.set_attr.data.heap_data, attribute.data.value, value_size);
85 this->
event_.set_attr.attribute.data.value = this->
event_.set_attr.data.heap_data;
86 this->
event_.set_attr.is_inline =
false;
88 memcpy(this->
event_.set_attr.data.inline_data, attribute.data.value, value_size);
89 this->
event_.set_attr.attribute.data.value = this->
event_.set_attr.data.inline_data;
90 this->
event_.set_attr.is_inline =
true;