diff options
| -rw-r--r-- | src/modules/bluetooth/bluetooth-util.c | 12 | ||||
| -rw-r--r-- | src/modules/bluetooth/bluetooth-util.h | 14 | 
2 files changed, 26 insertions, 0 deletions
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c index 3d410c52..dfebf663 100644 --- a/src/modules/bluetooth/bluetooth-util.c +++ b/src/modules/bluetooth/bluetooth-util.c @@ -39,6 +39,9 @@ struct pa_bluetooth_discovery {      pa_hook hook;  }; +static void get_properties_reply(DBusPendingCall *pending, void *userdata); +static pa_dbus_pending* send_and_add_to_pending(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessage *m, DBusPendingCallNotifyFunction func); +  static pa_bluetooth_uuid *uuid_new(const char *uuid) {      pa_bluetooth_uuid *u; @@ -213,11 +216,20 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device                  while (dbus_message_iter_get_arg_type(&ai) != DBUS_TYPE_INVALID) {                      pa_bluetooth_uuid *node;                      const char *value; +                    DBusMessage *m;                      dbus_message_iter_get_basic(&ai, &value);                      node = uuid_new(value);                      PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node); +                    if (strcasecmp(HSP_HS_UUID, value) == 0 || strcasecmp(HFP_HS_UUID, value) == 0) { +                        pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Headset", "GetProperties")); +                        send_and_add_to_pending(y, d, m, get_properties_reply); +                    } else if (strcasecmp(A2DP_SINK_UUID, value) == 0) { +                        pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSink", "GetProperties")); +                        send_and_add_to_pending(y, d, m, get_properties_reply); +                    } +                      if (!dbus_message_iter_next(&ai))                          break;                  } diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h index 1d05e63c..57f11725 100644 --- a/src/modules/bluetooth/bluetooth-util.h +++ b/src/modules/bluetooth/bluetooth-util.h @@ -28,6 +28,20 @@  #include <pulsecore/macro.h>  #include <pulsecore/core-util.h> +/* UUID copied from bluez/audio/device.h */ +#define GENERIC_AUDIO_UUID      "00001203-0000-1000-8000-00805F9B34FB" + +#define HSP_HS_UUID             "00001108-0000-1000-8000-00805F9B34FB" +#define HSP_AG_UUID             "00001112-0000-1000-8000-00805F9B34FB" + +#define HFP_HS_UUID             "0000111E-0000-1000-8000-00805F9B34FB" +#define HFP_AG_UUID             "0000111F-0000-1000-8000-00805F9B34FB" + +#define ADVANCED_AUDIO_UUID     "0000110D-0000-1000-8000-00805F9B34FB" + +#define A2DP_SOURCE_UUID        "0000110A-0000-1000-8000-00805F9B34FB" +#define A2DP_SINK_UUID          "0000110B-0000-1000-8000-00805F9B34FB" +  typedef struct pa_bluetooth_uuid pa_bluetooth_uuid;  typedef struct pa_bluetooth_device pa_bluetooth_device;  typedef struct pa_bluetooth_discovery pa_bluetooth_discovery;  | 
