bluetooth: Add hook to announce late UUIDs

UUIDs might be announced at any time, so a hook is needed to notify any
interested module. In practice, the UUIDs are quite stable with the
exception of the pairing procedure, where the UUIDs are reported by
BlueZ as soon as they are discovered.
This commit is contained in:
Mikel Astiz 2012-10-23 16:41:59 +02:00 committed by Tanu Kaskinen
parent a9c3f2fb0f
commit d0be10191e
2 changed files with 9 additions and 0 deletions

View file

@ -383,9 +383,17 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
const char *value; const char *value;
dbus_message_iter_get_basic(&ai, &value); dbus_message_iter_get_basic(&ai, &value);
if (pa_bluetooth_uuid_has(d->uuids, value)) {
dbus_message_iter_next(&ai);
continue;
}
node = uuid_new(value); node = uuid_new(value);
PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node); PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node);
pa_hook_fire(&d->hooks[PA_BLUETOOTH_DEVICE_HOOK_UUID_ADDED], (char *) value);
/* Vudentz said the interfaces are here when the UUIDs are announced */ /* Vudentz said the interfaces are here when the UUIDs are announced */
if (strcasecmp(HSP_AG_UUID, value) == 0 || strcasecmp(HFP_AG_UUID, value) == 0) { if (strcasecmp(HSP_AG_UUID, value) == 0 || strcasecmp(HFP_AG_UUID, value) == 0) {
pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.HandsfreeGateway", "GetProperties")); pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.HandsfreeGateway", "GetProperties"));

View file

@ -94,6 +94,7 @@ typedef enum pa_bt_audio_state {
/* Hook data: pa_bluetooth_device pointer. */ /* Hook data: pa_bluetooth_device pointer. */
typedef enum pa_bluetooth_device_hook { typedef enum pa_bluetooth_device_hook {
PA_BLUETOOTH_DEVICE_HOOK_REMOVED, /* Call data: NULL. */ PA_BLUETOOTH_DEVICE_HOOK_REMOVED, /* Call data: NULL. */
PA_BLUETOOTH_DEVICE_HOOK_UUID_ADDED, /* Call data: const char *uuid. */
PA_BLUETOOTH_DEVICE_HOOK_MAX PA_BLUETOOTH_DEVICE_HOOK_MAX
} pa_bluetooth_device_hook_t; } pa_bluetooth_device_hook_t;