diff options
author | Luiz Augusto von Dentz <luiz.dentz@indt.org.br> | 2008-09-03 19:31:10 -0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@indt.org.br> | 2008-09-04 10:05:58 -0300 |
commit | 531fe8fae7f46a86ec850748ffd44ffa754014bd (patch) | |
tree | f69173c150ad7e061b0477bdea5a283f1865254c /src | |
parent | 01761bea1ce6539b97640123660c67d81c54318b (diff) |
Rename DiscoverDevices to StartDiscovery, CancelDiscovery to StopDiscovery and fix logic around Discovering property to reflect when the base band is busy.
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 17 | ||||
-rw-r--r-- | src/dbus-hci.c | 27 |
2 files changed, 24 insertions, 20 deletions
diff --git a/src/adapter.c b/src/adapter.c index 36cac369..4f30bbfb 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1413,7 +1413,7 @@ static int start_periodic_inquiry(struct btd_adapter *adapter) return 0; } -static DBusMessage *adapter_discover_devices(DBusConnection *conn, +static DBusMessage *adapter_start_discovery(DBusConnection *conn, DBusMessage *msg, void *data) { struct session_req *req; @@ -1450,7 +1450,7 @@ done: return dbus_message_new_method_return(msg); } -static DBusMessage *adapter_cancel_discovery(DBusConnection *conn, +static DBusMessage *adapter_stop_discovery(DBusConnection *conn, DBusMessage *msg, void *data) { struct btd_adapter *adapter = data; @@ -1973,8 +1973,8 @@ static GDBusMethodTable adapter_methods[] = { { "RequestMode", "s", "", request_mode, G_DBUS_METHOD_FLAG_ASYNC}, { "ReleaseMode", "", "", release_mode }, - { "DiscoverDevices", "", "", adapter_discover_devices}, - { "CancelDiscovery", "", "", adapter_cancel_discovery, + { "StartDiscovery", "", "", adapter_start_discovery }, + { "StopDiscovery", "", "", adapter_stop_discovery, G_DBUS_METHOD_FLAG_ASYNC}, { "ListDevices", "", "ao", list_devices }, { "CreateDevice", "s", "o", create_device, @@ -2777,15 +2777,11 @@ void adapter_set_state(struct btd_adapter *adapter, int state) if (adapter->state == state) return; - if (state & PERIODIC_INQUIRY || state & STD_INQUIRY) { + if (state & PERIODIC_INQUIRY || state & STD_INQUIRY) discov_active = TRUE; - if (adapter->scheduler_id) - goto done; - } else if (adapter->disc_sessions && adapter->state & STD_INQUIRY) { + else if (adapter->disc_sessions && main_opts.inqmode) adapter->scheduler_id = g_timeout_add(main_opts.inqmode * 1000, (GSourceFunc) start_inquiry, adapter); - goto done; - } if (!discov_active && adapter->found_devices) { g_slist_foreach(adapter->found_devices, (GFunc) g_free, NULL); @@ -2803,7 +2799,6 @@ void adapter_set_state(struct btd_adapter *adapter, int state) ADAPTER_INTERFACE, "Discovering", DBUS_TYPE_BOOLEAN, &discov_active); -done: adapter->state = state; } diff --git a/src/dbus-hci.c b/src/dbus-hci.c index 3776456c..f04694d4 100644 --- a/src/dbus-hci.c +++ b/src/dbus-hci.c @@ -714,12 +714,6 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local) !(adapter_get_state(adapter) & STD_INQUIRY)) adapter_update_oor_devices(adapter); - /* reset the discover type to be able to handle D-Bus and non D-Bus - * requests */ - state = adapter_get_state(adapter); - state &= ~STD_INQUIRY; - adapter_set_state(adapter, state); - /* * The following scenarios can happen: * 1. standard inquiry: always send discovery completed signal @@ -731,7 +725,15 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local) * * Keep in mind that non D-Bus requests can arrive. */ - found_device_req_name(adapter); + if (found_device_req_name(adapter) == 0) + return; + + /* reset the discover type to be able to handle D-Bus and non D-Bus + * requests */ + state = adapter_get_state(adapter); + state &= ~STD_INQUIRY; + state &= ~PERIODIC_INQUIRY; + adapter_set_state(adapter, state); } void hcid_dbus_periodic_inquiry_start(bdaddr_t *local, uint8_t status) @@ -884,7 +886,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, state |= PERIODIC_INQUIRY; adapter_set_state(adapter, state); } - /* Out of range list update */ + /* Out of range list update */ if (adapter_get_state(adapter) & PERIODIC_INQUIRY) adapter_remove_oor_device(adapter, peer_addr); @@ -989,6 +991,7 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, uint8_t status, char peer_addr[18]; const char *paddr = peer_addr; const gchar *dev_path; + int state; adapter = manager_find_adapter(local); if (!adapter) { @@ -1016,7 +1019,13 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, uint8_t status, adapter_remove_found_device(adapter, peer); /* check if there is more devices to request names */ - found_device_req_name(adapter); + if (found_device_req_name(adapter) == 0) + return; + + state = adapter_get_state(adapter); + state &= ~PERIODIC_INQUIRY; + state &= ~STD_INQUIRY; + adapter_set_state(adapter, state); } void hcid_dbus_conn_complete(bdaddr_t *local, uint8_t status, uint16_t handle, |