CAPI/Adapter: Add set/unset adapter name changed callback 89/18389/1
authorWu Jiangbo <jiangbox.wu@intel.com>
Fri, 21 Mar 2014 10:21:47 +0000 (18:21 +0800)
committerWu Jiangbo <jiangbox.wu@intel.com>
Fri, 21 Mar 2014 10:21:47 +0000 (18:21 +0800)
Change-Id: Icf52a5f180706cc90c44caf85cde2a9c788bbc35
Signed-off-by: Wu Jiangbo <jiangbox.wu@intel.com>
capi/bluetooth.c
lib/bluez.c
test/bluez-capi-test.c

index a737f13..f9b6c6a 100644 (file)
@@ -618,8 +618,6 @@ void adapter_name_changed(bluez_adapter_t *adapter,
                        (struct adapter_name_cb_node *)user_data;
        gchar *adapter_name = g_strdup(name);
 
-       DBG("Name: %s", name);
-
        data->cb(adapter_name, data->user_data);
 
        g_free(adapter_name);
@@ -899,6 +897,27 @@ int bt_adapter_set_name_changed_cb(bt_adapter_name_changed_cb callback,
        return BT_SUCCESS;
 }
 
+int bt_adapter_unset_name_changed_cb(void)
+{
+       DBG("");
+
+       if (initialized == false)
+               return BT_ERROR_NOT_INITIALIZED;
+
+       if (default_adapter == NULL)
+               return BT_ERROR_ADAPTER_NOT_FOUND;
+
+       if (!adapter_name_node)
+               return BT_SUCCESS;
+
+       bluez_adapter_unset_alias_changed_cb(default_adapter);
+
+       g_free(adapter_name_node);
+       adapter_name_node = NULL;
+
+       return BT_SUCCESS;
+}
+
 int bt_adapter_get_visibility(bt_adapter_visibility_mode_e *mode,
                                int *duration)
 {
index dd4292e..4be3b34 100644 (file)
@@ -227,15 +227,17 @@ static void handle_adapter_powered_changed(GVariant *changed_properties,
 static void handle_adapter_alias_changed(GVariant *changed_properties,
                                                struct _bluez_adapter *adapter)
 {
-       const gchar *alias = NULL;
+       gchar *alias = NULL;
        gboolean variant_found = g_variant_lookup(changed_properties,
-                                                       "Alias", "s", alias);
+                                                       "Alias", "s", &alias);
        if (!variant_found)
                return;
 
        adapter->alias_cb(adapter,
                        alias,
                        adapter->alias_cb_data);
+
+       g_free(alias);
 }
 
 static void handle_adapter_discovering_changed(GVariant *changed_properties,
index 4452396..3083d71 100644 (file)
@@ -187,6 +187,37 @@ static int set_adapter_name(const char *p1, const char *p2)
        return 0;
 }
 
+static void adapter_name_changed(char *device_name, void *user_data)
+{
+       DBG("device name changed: %s", device_name);
+}
+
+static int set_adapter_name_callback(const char *p1, const char *p2)
+{
+       int err;
+
+       err = bt_adapter_set_name_changed_cb(adapter_name_changed, NULL);
+       if (err != BT_SUCCESS) {
+               ERROR("bt_adapter_set_name_changed_cb error: %d", err);
+               return 0;
+       }
+
+       return 0;
+}
+
+static int unset_adapter_name_callback(const char *p1, const char *p2)
+{
+       int err;
+
+       err = bt_adapter_unset_name_changed_cb();
+       if (err != BT_SUCCESS) {
+               ERROR("bt_adapter_unset_name_changed_cb error: %d", err);
+               return 0;
+       }
+
+       return 0;
+}
+
 static int set_adapter_visibility(const char *p1, const char *p2)
 {
        bt_adapter_visibility_mode_e mode;
@@ -1346,6 +1377,12 @@ struct {
        {"set_adapter_name", set_adapter_name,
                "Usage: set_adapter_name\n\tSet local adapter name"},
 
+       {"set_adapter_name_callback", set_adapter_name_callback,
+               "Usage: set_adapter_name_callback\n\tSet adapter changed callback"},
+
+       {"unset_adapter_name_callback", unset_adapter_name_callback,
+               "Usage: unset_adapter_name_callback\n\tUnset adapter changed callback"},
+
        {"set_adapter_visibility", set_adapter_visibility,
                "Usage: set_adapter_visibility 1 <1-3, No, Limit, Discoverable> duration\n\tSet adapter visibility"},