break;
/* ZCL Doorlock */
case ZBL_ZCL_DOORLOCK_LOCK_STATE: {
- zb_form_network_cb cb = container->cb;
- cb(0x0000, container->userdata);
+ ERR("Unhandled cid = %d", container->cid);
}
break;
/* ZCL Fanmode */
case ZBL_ZCL_FANMODE_FAN_MODE_STATE: {
- zb_form_network_cb cb = container->cb;
- cb(0x0000, container->userdata);
+ ERR("Unhandled cid = %d", container->cid);
}
break;
/* ZCL Group */
break;
/* ZCL On/Off */
case ZBL_ZCL_ON_OFF_GET_ON_OFF_STATE: {
- zb_form_network_cb cb = container->cb;
- cb(0x0000, container->userdata);
+ ERR("Unhandled cid = %d", container->cid);
}
break;
/* ZCL Pollcontrol */
break;
/* ZCL Thermostat */
case ZBL_ZCL_THERMOSTAT_GET_LOCAL_TEMP: {
- zb_form_network_cb cb = container->cb;
- cb(0x0000, container->userdata);
+ ERR("Unhandled cid = %d", container->cid);
}
break;
default:
variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_commands_received",
g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, cluster_id,
- start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err);
+ start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
if (variant) {
g_variant_get(variant, "(i)", &result);
DBG("ret = [0x%x]", result);
int zbl_add_group(nwk_addr addr16, unsigned char ep, unsigned short group_id,
const char *group_name, zb_zcl_group_add_group_rsp cb, void *user_data)
{
+ int result = ZIGBEE_ERROR_NONE;
+ GVariant *variant = NULL;
+ GError *dbus_err = NULL;
+
int sub_id, to;
zbl_req_cb_s *container;
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
-
- groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+ groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
while (group_name[j] != '\0') {
- g_variant_builder_add(groupname_builder, "y", group_name[j]);
+ g_variant_builder_add(groupname_builder, "(y)", (group_name[j]));
j++;
}
groupname_variant = g_variant_builder_end(groupname_builder);
g_variant_builder_unref(groupname_builder);
- g_dbus_proxy_call(zcl_group_proxy, "add_group",
- g_variant_new("(qyq@ay)", addr16, ep, group_id, groupname_variant),
- G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
+ variant = g_dbus_proxy_call_sync(zcl_group_proxy, "add_group",
+ g_variant_new("(qyq@a(y))", addr16, ep, group_id, groupname_variant),
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ DBG("ret = [0x%x]", result);
+ g_variant_unref(variant);
+ } else {
+ ERR("Failed to get identify [%s]", dbus_err->message);
+ g_error_free(dbus_err);
+ return ZIGBEE_ERROR_IO_ERROR;
+ }
- return ZIGBEE_ERROR_NONE;
+ return result;
}
int zbl_view_group(nwk_addr addr16, unsigned char ep, unsigned short group_id,
zb_zcl_group_view_group_rsp cb, void *user_data)
{
+ int result = ZIGBEE_ERROR_NONE;
+ GVariant *variant = NULL;
+ GError *dbus_err = NULL;
+
int sub_id, to;
zbl_req_cb_s *container;
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
- g_dbus_proxy_call(zcl_group_proxy, "view_group",
+ variant = g_dbus_proxy_call_sync(zcl_group_proxy, "view_group",
g_variant_new("(qyq)", addr16, ep, group_id),
- G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ DBG("ret = [0x%x]", result);
+ g_variant_unref(variant);
+ } else {
+ ERR("Failed to get identify [%s]", dbus_err->message);
+ g_error_free(dbus_err);
+ return ZIGBEE_ERROR_IO_ERROR;
+ }
- return ZIGBEE_ERROR_NONE;
+ return result;
}
int zbl_group_get_group_membership(nwk_addr addr16, unsigned char ep,
unsigned char group_count, unsigned short *group_list,
zb_zcl_group_get_group_membership_rsp cb, void *user_data)
{
+ int result = ZIGBEE_ERROR_NONE;
+ GVariant *variant = NULL;
+ GError *dbus_err = NULL;
+
int sub_id, to;
zbl_req_cb_s *container;
grouplist_variant = g_variant_builder_end(grouplist_builder);
g_variant_builder_unref(grouplist_builder);
- g_dbus_proxy_call(zcl_group_proxy, "get_group_membership",
+ variant = g_dbus_proxy_call_sync(zcl_group_proxy, "get_group_membership",
g_variant_new("(qyy@aq)", addr16, ep, group_count, grouplist_variant),
- G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ DBG("ret = [0x%x]", result);
+ g_variant_unref(variant);
+ } else {
+ ERR("Failed to get identify [%s]", dbus_err->message);
+ g_error_free(dbus_err);
+ return ZIGBEE_ERROR_IO_ERROR;
+ }
- return ZIGBEE_ERROR_NONE;
+ return result;
}
int zbl_remove_group(nwk_addr addr16, unsigned char ep, unsigned short group_id,
zb_zcl_group_remove_group_rsp cb, void *user_data)
{
+ int result = ZIGBEE_ERROR_NONE;
+ GVariant *variant = NULL;
+ GError *dbus_err = NULL;
+
int sub_id, to;
zbl_req_cb_s *container;
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
- g_dbus_proxy_call(zcl_group_proxy, "remove_group", g_variant_new("(qyq)",
- addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
+ variant = g_dbus_proxy_call_sync(zcl_group_proxy, "remove_group", g_variant_new("(qyq)",
+ addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ DBG("ret = [0x%x]", result);
+ g_variant_unref(variant);
+ } else {
+ ERR("Failed to get add_group_if_identifying [%s]", dbus_err->message);
+ g_error_free(dbus_err);
+ return ZIGBEE_ERROR_IO_ERROR;
+ }
- return ZIGBEE_ERROR_NONE;
+ return result;
}
int zbl_remove_all_group(nwk_addr addr16, unsigned char ep)
RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
RETV_IF(NULL == zcl_group_proxy, ZIGBEE_ERROR_IO_ERROR);
- groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+ groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
while (group_name[j] != '\0') {
- g_variant_builder_add(groupname_builder, "y", group_name[j]);
+ g_variant_builder_add(groupname_builder, "(y)", group_name[j]);
j++;
}
groupname_variant = g_variant_builder_end(groupname_builder);
g_variant_builder_unref(groupname_builder);
variant = g_dbus_proxy_call_sync(zcl_group_proxy, "add_group_if_identifying",
- g_variant_new("(qyq@ay)", addr16, ep, group_id, groupname_variant),
+ g_variant_new("(qyq@a(y))", addr16, ep, group_id, groupname_variant),
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
if (variant) {
g_variant_get(variant, "(i)", &result);