From: saerome kim Date: Sun, 22 Jan 2017 23:59:37 +0000 (+0900) Subject: Change GDBus methods from sync to async X-Git-Tag: submit/tizen/20170512.045637~62 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6c91ee6266dae54a126ca522168943850ff5c7c7;p=platform%2Fcore%2Fapi%2Fzigbee.git Change GDBus methods from sync to async Change-Id: Ibb1f4ef39a5c9447a8166cb4f5aee149d9947405 Signed-off-by: saerome kim --- diff --git a/common/zb-common.h b/common/zb-common.h index 846c641..e33ff42 100644 --- a/common/zb-common.h +++ b/common/zb-common.h @@ -31,7 +31,7 @@ #endif #define ZIGBEE_SERVER_NAME "org.tizen.zigbee" -#define ZIGBEE_OBJECT_PATH "/org/tizen/zigbee" +#define ZIGBEE_CONTROL_OBJECT_PATH "/org/tizen/zigbee/control" #define ZIGBEE_SERVICE_INTERFACE "org.tizen.zigbee.service" #define ZIGBEE_SERVICE_OBJECT_PATH "/org/tizen/zigbee/service" @@ -52,7 +52,7 @@ #define ZIGBEE_ZCL_BASIC_OBJECT_PATH "/org/tizen/zigbee/zcl_basic" #define ZIGBEE_ZCL_COLOR_CONTROL_INTERFACE "org.tizen.zigbee.zcl_color_control" -#define ZIGBEE_ZCL_COLOR_CONTROL_OBJECT_PATH "/org/tizen/zigbee/zcl_control_control" +#define ZIGBEE_ZCL_COLOR_CONTROL_OBJECT_PATH "/org/tizen/zigbee/zcl_color_control" #define ZIGBEE_ZCL_ON_OFF_INTERFACE "org.tizen.zigbee.zcl_on_off" #define ZIGBEE_ZCL_ON_OFF_OBJECT_PATH "/org/tizen/zigbee/zcl_on_off" diff --git a/include/zigbee.h b/include/zigbee.h index bf43dd6..9245ba5 100644 --- a/include/zigbee.h +++ b/include/zigbee.h @@ -80,6 +80,45 @@ int zb_create(zigbee_h *handle); */ void zb_destroy(zigbee_h handle); + +/** + * @brief response of enabling the zigbee service + * @details response of enabling the zigbee service + * + * @since_tizen 3.0 + * + * @param[out] status #ZB_ZDP_SUCCESS \n + * #ZB_ZDP_NOT_SUPPORTED \n + * @param[out] user_data user data + * + * @see zb_enable() + */ +typedef void (*zb_enable_cb)(unsigned char status, void *user_data); + +/** + * @brief enable the zigbee service. + * @details all this function to start zigbee service + * + * @since_tizen 3.0 + * + * @remarks You must free all resources of the zigbee by calling zb_destroy() + * if zigbee service is no longer needed. + * + * @param[in] handle The handle of zigbee + * @param[in] cb zb_enable_cb + * @param[in] user_data user data + * + * @return 0 on success, otherwise a negative error value. + * @retval #ZIGBEE_ERROR_NONE Successful + * @retval #ZIGBEE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #ZIGBEE_ERROR_IO_ERROR Unexpected d-bus error + * + * @see zb_create() + * @see zb_destroy() + * + */ +int zb_enable(zigbee_h handle, zb_enable_cb cb, void *user_data); + /** * @brief Specifies the type of function passed to zb_set_event_handler() * @details This function can receive events from the devices in the network. @@ -121,8 +160,8 @@ typedef void (*zb_event_cb)(nwk_addr addr16, ieee_addr addr64, zb_event_e event_ zb_event_data_s lparam); /** - * @brief enable the zigbee service. - * @details all this function to start zigbee service + * @brief set event handler for the zigbee service. + * @details to set event handler to get events from the zigbee service * * @since_tizen 3.0 * @@ -141,7 +180,7 @@ typedef void (*zb_event_cb)(nwk_addr addr16, ieee_addr addr64, zb_event_e event_ * @see zb_destroy() * */ -int zb_enable(zigbee_h handle, zb_event_cb event_handler); +int zb_set_event_cb(zigbee_h handle, zb_event_cb event_handler); /** * @brief disable the zigbee service. @@ -218,6 +257,19 @@ int zb_coex_start(zigbee_h handle, unsigned char channel); */ int zb_coex_stop(zigbee_h handle); +/** + * @brief response of forming the zigbee networl + * @details response of forming the zigbee networl + * + * @since_tizen 3.0 + * + * @param[out] panid PAN ID + * @param[out] user_data user data + * + * @see zb_form_network() + */ +typedef void (*zb_form_network_cb)(nwk_addr panid, void *user_data); + /** * @brief Make network to operate as zigbee coordinator * @details This function to enable zigbee coordinator. @@ -228,6 +280,8 @@ int zb_coex_stop(zigbee_h handle); * call zb_zdo_set_compatible_startup_parameters() API * * @param[in] handle The handle of zigbee + * @param[in] cb zb_form_network_cb + * @param[in] user_data user data * * @return 0 on success, otherwise a negative error value. * @retval #ZIGBEE_ERROR_NONE Successful @@ -239,8 +293,21 @@ int zb_coex_stop(zigbee_h handle); * @see zb_disable_network() * @see zb_zdo_set_compatible_startup_parameters() */ -int zb_form_network(zigbee_h handle); +int zb_form_network(zigbee_h handle, zb_form_network_cb cb, void *user_data); +/** + * @brief response of disabling the zigbee networl + * @details response of disabling the zigbee networl + * + * @since_tizen 3.0 + * + * @param[out] status #ZB_ZDP_SUCCESS \n + * #ZB_ZDP_NOT_SUPPORTED \n + * @param[out] user_data user data + * + * @see zb_form_network() + */ +typedef void (*zb_disable_network_cb)(unsigned char status, void *user_data); /** * @brief Disable network and stop zigbee coordinator role * @details This function to stop zigbee coordinator @@ -259,7 +326,7 @@ int zb_form_network(zigbee_h handle); * * @see zb_form_network() */ -int zb_disable_network(zigbee_h handle); +int zb_disable_network(zigbee_h handle, zb_disable_network_cb cb, void *user_data); /** * @brief Forces a node to leave one network and to rejoin the other diff --git a/lib/zbl-dbus.c b/lib/zbl-dbus.c index b22b9ca..cbcf3b2 100644 --- a/lib/zbl-dbus.c +++ b/lib/zbl-dbus.c @@ -81,7 +81,7 @@ static GDBusProxy *_zbl_get_service_proxy(void) if (NULL == service_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_SERVICE_OBJECT_PATH, ZIGBEE_SERVICE_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_SERVICE_INTERFACE, NULL, NULL); } else proxy = service_gproxy; @@ -96,7 +96,7 @@ static GDBusProxy *_zbl_get_on_off_proxy(void) if (NULL == on_off_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_ON_OFF_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_ON_OFF_INTERFACE, NULL, NULL); } else proxy = on_off_gproxy; @@ -111,7 +111,7 @@ static GDBusProxy *_zbl_get_door_lock_proxy(void) if (NULL == door_lock_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_DOOR_LOCK_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_DOOR_LOCK_INTERFACE, NULL, NULL); } else proxy = door_lock_gproxy; @@ -126,7 +126,7 @@ static GDBusProxy *_zbl_get_level_control_proxy(void) if (NULL == level_control_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_LEVEL_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_LEVEL_CONTROL_INTERFACE, NULL, NULL); } else proxy = level_control_gproxy; @@ -141,7 +141,7 @@ static GDBusProxy *_zbl_get_thermostat_proxy(void) if (NULL == thermostat_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_THERMOSTAT_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_THERMOSTAT_INTERFACE, NULL, NULL); } else proxy = thermostat_gproxy; @@ -156,7 +156,7 @@ static GDBusProxy *_zbl_get_alarm_proxy(void) if (NULL == alarm_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_ALARM_OBJECT_PATH, ZIGBEE_ZCL_ALARM_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_ALARM_INTERFACE, NULL, NULL); } else proxy = alarm_gproxy; @@ -171,9 +171,8 @@ static GDBusProxy *_zbl_get_fan_control_proxy(void) if (NULL == fan_control_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_FAN_CONTROL_OBJECT_PATH, - ZIGBEE_ZCL_FAN_CONTROL_INTERFACE, NULL, - NULL); + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, + ZIGBEE_ZCL_FAN_CONTROL_INTERFACE, NULL, NULL); } else proxy = fan_control_gproxy; @@ -187,7 +186,7 @@ static GDBusProxy *_zbl_get_mfglib_proxy(void) if (NULL == mfglib_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_MFGLIB_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_MFGLIB_CONTROL_INTERFACE, NULL, NULL); } else proxy = mfglib_gproxy; @@ -202,7 +201,7 @@ static GDBusProxy *_zbl_get_zcl_global_proxy(void) if (NULL == zcl_global_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, NULL, NULL); } else proxy = zcl_global_proxy; @@ -217,7 +216,7 @@ static GDBusProxy *_zbl_get_zdo_dev_proxy(void) if (NULL == zdo_dev_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZDO_DEV_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZDO_DEV_CONTROL_INTERFACE, NULL, NULL); } else proxy = zdo_dev_proxy; @@ -232,7 +231,7 @@ static GDBusProxy *_zbl_get_basic_proxy(void) if (NULL == zcl_basic_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_BASIC_OBJECT_PATH, ZIGBEE_ZCL_BASIC_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_BASIC_INTERFACE, NULL, NULL); } else proxy = zcl_basic_proxy; @@ -247,7 +246,7 @@ static GDBusProxy *_zbl_get_identify_proxy(void) if (NULL == zcl_identify_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_IDENTIFY_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_IDENTIFY_INTERFACE, NULL, NULL); } else proxy = zcl_identify_proxy; @@ -262,7 +261,7 @@ static GDBusProxy *_zbl_get_ias_zone_proxy(void) if (NULL == zcl_ias_zone_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_IAS_ZONE_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_IAS_ZONE_INTERFACE, NULL, NULL); } else proxy = zcl_ias_zone_proxy; @@ -277,7 +276,7 @@ static GDBusProxy *_zbl_get_poll_control_proxy(void) if (NULL == zcl_poll_control_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_POLL_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_POLL_CONTROL_INTERFACE, NULL, NULL); } else proxy = zcl_poll_control_proxy; @@ -292,7 +291,7 @@ static GDBusProxy *_zbl_get_group_proxy(void) if (NULL == zcl_group_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_GROUP_OBJECT_PATH, ZIGBEE_ZCL_GROUP_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_GROUP_INTERFACE, NULL, NULL); } else proxy = zcl_group_proxy; @@ -307,7 +306,7 @@ static GDBusProxy *_zbl_get_scene_proxy(void) if (NULL == zcl_scene_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_SCENE_OBJECT_PATH, ZIGBEE_ZCL_SCENE_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_SCENE_INTERFACE, NULL, NULL); } else proxy = zcl_scene_proxy; @@ -322,7 +321,7 @@ static GDBusProxy *_zbl_get_zdo_bind_proxy(void) if (NULL == zdo_bind_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZDO_BIND_OBJECT_PATH, ZIGBEE_ZDO_BIND_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZDO_BIND_INTERFACE, NULL, NULL); } else proxy = zdo_bind_proxy; @@ -337,7 +336,7 @@ static GDBusProxy *_zbl_get_color_control_proxy(void) if (NULL == zcl_color_control_proxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_ZCL_COLOR_CONTROL_OBJECT_PATH, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_ZCL_COLOR_CONTROL_INTERFACE, NULL, NULL); } else proxy = zcl_color_control_proxy; @@ -352,7 +351,7 @@ static GDBusProxy *_zbl_get_custom_gproxy(void) if (NULL == custom_gproxy) { proxy = g_dbus_proxy_new_sync(gdbus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, - ZIGBEE_SERVER_NAME, ZIGBEE_CUSTOM_OBJECT_PATH, ZIGBEE_CUSTOM_INTERFACE, + ZIGBEE_SERVER_NAME, ZIGBEE_CONTROL_OBJECT_PATH, ZIGBEE_CUSTOM_INTERFACE, NULL, NULL); } else proxy = custom_gproxy; @@ -977,21 +976,110 @@ static void _zbl_dbus_name_owner_notify(GObject *object, GParamSpec *pspec, zbl_dbus_stop(); } -int zbl_enable(zigbee_h handle, zb_event_cb event_handler) +static void _zbl_request_cleanup(gpointer data) { - GVariant *variant = NULL; - unsigned char enabled; + zbl_req_cb_s *container = data; + RET_IF(NULL == container); + + if (container->tid) { + g_source_remove(container->tid); + DBG("tid=%d removed"); + container->tid = 0; + } + +#ifdef ZB_FEATURE_GLOBAL_RSP_SYNC + _zbl_deregister_global_req(container->handle, container); +#endif + + free(container); +} + +static gboolean _zbl_timeout_enable(gpointer p) +{ + zbl_req_cb_s *container = NULL; + zb_enable_cb cb = NULL; + + DBG("zb_enable_cb()"); + + RETVM_IF(NULL == gdbus_conn, G_SOURCE_REMOVE, "gdbus_conn is NULL"); + container = p; + RETVM_IF(NULL == container, G_SOURCE_REMOVE, "cb_container is NULL"); + cb = container->cb; + + if (false == container->found && container->cb) + cb(ZB_ZDP_NOT_SUPPORTED, container->userdata); + + container->tid = 0; + + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); + DBG("container->sid=%d unsubscribed"); + container->sid = 0; + + return G_SOURCE_REMOVE; +} + +static void _zbl_enable_cb(GDBusConnection *connection, + const gchar *sender_name, const gchar *object_path, const gchar *interface_name, + const gchar *signal_name, GVariant *parameters, gpointer user_data) +{ + zbl_req_cb_s *container = user_data; + zb_enable_cb cb = container->cb; + + unsigned char ret = ZB_ZDP_SUCCESS; + + container->found = true; + + DBG("_zbl_enable_cb"); + + g_variant_get(parameters, "(b)", &ret); + + if (cb) + cb(ret, container->userdata); + + if (container->sid) + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); +} + + +int zbl_enable(zigbee_h handle, zb_enable_cb cb, void *user_data) +{ + int sub_id, to; + zbl_req_cb_s *container; - RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - handle->event_handler = event_handler; - variant = g_dbus_proxy_call_sync(service_gproxy, "enable", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &enabled); - DBG("ZigBee enabled status 0x%x", enabled); + + DBG("zbl_enable()"); + + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + + to = zbl_dbus_get_timeout(service_gproxy); + sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, + ZIGBEE_SERVICE_INTERFACE, "enabled", ZIGBEE_CONTROL_OBJECT_PATH, NULL, 0, + _zbl_enable_cb, container, _zbl_request_cleanup); + + if (0 == sub_id) { + ERR("g_dbus_connection_signal_subscribe() Fail"); + free(container); + return ZIGBEE_ERROR_IO_ERROR; } + + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_enable, container); + container->userdata = user_data; + + g_dbus_proxy_call(service_gproxy, "enable", NULL, G_DBUS_CALL_FLAGS_NONE, to, + NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; +} + +int zbl_set_event_cb(zigbee_h handle, zb_event_cb event_handler) +{ + RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); + handle->event_handler = event_handler; return ZIGBEE_ERROR_NONE; } @@ -999,7 +1087,7 @@ int zbl_disable(void) { DBG("zbl_disable()"); - if (0 <= zbl_ref_count) { + if (0 >= zbl_ref_count) { WARN("dbus does not initiaized\n"); return ZIGBEE_ERROR_NO_DATA; } @@ -1012,8 +1100,8 @@ int zbl_disable(void) if (gdbus_conn) { if (service_gproxy) { - g_dbus_proxy_call_sync(service_gproxy, "disable", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); + g_dbus_proxy_call(service_gproxy, "disable", NULL, G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); g_object_unref(service_gproxy); service_gproxy = NULL; @@ -1049,17 +1137,12 @@ int zbl_disable(void) int zbl_hw_reset(void) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - DBG("zbl_hw_reset()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(service_gproxy, "zb_hw_reset", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) - g_variant_get(variant, "(y)", &status); + g_dbus_proxy_call(service_gproxy, "zb_hw_reset", NULL, + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); return ZIGBEE_ERROR_NONE; } @@ -1377,86 +1460,146 @@ int zbl_get_all_device_info(zb_end_device_info_h **dev_list, unsigned char* num) int zbl_coex_start(unsigned char channel) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - DBG("zbl_coex_start()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(service_gproxy, "coex_start", - g_variant_new("(y)", channel), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - - if (variant) - g_variant_get(variant, "(y)", &status); + g_dbus_proxy_call(service_gproxy, "coex_start", g_variant_new("(y)", channel), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); return ZIGBEE_ERROR_NONE; } int zbl_coex_stop(void) { - GVariant *variant = NULL; - int ret = 0; - DBG("zbl_coex_stop()"); - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(service_gproxy, "coex_stop", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - - if (variant) - g_variant_get(variant, "(q)", &ret); + g_dbus_proxy_call(service_gproxy, "coex_stop", NULL, G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); - return ret; + return ZIGBEE_ERROR_NONE; } -int zbl_form_network(zigbee_h handle) +static void _zbl_form_network_cb(GDBusConnection *connection, + const gchar *sender_name, const gchar *object_path, const gchar *interface_name, + const gchar *signal_name, GVariant *parameters, gpointer user_data) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; + zbl_req_cb_s *container = user_data; + zb_form_network_cb cb = container->cb; + + nwk_addr panid; + + container->found = true; + + DBG("_zbl_form_network_cb()"); + + g_variant_get(parameters, "(q)", &panid); + + if (cb) + cb(panid, container->userdata); + + if (container->sid) + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); +} + - DBG("zbl_form_network()"); +int zbl_form_network(zigbee_h handle, zb_form_network_cb cb, void *user_data) +{ + int sub_id, to; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - /* Send enable command : sync */ - variant = g_dbus_proxy_call_sync(service_gproxy, "form_network", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Form network Status 0x%x", status); + DBG("%s:%s", __func__, __LINE__); + + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + + to = zbl_dbus_get_timeout(service_gproxy); + sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, + ZIGBEE_SERVICE_INTERFACE, "form_network_done", ZIGBEE_SERVICE_OBJECT_PATH, NULL, 0, + _zbl_form_network_cb, container, _zbl_request_cleanup); + + if (0 == sub_id) { + ERR("g_dbus_connection_signal_subscribe() Fail"); + free(container); + return ZIGBEE_ERROR_IO_ERROR; } - return status; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_enable, container); + container->userdata = user_data; + + g_dbus_proxy_call(service_gproxy, "form_network", NULL, G_DBUS_CALL_FLAGS_NONE, to, + NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; } -int zbl_disable_network(void) +static void _zbl_disable_network_cb(GDBusConnection *connection, + const gchar *sender_name, const gchar *object_path, const gchar *interface_name, + const gchar *signal_name, GVariant *parameters, gpointer user_data) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; + zbl_req_cb_s *container = user_data; + zb_form_network_cb cb = container->cb; - DBG("zbl_disable_network()"); + unsigned char ret = ZB_ZDP_SUCCESS; + + container->found = true; + + DBG("_zbl_disable_network_cb()"); + + g_variant_get(parameters, "(y)", &ret); + + if (cb) + cb(ret, container->userdata); + + if (container->sid) + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); +} + + +int zbl_disable_network(zigbee_h handle, zb_disable_network_cb cb, void *user_data) +{ + int sub_id, to; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(service_gproxy, "leave_network", - NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("disable network Status 0x%x", status); + DBG("zbl_disable_network()"); + + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + + to = zbl_dbus_get_timeout(service_gproxy); + sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, + ZIGBEE_SERVICE_INTERFACE, "leave_network_done", ZIGBEE_SERVICE_OBJECT_PATH, NULL, 0, + _zbl_disable_network_cb, container, _zbl_request_cleanup); + + if (0 == sub_id) { + ERR("g_dbus_connection_signal_subscribe() Fail"); + free(container); + return ZIGBEE_ERROR_IO_ERROR; } - return status; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_enable, container); + container->userdata = user_data; + + g_dbus_proxy_call(service_gproxy, "leave_network", NULL, G_DBUS_CALL_FLAGS_NONE, to, + NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; } int zbl_leave_device(ieee_addr addr64, bool remove_children, bool rejoin) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; GVariantBuilder *mac_builder = NULL; GVariant* mac_variant = NULL; unsigned char _remove_children = (remove_children) ? 1 : 0; @@ -1476,34 +1619,23 @@ int zbl_leave_device(ieee_addr addr64, bool remove_children, bool rejoin) g_variant_builder_add(mac_builder, "y", addr64[0]); mac_variant = g_variant_builder_end(mac_builder); - variant = g_dbus_proxy_call_sync(service_gproxy, "leave_req", - g_variant_new("(@ayyy)", mac_variant, _remove_children, _rejoin), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(b)", &status); - DBG("zigbee_remove_device 0x%x", status); - } + g_dbus_proxy_call(service_gproxy, "leave_req", + g_variant_new("(@ayyy)", mac_variant, _remove_children, _rejoin), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_permit_join(unsigned char duration, bool broadcast) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(service_gproxy, "permit_join", - g_variant_new("(ib)", duration, broadcast), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("permit join Status 0x%x", status); - } + g_dbus_proxy_call(service_gproxy, "permit_join", + g_variant_new("(ib)", duration, broadcast), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_addr_req(gpointer p) @@ -1530,24 +1662,6 @@ static gboolean _zbl_timeout_addr_req(gpointer p) return G_SOURCE_REMOVE; } -static void _zbl_request_cleanup(gpointer data) -{ - zbl_req_cb_s *container = data; - RET_IF(NULL == container); - - if (container->tid) { - g_source_remove(container->tid); - DBG("tid=%d removed"); - container->tid = 0; - } - -#ifdef ZB_FEATURE_GLOBAL_RSP_SYNC - _zbl_deregister_global_req(container->handle, container); -#endif - - free(container); -} - static void _zbl_addr_req_cb(GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) @@ -2482,8 +2596,8 @@ int zbl_user_desc_set(zigbee_h handle, nwk_addr addr16, unsigned char len, user_desc_variant = g_variant_builder_end(user_desc_builder); - g_dbus_proxy_call(zdo_dev_proxy, "user_desc_set_req", g_variant_new("(qy@ay)", - addr16, len, user_desc_variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + g_dbus_proxy_call(zdo_dev_proxy, "user_desc_set_req", g_variant_new("(qy@ay)", addr16, + len, user_desc_variant), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -2491,8 +2605,6 @@ int zbl_user_desc_set(zigbee_h handle, nwk_addr addr16, unsigned char len, int zbl_device_annce(zigbee_h handle, nwk_addr addr16, ieee_addr addr64, unsigned char capability) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; GVariantBuilder *mac_builder = NULL; GVariant* mac_variant = NULL; @@ -2510,15 +2622,12 @@ int zbl_device_annce(zigbee_h handle, nwk_addr addr16, ieee_addr addr64, g_variant_builder_add(mac_builder, "y", addr64[0]); mac_variant = g_variant_builder_end(mac_builder); - variant = g_dbus_proxy_call_sync(zdo_dev_proxy, "device_annce", - g_variant_new("(q@ayy)", addr16, mac_variant, capability), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_device_annce Status 0x%x", status); - } + g_dbus_proxy_call(zdo_dev_proxy, "device_annce", + g_variant_new("(q@ayy)", addr16, mac_variant, capability), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_bind_req_req(gpointer p) @@ -2636,21 +2745,21 @@ int zbl_bind_req(nwk_addr dst_addr16, ieee_addr src_addr64, static gboolean _zbl_timeout_unbind_req_req(gpointer p) { - zbl_req_cb_s *con = NULL; + zbl_req_cb_s *container = NULL; zb_zdo_unbind_rsp cb = NULL; RETVM_IF(NULL == gdbus_conn, G_SOURCE_REMOVE, "gdbus_conn is NULL"); - con = p; - RETVM_IF(NULL == con, G_SOURCE_REMOVE, "cb_container is NULL)"); - cb = con->cb; + container = p; + RETVM_IF(NULL == container, G_SOURCE_REMOVE, "cb_container is NULL)"); + cb = container->cb; - if (false == con->found && con->cb) - cb(ZB_ZDP_TIMEOUT, con->userdata); + if (false == container->found && container->cb) + cb(ZB_ZDP_TIMEOUT, container->userdata); - con->tid = 0; + container->tid = 0; - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); - con->sid = 0; + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); + container->sid = 0; return G_SOURCE_REMOVE; } @@ -2749,32 +2858,32 @@ int zbl_unbind_req(nwk_addr dst_addr16, static gboolean _zbl_timeout_mgmt_nwk_disc_req(gpointer p) { - zbl_req_cb_s *con = NULL; + zbl_req_cb_s *container = NULL; zb_zdo_mgmt_nwk_disc_rsp cb = NULL; zb_zdo_network_list_record_h *records = NULL; RETVM_IF(NULL == gdbus_conn, G_SOURCE_REMOVE, "gdbus_conn is NULL"); - con = p; - RETVM_IF(NULL == con, G_SOURCE_REMOVE, "cb_container is NULL)"); - cb = con->cb; + container = p; + RETVM_IF(NULL == container, G_SOURCE_REMOVE, "cb_container is NULL)"); + cb = container->cb; records = calloc(1, sizeof(zb_zdo_network_list_record_h)); if (records) { records[0] = calloc(1, sizeof(struct zb_zdo_network_list_record_s)); } - if (false == con->found && con->cb) - cb(0, 0, 0, 0, records, con->userdata); + if (false == container->found && container->cb) + cb(0, 0, 0, 0, records, container->userdata); if (records[0]) free(records[0]); if (records) free(records); - con->tid = 0; + container->tid = 0; - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); - con->sid = 0; + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); + container->sid = 0; return G_SOURCE_REMOVE; } @@ -2874,7 +2983,7 @@ int zbl_mgmt_nwk_disc_req(nwk_addr addr16, unsigned int scan_channels, g_dbus_proxy_call(zdo_dev_proxy, "nwk_disc_req", g_variant_new("(quyqy)", addr16, scan_channels, scan_duration, scan_count, start_idx), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -3349,8 +3458,6 @@ int zbl_mgmt_leave_device(ieee_addr addr64, unsigned char remove_children, int sub_id, to; zbl_req_cb_s *container; - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; GVariantBuilder *mac_builder = NULL; GVariant* mac_variant = NULL; @@ -3388,15 +3495,11 @@ int zbl_mgmt_leave_device(ieee_addr addr64, unsigned char remove_children, g_variant_builder_add(mac_builder, "y", addr64[0]); mac_variant = g_variant_builder_end(mac_builder); - variant = g_dbus_proxy_call_sync(service_gproxy, "leave_req", - g_variant_new("(@ayyy)", mac_variant, remove_children, rejoin), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(b)", &status); - DBG("Status 0x%x", status); - } + g_dbus_proxy_call(service_gproxy, "leave_req", + g_variant_new("(@ayyy)", mac_variant, remove_children, rejoin), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_mgmt_permit_joining_req(gpointer p) @@ -3444,9 +3547,6 @@ int zbl_mgmt_permit_joining_req(nwk_addr addr16, unsigned char duration, int sub_id, to; zbl_req_cb_s *container; - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR); @@ -3470,15 +3570,11 @@ int zbl_mgmt_permit_joining_req(nwk_addr addr16, unsigned char duration, container->tid = g_timeout_add_seconds(to, _zbl_timeout_mgmt_permit_joining_req, container); container->userdata = user_data; - variant = g_dbus_proxy_call_sync(zdo_dev_proxy, "mgmt_permit_join_req", - g_variant_new("(qyy)", addr16, duration, tc_significance), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status 0x%x", status); - } + g_dbus_proxy_call(zdo_dev_proxy, "mgmt_permit_join_req", + g_variant_new("(qyy)", addr16, duration, tc_significance), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_aps_send(gpointer p) @@ -3554,10 +3650,8 @@ int zbl_aps_send(nwk_addr addr16, unsigned char aps_frame_ctl, int sub_id, to, i; zbl_req_cb_s *container; - GVariant *variant = NULL; GVariantBuilder *payload_builder = NULL; GVariant *payload_variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == custom_gproxy, ZIGBEE_ERROR_IO_ERROR); @@ -3589,18 +3683,12 @@ int zbl_aps_send(nwk_addr addr16, unsigned char aps_frame_ctl, } payload_variant = g_variant_builder_end(payload_builder); - variant = g_dbus_proxy_call_sync(custom_gproxy, "aps_send", - g_variant_new("(qyyyqqyq@ay)", addr16, aps_frame_ctl, - src_ep, dst_ep, cluster_id, profile_id, zcl_frame_ctl, - mfg_code, payload_variant), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status 0x%x", status); - g_variant_unref(variant); - } + g_dbus_proxy_call(custom_gproxy, "aps_send", + g_variant_new("(qyyyqqyq@ay)", addr16, aps_frame_ctl, src_ep, dst_ep, cluster_id, + profile_id, zcl_frame_ctl, mfg_code, payload_variant), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_zcl_send(gpointer p) @@ -3674,10 +3762,8 @@ int zbl_zcl_send(nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, int sub_id, to, i; zbl_req_cb_s *container; - GVariant *variant = NULL; GVariantBuilder *payload_builder = NULL; GVariant *payload_variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == custom_gproxy, ZIGBEE_ERROR_IO_ERROR); @@ -3709,17 +3795,11 @@ int zbl_zcl_send(nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, } payload_variant = g_variant_builder_end(payload_builder); - variant = g_dbus_proxy_call_sync(custom_gproxy, "zcl_send", - g_variant_new("(qyyqyy@ay)", addr16, src_ep, dst_ep, - cluster_id, zcl_frame_ctl, cmd, payload_variant), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status 0x%x", status); - g_variant_unref(variant); - } + g_dbus_proxy_call(custom_gproxy, "zcl_send", + g_variant_new("(qyyqyy@ay)", addr16, src_ep, dst_ep, cluster_id, zcl_frame_ctl, + cmd, payload_variant), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_send_to_local(gpointer p) @@ -3784,10 +3864,8 @@ int zbl_send_to_local(unsigned short length, unsigned char *data, int sub_id, to, i; zbl_req_cb_s *container; - GVariant *variant = NULL; GVariantBuilder *payload_builder = NULL; GVariant *payload_variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == custom_gproxy, ZIGBEE_ERROR_IO_ERROR); @@ -3819,16 +3897,11 @@ int zbl_send_to_local(unsigned short length, unsigned char *data, } payload_variant = g_variant_builder_end(payload_builder); - variant = g_dbus_proxy_call_sync(custom_gproxy, "send_to_local", - g_variant_new("(@ay)", payload_variant), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status 0x%x", status); - g_variant_unref(variant); - } + g_dbus_proxy_call(custom_gproxy, "send_to_local", + g_variant_new("(@ay)", payload_variant), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_read_attributes_req(gpointer p) @@ -4088,7 +4161,6 @@ int zbl_write_attr_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, u { int sub_id, to; zbl_req_cb_s *container; - unsigned char status = ZIGBEE_ERROR_NONE; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC zb_event_global_default_rsp_s *global_req = NULL; #endif @@ -4098,7 +4170,6 @@ int zbl_write_attr_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, u DBG("zbl_write_attr_req()"); - GVariant *variant = NULL; GVariantBuilder *rec_builder = NULL; GVariant *rec_variant = NULL; @@ -4234,21 +4305,16 @@ int zbl_write_attr_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, u _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_req", + g_dbus_proxy_call(zcl_global_proxy, "write_attributes_req", g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("read_attr_req Status 0x%02X", status); - } + to, NULL, NULL, container); free(isString); free(dataSize); free(writeAttribute); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, @@ -4258,7 +4324,6 @@ int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ { int sub_id, to; zbl_req_cb_s *container; - unsigned char status = ZIGBEE_ERROR_NONE; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC zb_event_global_default_rsp_s *global_req = NULL; #endif @@ -4268,7 +4333,6 @@ int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ DBG("zbl_wattr_undivided_req()"); - GVariant *variant = NULL; GVariantBuilder *rec_builder = NULL; GVariant *rec_variant = NULL; @@ -4404,35 +4468,27 @@ int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_undivided_req", + g_dbus_proxy_call(zcl_global_proxy, "write_attributes_undivided_req", g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("read_attr_req Status 0x%02X", status); - } + to, NULL, NULL, container); free(isString); free(dataSize); free(writeAttribute); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_wattr_req_no_rsp(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_frame_ctl, unsigned short cluster_id, write_attr_record_h *records, int records_len) { - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_global_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_wattr_req_no_rsp()"); - GVariant *variant = NULL; GVariantBuilder *rec_builder = NULL; GVariant *rec_variant = NULL; @@ -4516,21 +4572,16 @@ int zbl_wattr_req_no_rsp(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, rec_variant = g_variant_builder_end(rec_builder); - g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_no_rep", + g_dbus_proxy_call(zcl_global_proxy, "write_attributes_no_rep", g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("write_attributes_no_rep Status 0x%02X", status); - } + -1, NULL, NULL, NULL); free(isString); free(dataSize); free(writeAttribute); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_configure_reporting(gpointer p) @@ -4637,8 +4688,7 @@ int zbl_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char src_ int j = 0; int len = 0; int count = 0; - unsigned char status = ZIGBEE_ERROR_NONE; - GVariant *variant = NULL; + GVariantBuilder *rec_builder = NULL; GVariant *rec_variant = NULL; @@ -4721,15 +4771,11 @@ int zbl_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char src_ } rec_variant = g_variant_builder_end(rec_builder); - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "configure_reporting_req", - g_variant_new("(@ayqqqyyy)", rec_variant, count, addr16, - cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_configure_reporting Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(zcl_global_proxy, "configure_reporting_req", + g_variant_new("(@ayqqqyyy)", rec_variant, count, addr16, cluster_id, + zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_read_configure_reporting(gpointer p) @@ -4876,9 +4922,7 @@ int zbl_read_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char int i = 0; int j = 0; int size_of_allo = 0; - unsigned short idx = ZIGBEE_ERROR_NONE; - unsigned char status = 0; - GVariant *variant = NULL; + unsigned short idx = 0; GVariantBuilder *rec_builder = NULL; GVariant *rec_variant = NULL; unsigned char *read_attributes; @@ -4968,18 +5012,13 @@ int zbl_read_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char rec_variant = g_variant_builder_end(rec_builder); - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "read_configure_reporting", - g_variant_new("(@ayqqqyyy)", rec_variant, idx, addr16, - cluster_id, zcl_frame_ctl, src_ep, dst_ep), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_read_configure_reporting Status = 0x%0.2X", status); - } + g_dbus_proxy_call(zcl_global_proxy, "read_configure_reporting", + g_variant_new("(@ayqqqyyy)", rec_variant, idx, addr16, cluster_id, zcl_frame_ctl, + src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); free(read_attributes); - return status; + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_discover_attributes_req(gpointer p) @@ -5137,21 +5176,21 @@ int zbl_discover_attr_req(zigbee_h handle, unsigned short addr16, unsigned char static gboolean _zbl_timeout_discover_cmds(gpointer p) { - zbl_req_cb_s *con = NULL; + zbl_req_cb_s *container = NULL; zb_zcl_global_discover_cmds_rsp cb = NULL; RETVM_IF(NULL == gdbus_conn, G_SOURCE_REMOVE, "gdbus_conn is NULL"); - con = p; - RETVM_IF(NULL == con, G_SOURCE_REMOVE, "cb_container is NULL"); - cb = con->cb; + container = p; + RETVM_IF(NULL == container, G_SOURCE_REMOVE, "cb_container is NULL"); + cb = container->cb; - if (false == con->found && con->cb) - cb(0, 0, 0, 0, NULL, 0, con->userdata); + if (false == container->found && container->cb) + cb(0, 0, 0, 0, NULL, 0, container->userdata); - con->tid = 0; + container->tid = 0; - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); - con->sid = 0; + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); + container->sid = 0; return G_SOURCE_REMOVE; } @@ -5161,10 +5200,10 @@ static void _zbl_discover_cmds_cb(GDBusConnection *connection, const gchar *signal_name, GVariant *parameters, gpointer user_data) { DBG("_zbl_discover_cmds_cb"); - zbl_req_cb_s *con = user_data; - RETM_IF(NULL == con, "cb_container is NULL"); + zbl_req_cb_s *container = user_data; + RETM_IF(NULL == container, "cb_container is NULL"); - zb_zcl_global_discover_cmds_rsp cb = con->cb; + zb_zcl_global_discover_cmds_rsp cb = container->cb; nwk_addr addr16; unsigned char ep; @@ -5188,14 +5227,14 @@ static void _zbl_discover_cmds_cb(GDBusConnection *connection, j++; } - con->found = true; + container->found = true; if (cb) - cb(addr16, ep, cluster_id, discoveryComplete, cmd_data, cmd_len, con->userdata); + cb(addr16, ep, cluster_id, discoveryComplete, cmd_data, cmd_len, container->userdata); free(cmd_data); - if (con->sid) - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); + if (container->sid) + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); } int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, @@ -5203,9 +5242,7 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep unsigned char max_command_ids, zb_zcl_global_discover_cmds_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; - unsigned char status = ZIGBEE_ERROR_NONE; - GVariant *variant = NULL; + zbl_req_cb_s *container; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC zb_event_global_default_rsp_s *global_req = NULL; #endif @@ -5215,32 +5252,32 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep DBG("zbl_discover_attr_gen()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_global_proxy); sub_id = g_dbus_connection_signal_subscribe(gdbus_conn, NULL, ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, "discover_commands_received_rsp", - ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_cmds_cb, con, + ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_cmds_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_cmds, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_cmds, container); + container->userdata = user_data; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC global_req = calloc(1, sizeof(zb_event_global_default_rsp_s)); if (NULL == global_req) { g_dbus_connection_signal_unsubscribe(gdbus_conn, sub_id); - g_source_remove(con->tid); - con->tid = 0; - free(con); + g_source_remove(container->tid); + container->tid = 0; + free(container); ERR("calloc() Fail(%d)", errno); return ZIGBEE_ERROR_OUT_OF_MEMORY; } @@ -5248,21 +5285,18 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep global_req->cluster_id = cluster_id; global_req->command_id = ZB_ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID; - con->global_cmd = global_req; - con->handle = handle; + container->global_cmd = global_req; + container->handle = handle; /* Register global request information into handle */ - _zbl_register_global_req(handle, con); + _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_commands_received", + g_dbus_proxy_call(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, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_discover_attr_gen Status = 0x%02X", status); - } - return status; + start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; } int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, @@ -5270,9 +5304,8 @@ int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_e unsigned char max_command_ids, zb_zcl_global_discover_cmds_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; - unsigned char status = ZIGBEE_ERROR_NONE; - GVariant *variant = NULL; + zbl_req_cb_s *container; + #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC zb_event_global_default_rsp_s *global_req = NULL; #endif @@ -5282,32 +5315,32 @@ int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_e DBG("zbl_discover_cmds_recv()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_global_proxy); sub_id = g_dbus_connection_signal_subscribe(gdbus_conn, NULL, ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, "discover_commands_received_rsp", - ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_cmds_cb, con, + ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_cmds_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_cmds, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_cmds, container); + container->userdata = user_data; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC global_req = calloc(1, sizeof(zb_event_global_default_rsp_s)); if (NULL == global_req) { g_dbus_connection_signal_unsubscribe(gdbus_conn, sub_id); - g_source_remove(con->tid); - con->tid = 0; - free(con); + g_source_remove(container->tid); + container->tid = 0; + free(container); ERR("calloc() Fail(%d)", errno); return ZIGBEE_ERROR_OUT_OF_MEMORY; } @@ -5315,40 +5348,37 @@ int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_e global_req->cluster_id = cluster_id; global_req->command_id = ZB_ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID; - con->global_cmd = global_req; - con->handle = handle; + container->global_cmd = global_req; + container->handle = handle; /* Register global request information into handle */ - _zbl_register_global_req(handle, con); + _zbl_register_global_req(handle, container); #endif - 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, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_discover_attr_gen Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(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, NULL, container); + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_discover_attr_ext(gpointer p) { - zbl_req_cb_s *con = NULL; + zbl_req_cb_s *container = NULL; zb_zcl_global_discover_attr_extended_rsp cb = NULL; RETVM_IF(NULL == gdbus_conn, G_SOURCE_REMOVE, "gdbus_conn is NULL"); - con = p; - RETVM_IF(NULL == con, G_SOURCE_REMOVE, "cb_container is NULL"); - cb = con->cb; + container = p; + RETVM_IF(NULL == container, G_SOURCE_REMOVE, "cb_container is NULL"); + cb = container->cb; - if (false == con->found && con->cb) - cb(0, 0, 0, 0, NULL, 0, con->userdata); + if (false == container->found && container->cb) + cb(0, 0, 0, 0, NULL, 0, container->userdata); - con->tid = 0; + container->tid = 0; - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); - con->sid = 0; + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); + container->sid = 0; return G_SOURCE_REMOVE; } @@ -5357,10 +5387,10 @@ static void _zbl_discover_attr_ext_cb(GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { - zbl_req_cb_s *con = user_data; - RETM_IF(NULL == con, "cb_container is NULL"); + zbl_req_cb_s *container = user_data; + RETM_IF(NULL == container, "cb_container is NULL"); - zb_zcl_global_discover_attr_extended_rsp cb = con->cb; + zb_zcl_global_discover_attr_extended_rsp cb = container->cb; nwk_addr addr16; unsigned char ep; @@ -5409,16 +5439,16 @@ static void _zbl_discover_attr_ext_cb(GDBusConnection *connection, j++; } - con->found = true; + container->found = true; if (cb) - cb(addr16, ep, cluster_id, discoveryComplete, records, rec_len, con->userdata); + cb(addr16, ep, cluster_id, discoveryComplete, records, rec_len, container->userdata); for (j = 0; j < rec_len; j++) free(records[j]); free(records); - if (con->sid) - g_dbus_connection_signal_unsubscribe(gdbus_conn, con->sid); + if (container->sid) + g_dbus_connection_signal_unsubscribe(gdbus_conn, container->sid); } int zbl_discover_attr_ext(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep, @@ -5427,9 +5457,8 @@ int zbl_discover_attr_ext(zigbee_h handle, nwk_addr addr16, unsigned char src_ep void *user_data) { int sub_id, to; - zbl_req_cb_s *con; - unsigned char status = ZIGBEE_ERROR_NONE; - GVariant *variant = NULL; + zbl_req_cb_s *container; + #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC zb_event_global_default_rsp_s *global_req = NULL; #endif @@ -5439,32 +5468,32 @@ int zbl_discover_attr_ext(zigbee_h handle, nwk_addr addr16, unsigned char src_ep DBG("zbl_discover_attr_ext()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_global_proxy); sub_id = g_dbus_connection_signal_subscribe(gdbus_conn, NULL, ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, "discover_attributes_extended_rsp", - ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_attr_ext_cb, con, + ZIGBEE_ZCL_GLOBAL_CONTROL_OBJECT_PATH, NULL, 0, _zbl_discover_attr_ext_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_attr_ext, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_discover_attr_ext, container); + container->userdata = user_data; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC global_req = calloc(1, sizeof(zb_event_global_default_rsp_s)); if (NULL == global_req) { g_dbus_connection_signal_unsubscribe(gdbus_conn, sub_id); - g_source_remove(con->tid); - con->tid = 0; - free(con); + g_source_remove(container->tid); + container->tid = 0; + free(container); ERR("calloc() Fail(%d)", errno); return ZIGBEE_ERROR_OUT_OF_MEMORY; } @@ -5472,59 +5501,43 @@ int zbl_discover_attr_ext(zigbee_h handle, nwk_addr addr16, unsigned char src_ep global_req->cluster_id = cluster_id; global_req->command_id = ZB_ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID; - con->global_cmd = global_req; - con->handle = handle; + container->global_cmd = global_req; + container->handle = handle; /* Register global request information into handle */ - _zbl_register_global_req(handle, con); + _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_attributes_extended", - g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, - cluster_id, start_id, max_attribute_ids), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_discover_attr_ext Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(zcl_global_proxy, "discover_attributes_extended", + g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, cluster_id, start_id, + max_attribute_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); + + return ZIGBEE_ERROR_NONE; } int zbl_reset_alarm(nwk_addr addr16, unsigned char ep, unsigned char alarm_code, unsigned short cluster_id) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == alarm_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(alarm_gproxy, "reset_alarm", - g_variant_new("(qyyq)", addr16, ep, alarm_code, cluster_id), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_alarm_reset_alarm Status %d", status); - } - return status; + g_dbus_proxy_call(alarm_gproxy, "reset_alarm", + g_variant_new("(qyyq)", addr16, ep, alarm_code, cluster_id), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } int zbl_reset_all_alarm(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == alarm_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(alarm_gproxy, "reset_all_alarm", - g_variant_new("(qy)", addr16, ep), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_alarm_reset_all_alarm Status %d", status); - } - return status; + g_dbus_proxy_call(alarm_gproxy, "reset_all_alarm", g_variant_new("(qy)", addr16, ep), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_get_alarm(gpointer p) @@ -5617,21 +5630,13 @@ int zbl_get_alarm(nwk_addr addr16, unsigned char ep, zb_zcl_alarm_get_alarm_rsp int zbl_reset_all_alarm_log(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == alarm_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(alarm_gproxy, "reset_all_alarm_log", - g_variant_new("(qy)", addr16, ep), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_reset_all_alarm_log Status %d", status); - } + g_dbus_proxy_call(alarm_gproxy, "reset_all_alarm_log", + g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_ccontrol_move_to_hue(nwk_addr addr16, unsigned char ep, @@ -5788,38 +5793,25 @@ int zbl_ccontrol_move_to_color_temperature(nwk_addr addr16, unsigned char ep, int zbl_reset_factory_default(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_basic_proxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(zcl_basic_proxy, "rest_factory_default", - g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_reset_factory_default Status %d", status); - } + g_dbus_proxy_call(zcl_basic_proxy, "rest_factory_default", + g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_identify(nwk_addr addr16, unsigned char dst_ep, unsigned short identify_time) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_identify_proxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(zcl_identify_proxy, "identify", - g_variant_new("(qyq)", addr16, dst_ep, identify_time), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zbl_reset_factory_default Status %d", status); - } - return status; + g_dbus_proxy_call(zcl_identify_proxy, "identify", + g_variant_new("(qyq)", addr16, dst_ep, identify_time), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_identify_query(gpointer p) @@ -5873,34 +5865,34 @@ int zbl_identify_query(nwk_addr addr16, unsigned char dst_ep, zb_zcl_identify_query_cb cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_identify_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_identify_query()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_identify_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_IDENTIFY_INTERFACE, "query_rsp", ZIGBEE_ZCL_IDENTIFY_OBJECT_PATH, - NULL, 0, _zbl_identify_query_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_identify_query_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_identify_query, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_identify_query, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_identify_proxy, "query", g_variant_new("(qy)", addr16, dst_ep), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -5958,7 +5950,7 @@ 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 sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; int j = 0; GVariant *groupname_variant = NULL; @@ -5969,24 +5961,24 @@ int zbl_add_group(nwk_addr addr16, unsigned char ep, unsigned short group_id, DBG("zbl_add_group()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_group_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_GROUP_INTERFACE, "add_group_rsp", ZIGBEE_ZCL_GROUP_OBJECT_PATH, - NULL, 0, _zbl_add_group_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_add_group_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_add_group, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_add_group, container); + container->userdata = user_data; groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); @@ -5998,7 +5990,7 @@ int zbl_add_group(nwk_addr addr16, unsigned char ep, unsigned short group_id, 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, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6092,34 +6084,35 @@ 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 sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_group_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_view_group()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_group_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_GROUP_INTERFACE, "view_group_rsp", ZIGBEE_ZCL_GROUP_OBJECT_PATH, - NULL, 0, _zbl_view_group_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_view_group_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_view_group, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_view_group, container); + container->userdata = user_data; - g_dbus_proxy_call(zcl_group_proxy, "view_group", g_variant_new("(qyq)", - addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + g_dbus_proxy_call(zcl_group_proxy, "view_group", + g_variant_new("(qyq)", addr16, ep, group_id), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6194,7 +6187,7 @@ int zbl_group_get_group_membership(nwk_addr addr16, unsigned char ep, zb_zcl_group_get_group_membership_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; int j = 0; GVariant *grouplist_variant = NULL; @@ -6205,25 +6198,25 @@ int zbl_group_get_group_membership(nwk_addr addr16, unsigned char ep, DBG("zbl_group_get_group_membership()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_group_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_GROUP_INTERFACE, "get_group_membership_rsp", ZIGBEE_ZCL_GROUP_OBJECT_PATH, NULL, 0, _zbl_group_get_group_membership_cb, - con, _zbl_request_cleanup); + container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_get_group_membership, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_get_group_membership, container); + container->userdata = user_data; grouplist_builder = g_variant_builder_new(G_VARIANT_TYPE("aq")); while (j < group_count) { @@ -6234,7 +6227,7 @@ int zbl_group_get_group_membership(nwk_addr addr16, unsigned char ep, g_dbus_proxy_call(zcl_group_proxy, "get_group_membership", g_variant_new("(qyy@aq)", addr16, ep, group_count, grouplist_variant), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6292,57 +6285,49 @@ 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 sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_group_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_group_remove_group()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_group_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_GROUP_INTERFACE, "remove_group_rsp", ZIGBEE_ZCL_GROUP_OBJECT_PATH, - NULL, 0, _zbl_remove_group_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_remove_group_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_group, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_group, 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, -1, NULL, NULL, NULL); + addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } int zbl_remove_all_group(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_group_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_group_remove_all_group()"); - variant = g_dbus_proxy_call_sync(zcl_group_proxy, "remove_all_group", - g_variant_new("(qy)", addr16, ep), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } + g_dbus_proxy_call(zcl_group_proxy, "remove_all_group", g_variant_new("(qy)", addr16, ep), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_add_group_if_identifying(nwk_addr addr16, unsigned char ep, @@ -6350,9 +6335,7 @@ int zbl_add_group_if_identifying(nwk_addr addr16, unsigned char ep, { int j = 0; GVariant *groupname_variant = NULL; - GVariant *variant = NULL; GVariantBuilder *groupname_builder = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_group_proxy, ZIGBEE_ERROR_IO_ERROR); @@ -6364,247 +6347,166 @@ int zbl_add_group_if_identifying(nwk_addr addr16, unsigned char ep, } groupname_variant = g_variant_builder_end(groupname_builder); - variant = g_dbus_proxy_call_sync(zcl_group_proxy, "add_group_if_identifying", + g_dbus_proxy_call(zcl_group_proxy, "add_group_if_identifying", g_variant_new("(qyq@ay)", addr16, ep, group_id, groupname_variant), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_move_to_level(nwk_addr addr16, unsigned char ep, unsigned char level, unsigned short transition_time) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_move_to_level()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "move_to_level", - g_variant_new("(qyyq)", addr16, ep, level, transition_time), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "move_to_level", + g_variant_new("(qyyq)", addr16, ep, level, transition_time), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_move(nwk_addr addr16, unsigned char ep, unsigned char move_mode, unsigned char rate) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_move()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "move", - g_variant_new("(qyyy)", addr16, ep, move_mode, rate), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "move", + g_variant_new("(qyyy)", addr16, ep, move_mode, rate), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_step(nwk_addr addr16, unsigned char ep, unsigned char step_mode, unsigned char step_size, unsigned short transition_time) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_step()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "step", - g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "step", + g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_stop(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_stop()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "stop", - g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "stop", + g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_move_to_level_with_on_off(nwk_addr addr16, unsigned char ep, unsigned char level, unsigned short transition_time) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_move_to_level_with_on_off()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "move_to_level_with_on_off", - g_variant_new("(qyyq)", addr16, ep, level, transition_time), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "move_to_level_with_on_off", + g_variant_new("(qyyq)", addr16, ep, level, transition_time), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_move_with_on_off(nwk_addr addr16, unsigned char ep, unsigned char move_mode, unsigned char rate) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_move_with_on_off()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "move_with_on_off", - g_variant_new("(qyyy)", addr16, ep, move_mode, rate), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "move_with_on_off", + g_variant_new("(qyyy)", addr16, ep, move_mode, rate), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_level_control_step_with_on_off(nwk_addr addr16, unsigned char ep, unsigned char step_mode, unsigned char step_size, unsigned short transition_time) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == level_control_gproxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_level_control_step_with_on_off()"); - variant = g_dbus_proxy_call_sync(level_control_gproxy, "step_with_on_off", - g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%x", status); - } + g_dbus_proxy_call(level_control_gproxy, "step_with_on_off", + g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_onoff_set(nwk_addr addr16, unsigned char ep, unsigned char on_off_type) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == on_off_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(on_off_gproxy, "set_on_off", - g_variant_new("(qyy)", addr16, ep, on_off_type), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("zigbee_set_on_off Status 0x%x", status); - } + g_dbus_proxy_call(on_off_gproxy, "set_on_off", + g_variant_new("(qyy)", addr16, ep, on_off_type), G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); - return status; + return ZIGBEE_ERROR_NONE; } int zbl_zone_enroll_response(nwk_addr addr16, unsigned char dst_ep, unsigned char enroll_response_code, unsigned char zone_id) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_ias_zone_proxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(zcl_ias_zone_proxy, "enroll_response", - g_variant_new("(qyyy)", addr16, dst_ep, enroll_response_code, - zone_id), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); + g_dbus_proxy_call(zcl_ias_zone_proxy, "enroll_response", + g_variant_new("(qyyy)", addr16, dst_ep, enroll_response_code, zone_id), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } - return status; + return ZIGBEE_ERROR_NONE; } int zbl_pollcontrol_check_in_response(nwk_addr addr16, unsigned char ep, unsigned char start_fast_polling, unsigned short fast_poll_timeout) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_poll_control_proxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(zcl_poll_control_proxy, "check_in_response", - g_variant_new("(qyyq)", addr16, ep, start_fast_polling, - fast_poll_timeout), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(zcl_poll_control_proxy, "check_in_response", + g_variant_new("(qyyq)", addr16, ep, start_fast_polling, fast_poll_timeout), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } int zbl_pollcontrol_fast_poll_stop(nwk_addr addr16, unsigned char ep) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_poll_control_proxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(zcl_poll_control_proxy, "fast_poll_stop", - g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(zcl_poll_control_proxy, "fast_poll_stop", + g_variant_new("(qy)", addr16, ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } static gboolean _zbl_timeout_set_long_poll_interval(gpointer p) @@ -6658,36 +6560,36 @@ int zbl_pollcontrol_set_long_poll_interval(nwk_addr addr16, unsigned char ep, unsigned int new_long_poll_interval, zb_zcl_pollctrl_check_in cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_poll_control_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_pollcontrol_set_long_poll_interval()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_poll_control_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_POLL_CONTROL_INTERFACE, "checkin_response", ZIGBEE_ZCL_POLL_CONTROL_OBJECT_PATH, NULL, 0, - _zbl_set_long_poll_interval_cb, con, _zbl_request_cleanup); + _zbl_set_long_poll_interval_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_set_long_poll_interval, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_set_long_poll_interval, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_poll_control_proxy, "set_long_poll_interval", g_variant_new("(qyu)", addr16, ep, new_long_poll_interval), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6696,36 +6598,36 @@ int zbl_pollcontrol_set_short_poll_interval(nwk_addr addr16, unsigned char ep, unsigned int new_short_poll_interval, zb_zcl_pollctrl_check_in cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_poll_control_proxy, ZIGBEE_ERROR_IO_ERROR); DBG("zbl_pollcontrol_set_short_poll_interval()"); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_poll_control_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_POLL_CONTROL_INTERFACE, "checkin_response", ZIGBEE_ZCL_POLL_CONTROL_OBJECT_PATH, NULL, 0, - _zbl_set_long_poll_interval_cb, con, _zbl_request_cleanup); + _zbl_set_long_poll_interval_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_set_long_poll_interval, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_set_long_poll_interval, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_poll_control_proxy, "set_short_poll_interval", g_variant_new("(qyu)", addr16, ep, new_short_poll_interval), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6786,7 +6688,7 @@ int zbl_add_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, zb_zcl_scene_add_scene_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; int j = 0; int index = 0; @@ -6800,24 +6702,24 @@ int zbl_add_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "add_scene_rsp", ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, - _zbl_add_scene_cb, con, _zbl_request_cleanup); + _zbl_add_scene_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_add_scene, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_add_scene, container); + container->userdata = user_data; scenename_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); while ('\0' != scene_name[j]) { @@ -6837,7 +6739,7 @@ int zbl_add_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, g_dbus_proxy_call(zcl_scene_proxy, "add_scene", g_variant_new("(qyqyqq@ay@ay)", addr16, ep, group_id, scene_id, transition_time, ext_field_len, scenename_variant, extensionfieldSet_variant), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL, NULL); + to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -6952,35 +6854,35 @@ int zbl_view_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, unsigned char scene_id, zb_zcl_scene_view_scene_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; DBG("zbl_scene_view_scene()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "view_scene_rsp", ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, - _zbl_view_scene_cb, con, _zbl_request_cleanup); + _zbl_view_scene_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_view_scene, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_view_scene, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_scene_proxy, "view_scene", g_variant_new("(qyqy)", addr16, ep, group_id, scene_id), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL, NULL); + to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -7040,37 +6942,35 @@ int zbl_remove_scene(nwk_addr addr16, unsigned char ep, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; DBG("zbl_scene_remove_scene()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "remove_scene_rsp", ZIGBEE_ZCL_SCENE_OBJECT_PATH, - NULL, 0, _zbl_remove_scene_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_remove_scene_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_scene, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_scene, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_scene_proxy, "remove_scene", - g_variant_new("(qyqy)", addr16, ep, group_id, scene_id), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL, NULL); - - DBG("zbl_scene_remove_scene() - 1"); + g_variant_new("(qyqy)", addr16, ep, group_id, scene_id), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -7128,36 +7028,36 @@ int zbl_remove_all_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, zb_zcl_scene_remove_all_scene_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; DBG("zbl_scene_remove_all_scene()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "remove_all_scene_rsp", - ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, _zbl_remove_all_scene_cb, con, + ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, _zbl_remove_all_scene_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_all_scene, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_remove_all_scene, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_scene_proxy, "remove_all_scene", - g_variant_new("(qyq)", addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL, NULL); + g_variant_new("(qyq)", addr16, ep, group_id), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -7216,35 +7116,35 @@ int zbl_store_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id, unsigned char scene_id, zb_zcl_scene_store_scene_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; DBG("zbl_scene_store_scene()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "store_scene_rsp", ZIGBEE_ZCL_SCENE_OBJECT_PATH, - NULL, 0, _zbl_scene_store_scene_cb, con, _zbl_request_cleanup); + NULL, 0, _zbl_scene_store_scene_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_scene_store_scene, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_scene_store_scene, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_scene_proxy, "store_scene", - g_variant_new("(qyqy)", addr16, ep, group_id, scene_id), G_DBUS_CALL_FLAGS_NONE, - -1, NULL, NULL, NULL); + g_variant_new("(qyqy)", addr16, ep, group_id, scene_id), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -7339,36 +7239,36 @@ int zbl_get_scene_membership(nwk_addr addr16, unsigned char ep, unsigned short group_id, zb_zcl_scene_get_scene_membership_rsp cb, void *user_data) { int sub_id, to; - zbl_req_cb_s *con; + zbl_req_cb_s *container; DBG("zbl_scene_get_scene_membership()"); RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == zcl_scene_proxy, ZIGBEE_ERROR_IO_ERROR); - con = calloc(1, sizeof(zbl_req_cb_s)); - RETVM_IF(NULL == con, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); + container = calloc(1, sizeof(zbl_req_cb_s)); + RETVM_IF(NULL == container, ZIGBEE_ERROR_OUT_OF_MEMORY, "calloc() Fail(%d)", errno); to = zbl_dbus_get_timeout(zcl_scene_proxy); sub_id = g_dbus_connection_signal_subscribe((GDBusConnection*)gdbus_conn, NULL, ZIGBEE_ZCL_SCENE_INTERFACE, "get_scene_membership_rsp", - ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, _zbl_get_scene_membership_cb, con, + ZIGBEE_ZCL_SCENE_OBJECT_PATH, NULL, 0, _zbl_get_scene_membership_cb, container, _zbl_request_cleanup); if (0 == sub_id) { ERR("g_dbus_connection_signal_subscribe() Fail"); - free(con); + free(container); return ZIGBEE_ERROR_IO_ERROR; } - con->cb = cb; - con->sid = sub_id; - con->tid = g_timeout_add_seconds(to, _zbl_timeout_get_scene_membership, con); - con->userdata = user_data; + container->cb = cb; + container->sid = sub_id; + container->tid = g_timeout_add_seconds(to, _zbl_timeout_get_scene_membership, container); + container->userdata = user_data; g_dbus_proxy_call(zcl_scene_proxy, "get_scene_membership", - g_variant_new("(qyq)", addr16, ep, group_id), G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, NULL); + g_variant_new("(qyq)", addr16, ep, group_id), + G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container); return ZIGBEE_ERROR_NONE; } @@ -7376,20 +7276,14 @@ int zbl_get_scene_membership(nwk_addr addr16, unsigned char ep, int zbl_thermostat_adjust_setpoint(nwk_addr addr16, unsigned char ep, unsigned char mode, unsigned char amount) { - GVariant *variant = NULL; - unsigned char status = ZIGBEE_ERROR_NONE; - RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR); RETV_IF(NULL == thermostat_gproxy, ZIGBEE_ERROR_IO_ERROR); - variant = g_dbus_proxy_call_sync(thermostat_gproxy, "setpoint_raise_lower", - g_variant_new("(qyyy)", addr16, ep, mode, amount), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); - if (variant) { - g_variant_get(variant, "(y)", &status); - DBG("Status = 0x%02X", status); - } - return status; + g_dbus_proxy_call(thermostat_gproxy, "setpoint_raise_lower", + g_variant_new("(qyyy)", addr16, ep, mode, amount), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); + + return ZIGBEE_ERROR_NONE; } int zbl_dbus_start(zigbee_h handle) @@ -7497,6 +7391,7 @@ int zbl_dbus_start(zigbee_h handle) g_dbus_proxy_set_default_timeout(G_DBUS_PROXY(custom_gproxy), ZIGBEE_BROADCAST_TIMEOUT); zbl_ref_count++; + return ZIGBEE_ERROR_NONE; } diff --git a/lib/zbl-dbus.h b/lib/zbl-dbus.h index 219d338..7c8b945 100644 --- a/lib/zbl-dbus.h +++ b/lib/zbl-dbus.h @@ -26,7 +26,8 @@ int zbl_dbus_start(zigbee_h handle); void zbl_dbus_stop(void); GDBusConnection* zbl_dbus_get_object(void); int zbl_dbus_get_timeout(GDBusProxy *proxy); -int zbl_enable(zigbee_h handle, zb_event_cb event_handler); +int zbl_enable(zigbee_h handle, zb_enable_cb cb, void *user_data); +int zbl_set_event_cb(zigbee_h handle, zb_event_cb event_handler); int zbl_disable(void); int zbl_hw_reset(void); int zbl_coex_start(unsigned char channel); @@ -35,8 +36,8 @@ int zbl_get_network_info(ieee_addr addr64, nwk_addr *nodeid, nwk_addr *panid, unsigned char *channel, unsigned char *tx_power); int zbl_get_controller_mac_address(ieee_addr addr64); int zbl_get_all_device_info(zb_end_device_info_h **dev_list, unsigned char* num); -int zbl_form_network(zigbee_h handle); -int zbl_disable_network(void); +int zbl_form_network(zigbee_h handle, zb_form_network_cb cb, void *user_data); +int zbl_disable_network(zigbee_h handle, zb_disable_network_cb cb, void *user_data); int zbl_leave_device(ieee_addr addr64, bool remove_children, bool rejoin); int zbl_permit_join(unsigned char duration, bool broadcast); int zbl_nwk_addr_req(zigbee_h handle, ieee_addr addr64, unsigned char request_type, diff --git a/lib/zbl.c b/lib/zbl.c index 2ebb24e..e056467 100644 --- a/lib/zbl.c +++ b/lib/zbl.c @@ -35,6 +35,9 @@ API int zb_create(zigbee_h *handle) #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); +#endif +#if !GLIB_CHECK_VERSION(2, 31, 0) + g_thread_init(NULL); #endif ret = zbl_dbus_start(*handle); DBG("zbl_dbus_start()=0x%X", ret); @@ -48,15 +51,24 @@ API void zb_destroy(zigbee_h handle) zbl_dbus_stop(); } -API int zb_enable(zigbee_h handle, zb_event_cb event_handler) +API int zb_enable(zigbee_h handle, zb_enable_cb cb, void *user_data) { int ret = ZIGBEE_ERROR_NONE; RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); - ret = zbl_enable(handle, event_handler); + ret = zbl_enable(handle, cb, user_data); DBG("zbl_enable()=0x%X", ret); return ret; } +API int zb_set_event_cb(zigbee_h handle, zb_event_cb event_handler) +{ + int ret = ZIGBEE_ERROR_NONE; + RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); + ret = zbl_set_event_cb(handle, event_handler); + DBG("zb_set_event_cb()=0x%X", ret); + return ret; +} + API int zb_disable(zigbee_h handle) { int ret = ZIGBEE_ERROR_NONE; @@ -93,20 +105,20 @@ API int zb_coex_stop(zigbee_h handle) return ret; } -API int zb_form_network(zigbee_h handle) +API int zb_form_network(zigbee_h handle, zb_form_network_cb cb, void *user_data) { int ret = ZIGBEE_ERROR_NONE; RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); - ret = zbl_form_network(handle); + ret = zbl_form_network(handle, cb, user_data); DBG("zbl_form_network()=0x%X", ret); return ret; } -API int zb_disable_network(zigbee_h handle) +API int zb_disable_network(zigbee_h handle, zb_disable_network_cb cb, void *user_data) { int ret = ZIGBEE_ERROR_NONE; RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER); - ret = zbl_disable_network(); + ret = zbl_disable_network(handle, cb, user_data); DBG("zb_disable_network()=0x%X", ret); return ret; } diff --git a/test/main.c b/test/main.c index 1e6c197..efd0b52 100644 --- a/test/main.c +++ b/test/main.c @@ -240,6 +240,21 @@ static void _init_endpoints() huebulb_ep1.out_clusters[0] = ZB_ZCL_OTA_BOOTLOAD_CLUSTER_ID; } +static void zigbee_enable_cb(unsigned char ret, void *user_data) +{ + msgp("enable result received = 0x%02X\n", ret); +} + +static void zigbee_form_network_done_cb(nwk_addr panid, void *user_data) +{ + msgp("form_network_done received PANID = 0x%04X\n", panid); +} + +static void zigbee_disable_network_done_cb(unsigned char ret, void *user_data) +{ + msgp("disable_network result received = 0x%02X\n", ret); +} + static void zigbee_event_cb(nwk_addr addr16, ieee_addr addr64, zb_event_e e, zb_event_data_s ev) { unsigned char status, count, ep, command_id; @@ -478,12 +493,18 @@ static int run_enable(MManager *mm, struct menu_data *menu) /* Register event callback */ int ret = ZIGBEE_ERROR_NONE; - ret = zb_enable(handle, zigbee_event_cb); + ret = zb_enable(handle, zigbee_enable_cb, NULL); if (ZIGBEE_ERROR_NONE != ret) { msg("zb_enable(0x%X) - FAILED!!!", ret); return RET_FAILURE; } + ret = zb_set_event_cb(handle, zigbee_event_cb); + if (ZIGBEE_ERROR_NONE != ret) { + msg("zb_set_event_cb(0x%X) - FAILED!!!", ret); + return RET_FAILURE; + } + msg(" - zb_enable() ret: [0x%X]", ret); return RET_SUCCESS; @@ -728,7 +749,7 @@ static int run_form_network(MManager *mm, struct menu_data *menu) { int ret = ZIGBEE_ERROR_NONE; - ret = zb_form_network(handle); + ret = zb_form_network(handle, zigbee_form_network_done_cb, NULL); if (ZIGBEE_ERROR_NONE != ret) { msg("zb_form_network(0x%X) - FAILED!!!", ret); return RET_FAILURE; @@ -743,7 +764,7 @@ static int run_disable_network(MManager *mm, struct menu_data *menu) { int ret = ZIGBEE_ERROR_NONE; - ret = zb_disable_network(handle); + ret = zb_disable_network(handle, zigbee_disable_network_done_cb, NULL); if (ZIGBEE_ERROR_NONE != ret) { msg("zb_disable_network(0x%X) - FAILED!!!", ret); return RET_FAILURE; @@ -889,13 +910,24 @@ static int __select_handle_register_event(MManager *mm, struct menu_data *menu) msg("zb_create(%d) - SUCCESS!!!. handle [%p]", ret, handle); } + ret = zb_enable(&handle, zigbee_event_cb, NULL); + if (ZIGBEE_ERROR_NONE != ret) { + msg("zb_enable(%d) - FAILED!!!.", ret); + return RET_FAILURE; + } else { + msg("zb_enable(%d) - SUCCESS!!!. handle [%p]", ret, handle); + } + + msg("zigbee_disable_network_done_cb = %x", zigbee_disable_network_done_cb); + + /* Register event callback */ - ret = zb_enable(handle, zigbee_event_cb); + ret = zb_set_event_cb(handle, zigbee_event_cb); if (ZIGBEE_ERROR_NONE != ret) { - msg("zb_enable(0x%X) - FAILED!!!", ret); + msg("zb_set_event_cb(0x%X) - FAILED!!!", ret); return RET_FAILURE; } - msg("zb_enable(%d) - SUCCESS!!!. handle [%p]", ret, handle); + msg("zb_set_event_cb(%d) - SUCCESS!!!. handle [%p]", ret, handle); menu_manager_set_user_data(mm, handle); @@ -922,6 +954,9 @@ int main(int arg, char **argv) #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); +#endif +#if !GLIB_CHECK_VERSION(2, 31, 0) + g_thread_init(NULL); #endif mainloop = g_main_loop_new(NULL, FALSE); diff --git a/test/test-zigbee.c b/test/test-zigbee.c index 0043a56..a76ca24 100644 --- a/test/test-zigbee.c +++ b/test/test-zigbee.c @@ -411,6 +411,21 @@ int is_digit(const char *str) return 0; } +static void zigbee_enable_cb(unsigned char ret, void *user_data) +{ + printf("enable result received = 0x%02X\n", ret); +} + +static void zigbee_form_network_done_cb(nwk_addr panid, void *user_data) +{ + printf("form_network_done received PANID = 0x%04X\n", panid); +} + +static void zigbee_disable_network_done_cb(unsigned char ret, void *user_data) +{ + printf("disable_network result received = 0x%02X\n", ret); +} + static void zigbee_event_cb(nwk_addr addr16, ieee_addr addr64, zb_event_e e, zb_event_data_s ev) { unsigned char status, count, ep, command_id; @@ -1557,7 +1572,8 @@ void process_input(const char *input, gpointer user_data) printf("zb_create ret=[0x%x]\n", (int)handle); break; case CMD_ENABLE: - ret = zb_enable(handle, zigbee_event_cb); + ret = zb_enable(handle, zigbee_enable_cb, NULL); + ret = zb_set_event_cb(handle, zigbee_event_cb); printf("zb_enable ret=[0x%x]\n", ret); break; case CMD_GET_NETWORK_INFO: @@ -1643,11 +1659,11 @@ void process_input(const char *input, gpointer user_data) printf("zb_coex_stop ret=[0x%x]\n", ret); break; case CMD_FORM_NETWORK: - ret = zb_form_network(handle); + ret = zb_form_network(handle, zigbee_form_network_done_cb, NULL); printf("zb_form_network ret=[0x%x]\n", ret); break; case CMD_DISABLE_NETWORK: - ret = zb_disable_network(handle); + ret = zb_disable_network(handle, zigbee_disable_network_done_cb, NULL); printf("zb_disable_network ret=[0x%x]\n", ret); break; case CMD_LEAVE_NODE: @@ -2311,9 +2327,12 @@ int main(int argc, char **argv) GMainLoop *main_loop; struct appdata *ad = NULL; -/*#if !GLIB_CHECK_VERSION(2, 36, 0)*/ +#if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); -/*#endif*/ +#endif +#if !GLIB_CHECK_VERSION(2, 31, 0) + g_thread_init(NULL); +#endif main_loop = g_main_loop_new(NULL, FALSE); ad = (struct appdata *)malloc(sizeof(struct appdata));