* [PATCH 1/5] bluetooth: move find_adapter_cb to better place. @ 2011-02-17 22:00 Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Gustavo F. Padovan 2011-02-18 0:00 ` [PATCH 1/5] bluetooth: move find_adapter_cb to better place Marcel Holtmann 0 siblings, 2 replies; 10+ messages in thread From: Gustavo F. Padovan @ 2011-02-17 22:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2085 bytes --] --- plugins/bluetooth.c | 52 +++++++++++++++++++++++++------------------------- 1 files changed, 26 insertions(+), 26 deletions(-) diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 175ebaa..32be96e 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -633,6 +633,32 @@ static void add_record(gpointer data, gpointer user_data) DBUS_TYPE_INVALID); } +static void find_adapter_cb(DBusPendingCall *call, gpointer user_data) +{ + DBusMessage *reply = dbus_pending_call_steal_reply(call); + DBusError derr; + const char *path; + + dbus_error_init(&derr); + + if (dbus_set_error_from_message(&derr, reply)) { + ofono_error("Replied with an error: %s, %s", + derr.name, derr.message); + dbus_error_free(&derr); + goto done; + } + + dbus_message_get_args(reply, NULL, DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + + adapter_any_path = g_strdup(path); + + g_slist_foreach(server_list, (GFunc) add_record, NULL); + +done: + dbus_message_unref(reply); +} + static gboolean adapter_added(DBusConnection *connection, DBusMessage *message, void *user_data) { @@ -724,32 +750,6 @@ static void bluetooth_disconnect(DBusConnection *connection, void *user_data) g_hash_table_foreach(uuid_hash, bluetooth_remove_all_modem, NULL); } -static void find_adapter_cb(DBusPendingCall *call, gpointer user_data) -{ - DBusMessage *reply = dbus_pending_call_steal_reply(call); - DBusError derr; - const char *path; - - dbus_error_init(&derr); - - if (dbus_set_error_from_message(&derr, reply)) { - ofono_error("Replied with an error: %s, %s", - derr.name, derr.message); - dbus_error_free(&derr); - goto done; - } - - dbus_message_get_args(reply, NULL, DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_INVALID); - - adapter_any_path = g_strdup(path); - - g_slist_foreach(server_list, (GFunc) add_record, NULL); - -done: - dbus_message_unref(reply); -} - static guint bluetooth_watch; static guint adapter_added_watch; static guint adapter_removed_watch; -- 1.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/5] bluetooth: add a bluetoothd connect watch 2011-02-17 22:00 [PATCH 1/5] bluetooth: move find_adapter_cb to better place Gustavo F. Padovan @ 2011-02-17 22:00 ` Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 3/5] bluetooth: change how we report DBus errors Gustavo F. Padovan 2011-02-18 0:01 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Marcel Holtmann 2011-02-18 0:00 ` [PATCH 1/5] bluetooth: move find_adapter_cb to better place Marcel Holtmann 1 sibling, 2 replies; 10+ messages in thread From: Gustavo F. Padovan @ 2011-02-17 22:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1946 bytes --] This fix a issue with sending DBus messages when bluetoothd is not up yet. --- plugins/bluetooth.c | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 32be96e..8ca9f5f 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -742,6 +742,18 @@ static void bluetooth_remove_all_modem(gpointer key, gpointer value, profile->remove_all(); } +static void bluetooth_connect(DBusConnection *connection, void *user_data) +{ + bluetooth_send_with_reply("/", BLUEZ_MANAGER_INTERFACE, "GetProperties", + manager_properties_cb, NULL, NULL, -1, + DBUS_TYPE_INVALID); + + bluetooth_send_with_reply("/", BLUEZ_MANAGER_INTERFACE, "FindAdapter", + find_adapter_cb, NULL, NULL, -1, + DBUS_TYPE_STRING, &adapter_any_name, + DBUS_TYPE_INVALID); +} + static void bluetooth_disconnect(DBusConnection *connection, void *user_data) { if (uuid_hash == NULL) @@ -763,7 +775,8 @@ static void bluetooth_ref(void) connection = ofono_dbus_get_connection(); bluetooth_watch = g_dbus_add_service_watch(connection, BLUEZ_SERVICE, - NULL, bluetooth_disconnect, NULL, NULL); + bluetooth_connect, + bluetooth_disconnect, NULL, NULL); adapter_added_watch = g_dbus_add_signal_watch(connection, NULL, NULL, BLUEZ_MANAGER_INTERFACE, @@ -791,15 +804,6 @@ static void bluetooth_ref(void) adapter_address_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); - bluetooth_send_with_reply("/", BLUEZ_MANAGER_INTERFACE, "GetProperties", - manager_properties_cb, NULL, NULL, -1, - DBUS_TYPE_INVALID); - - bluetooth_send_with_reply("/", BLUEZ_MANAGER_INTERFACE, "FindAdapter", - find_adapter_cb, NULL, NULL, -1, - DBUS_TYPE_STRING, &adapter_any_name, - DBUS_TYPE_INVALID); - increment: g_atomic_int_inc(&bluetooth_refcount); -- 1.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/5] bluetooth: change how we report DBus errors 2011-02-17 22:00 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Gustavo F. Padovan @ 2011-02-17 22:00 ` Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 4/5] bluetooth: fix crash by removing record Gustavo F. Padovan 2011-02-18 0:03 ` [PATCH 3/5] bluetooth: change how we report DBus errors Marcel Holtmann 2011-02-18 0:01 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Marcel Holtmann 1 sibling, 2 replies; 10+ messages in thread From: Gustavo F. Padovan @ 2011-02-17 22:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2456 bytes --] --- plugins/bluetooth.c | 33 ++++++++++++++++++++------------- 1 files changed, 20 insertions(+), 13 deletions(-) diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 8ca9f5f..161ae4b 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -267,19 +267,16 @@ static void device_properties_cb(DBusPendingCall *call, gpointer user_data) const char *device_addr = NULL; const char *alias = NULL; struct bluetooth_profile *profile; + struct DBusError derr; reply = dbus_pending_call_steal_reply(call); - if (dbus_message_is_error(reply, DBUS_ERROR_SERVICE_UNKNOWN)) { - DBG("Bluetooth daemon is apparently not available."); - goto done; - } - - if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) { - if (!dbus_message_is_error(reply, DBUS_ERROR_UNKNOWN_METHOD)) - ofono_info("Error from GetProperties reply: %s", - dbus_message_get_error_name(reply)); + dbus_error_init(&derr); + if (dbus_set_error_from_message(&derr, reply)) { + ofono_error("Device.GetProperties replied an error: %s, %s", + derr.name, derr.message); + dbus_error_free(&derr); goto done; } @@ -397,14 +394,19 @@ static void adapter_properties_cb(DBusPendingCall *call, gpointer user_data) { const char *path = user_data; DBusMessage *reply; + DBusError derr; GSList *device_list = NULL; GSList *l; const char *addr; reply = dbus_pending_call_steal_reply(call); - if (dbus_message_is_error(reply, DBUS_ERROR_SERVICE_UNKNOWN)) { - DBG("Bluetooth daemon is apparently not available."); + dbus_error_init(&derr); + + if (dbus_set_error_from_message(&derr, reply)) { + ofono_error("Adapter.GetProperties replied an error: %s, %s", + derr.name, derr.message); + dbus_error_free(&derr); goto done; } @@ -717,11 +719,16 @@ static void parse_adapters(DBusMessageIter *array, gpointer user_data) static void manager_properties_cb(DBusPendingCall *call, gpointer user_data) { DBusMessage *reply; + DBusError derr; reply = dbus_pending_call_steal_reply(call); - if (dbus_message_is_error(reply, DBUS_ERROR_SERVICE_UNKNOWN)) { - DBG("Bluetooth daemon is apparently not available."); + dbus_error_init(&derr); + + if (dbus_set_error_from_message(&derr, reply)) { + ofono_error("Manager.GetProperties() replied an error: %s, %s", + derr.name, derr.message); + dbus_error_free(&derr); goto done; } -- 1.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] bluetooth: fix crash by removing record 2011-02-17 22:00 ` [PATCH 3/5] bluetooth: change how we report DBus errors Gustavo F. Padovan @ 2011-02-17 22:00 ` Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 5/5] bluetooth: add DBG() messages Gustavo F. Padovan 2011-02-18 0:03 ` [PATCH 4/5] bluetooth: fix crash by removing record Marcel Holtmann 2011-02-18 0:03 ` [PATCH 3/5] bluetooth: change how we report DBus errors Marcel Holtmann 1 sibling, 2 replies; 10+ messages in thread From: Gustavo F. Padovan @ 2011-02-17 22:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1259 bytes --] When bluetoothd is not running we should not call RemoveRecord() --- plugins/bluetooth.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 161ae4b..5f2d80d 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -445,6 +445,9 @@ static void remove_record(struct server *server) { DBusMessage *msg; + if (server->handle == 0) + return; + msg = dbus_message_new_method_call(BLUEZ_SERVICE, adapter_any_path, BLUEZ_SERVICE_INTERFACE, "RemoveRecord"); @@ -596,6 +599,13 @@ static void new_connection(GIOChannel *io, gpointer user_data) client_event, cbd); } +static void remove_service_handle(gpointer data, gpointer user_data) +{ + struct server *server = data; + + server->handle = 0; +} + static void add_record_cb(DBusPendingCall *call, gpointer user_data) { struct server *server = user_data; @@ -767,6 +777,8 @@ static void bluetooth_disconnect(DBusConnection *connection, void *user_data) return; g_hash_table_foreach(uuid_hash, bluetooth_remove_all_modem, NULL); + + g_slist_foreach(server_list, (GFunc) remove_service_handle, NULL); } static guint bluetooth_watch; -- 1.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/5] bluetooth: add DBG() messages 2011-02-17 22:00 ` [PATCH 4/5] bluetooth: fix crash by removing record Gustavo F. Padovan @ 2011-02-17 22:00 ` Gustavo F. Padovan 2011-02-18 0:03 ` Marcel Holtmann 2011-02-18 0:03 ` [PATCH 4/5] bluetooth: fix crash by removing record Marcel Holtmann 1 sibling, 1 reply; 10+ messages in thread From: Gustavo F. Padovan @ 2011-02-17 22:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 795 bytes --] --- plugins/bluetooth.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 5f2d80d..7c2d5b0 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -280,6 +280,8 @@ static void device_properties_cb(DBusPendingCall *call, gpointer user_data) goto done; } + DBG(""); + bluetooth_parse_properties(reply, "UUIDs", has_uuid, &have_uuid, "Adapter", parse_string, &adapter, "Address", parse_string, &device_addr, @@ -410,6 +412,8 @@ static void adapter_properties_cb(DBusPendingCall *call, gpointer user_data) goto done; } + DBG(""); + bluetooth_parse_properties(reply, "Devices", parse_devices, &device_list, "Address", parse_string, &addr, -- 1.7.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 5/5] bluetooth: add DBG() messages 2011-02-17 22:00 ` [PATCH 5/5] bluetooth: add DBG() messages Gustavo F. Padovan @ 2011-02-18 0:03 ` Marcel Holtmann 0 siblings, 0 replies; 10+ messages in thread From: Marcel Holtmann @ 2011-02-18 0:03 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 156 bytes --] Hi Gustavo, > plugins/bluetooth.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) patch has been applied. Regards Marcel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] bluetooth: fix crash by removing record 2011-02-17 22:00 ` [PATCH 4/5] bluetooth: fix crash by removing record Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 5/5] bluetooth: add DBG() messages Gustavo F. Padovan @ 2011-02-18 0:03 ` Marcel Holtmann 1 sibling, 0 replies; 10+ messages in thread From: Marcel Holtmann @ 2011-02-18 0:03 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 240 bytes --] Hi Gustavo, > When bluetoothd is not running we should not call RemoveRecord() > --- > plugins/bluetooth.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) patch has been applied. Regards Marcel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/5] bluetooth: change how we report DBus errors 2011-02-17 22:00 ` [PATCH 3/5] bluetooth: change how we report DBus errors Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 4/5] bluetooth: fix crash by removing record Gustavo F. Padovan @ 2011-02-18 0:03 ` Marcel Holtmann 1 sibling, 0 replies; 10+ messages in thread From: Marcel Holtmann @ 2011-02-18 0:03 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 187 bytes --] Hi Gustavo, > plugins/bluetooth.c | 33 ++++++++++++++++++++------------- > 1 files changed, 20 insertions(+), 13 deletions(-) patch has been applied. Regards Marcel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/5] bluetooth: add a bluetoothd connect watch 2011-02-17 22:00 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 3/5] bluetooth: change how we report DBus errors Gustavo F. Padovan @ 2011-02-18 0:01 ` Marcel Holtmann 1 sibling, 0 replies; 10+ messages in thread From: Marcel Holtmann @ 2011-02-18 0:01 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 263 bytes --] Hi Gustavo, > This fix a issue with sending DBus messages when bluetoothd is not up yet. > --- > plugins/bluetooth.c | 24 ++++++++++++++---------- > 1 files changed, 14 insertions(+), 10 deletions(-) patch has been applied. Regards Marcel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/5] bluetooth: move find_adapter_cb to better place. 2011-02-17 22:00 [PATCH 1/5] bluetooth: move find_adapter_cb to better place Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Gustavo F. Padovan @ 2011-02-18 0:00 ` Marcel Holtmann 1 sibling, 0 replies; 10+ messages in thread From: Marcel Holtmann @ 2011-02-18 0:00 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 204 bytes --] Hi Gustavo, > plugins/bluetooth.c | 52 +++++++++++++++++++++++++------------------------- > 1 files changed, 26 insertions(+), 26 deletions(-) patch has been applied. Regards Marcel ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-02-18 0:03 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-02-17 22:00 [PATCH 1/5] bluetooth: move find_adapter_cb to better place Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 3/5] bluetooth: change how we report DBus errors Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 4/5] bluetooth: fix crash by removing record Gustavo F. Padovan 2011-02-17 22:00 ` [PATCH 5/5] bluetooth: add DBG() messages Gustavo F. Padovan 2011-02-18 0:03 ` Marcel Holtmann 2011-02-18 0:03 ` [PATCH 4/5] bluetooth: fix crash by removing record Marcel Holtmann 2011-02-18 0:03 ` [PATCH 3/5] bluetooth: change how we report DBus errors Marcel Holtmann 2011-02-18 0:01 ` [PATCH 2/5] bluetooth: add a bluetoothd connect watch Marcel Holtmann 2011-02-18 0:00 ` [PATCH 1/5] bluetooth: move find_adapter_cb to better place Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox