static gboolean on_zcl_group_view_group(ZigbeeZcl_group *zcl_group_object,
GDBusMethodInvocation *invocation,
- gshort node_id,
- gchar dest_ep,
- gshort group_id,
+ gushort node_id,
+ guchar dest_ep,
+ gushort group_id,
gpointer user_data)
{
ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
GVariantIter *iter = NULL;
gint i = 0;
+ gushort value = 0;
gboolean ret;
req.node_id = node_id;
req.dest_ep = dest_ep;
req.group_count = group_count;
- req.group_list = g_malloc0(sizeof(gshort) * group_count);
+ req.group_list = g_malloc0(sizeof(gushort) * group_count);
g_variant_get(group_list, "aq", &iter);
- while (g_variant_iter_loop(iter, "q", req.group_list[i])) {
+ while (i < group_count && g_variant_iter_loop(iter, "q", &value)) {
+ Z_LOGD(" cluster: [%d]", value);
+ req.group_list[i] = value;
i++;
- if (i >= group_count)
- break;
}
/* Allocate response callback data */
if (NULL == resp_cb_data) {
Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+ g_free(req.group_list);
+
/* Send failure response */
ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
/* Copy data */
req->node_id = in_req->node_id;
req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
}
zcl_group_request_data = (gpointer)req;
req->dest_ep = in_req->dest_ep;
req->group_count = in_req->group_count;
req->group_list = (gushort *)g_memdup(in_req->group_list,
- in_req->group_count);
+ sizeof(gushort) * in_req->group_count);
}
zcl_group_request_data = (gpointer)req;