+
+ switch(noti_id) {
+ case ZBLIB_SERVICE_NOTI_ADD_GROUP_RSP: {
+ ZigbeeZclGroupAddGroupNoti_t *rsp =
+ (ZigbeeZclGroupAddGroupNoti_t*)noti_data;
+
+ Z_LOGD("add_group_rsp from : [0x%X]", rsp->node_id);
+
+ zigbee_zcl_group_emit_add_group_rsp(group_object, rsp->node_id, rsp->src_ep,
+ rsp->status, rsp->group_id);
+ }
+ break;
+ case ZBLIB_SERVICE_NOTI_VIEW_GROUP_RSP: {
+ ZigbeeZclGroupViewGroupNoti_t *rsp =
+ (ZigbeeZclGroupViewGroupNoti_t*)noti_data;
+
+ Z_LOGD("view_group_rsp from : [0x%X]", rsp->node_id);
+
+ zigbee_zcl_group_emit_view_group_rsp(group_object, rsp->node_id, rsp->src_ep,
+ rsp->status, rsp->group_id, rsp->group_name);
+ }
+ break;
+ case ZBLIB_SERVICE_NOTI_GET_GROUP_MEMBERSHIP_RSP: {
+ int i;
+ GVariant* group_list = NULL;
+ GVariantBuilder *attr_builder = NULL;
+
+ ZigbeeZclGroupGetGroupMembershipNoti_t *rsp =
+ (ZigbeeZclGroupGetGroupMembershipNoti_t*)noti_data;
+
+ Z_LOGD("get_group_membership_rsp from : [0x%X]", rsp->node_id);
+
+ attr_builder = g_variant_builder_new(G_VARIANT_TYPE("aq"));
+
+ for (i = 0; i < rsp->group_count; i++)
+ g_variant_builder_add(attr_builder, "q", rsp->group_list[i]);
+ group_list = g_variant_builder_end(attr_builder);
+ g_variant_builder_unref(attr_builder);
+
+ zigbee_zcl_group_emit_get_group_membership_rsp(group_object, rsp->node_id,
+ rsp->src_ep, rsp->capacity, rsp->group_count, group_list);
+ }
+ break;
+ case ZBLIB_SERVICE_NOTI_REMOVE_GROUP_RSP: {
+ ZigbeeZclGroupRemoveGroupNoti_t *rsp =
+ (ZigbeeZclGroupRemoveGroupNoti_t*)noti_data;
+
+ Z_LOGD("remove_group_rsp from : [0x%X]", rsp->node_id);
+
+ zigbee_zcl_group_emit_remove_group_rsp(group_object, rsp->node_id, rsp->src_ep,
+ rsp->status, rsp->group_id);
+ }
+ break;
+ default:
+ Z_LOGE("Unexpected notification [%x]", noti_id);
+ break;
+ }
+
+ /* ZigbeeZcl_group should be dereferenced */
+ g_object_unref(group_object);