mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	bluetooth: GetProperties after profile UUID show up
This commit is contained in:
		
							parent
							
								
									20bd1c686c
								
							
						
					
					
						commit
						38825d7912
					
				
					 2 changed files with 26 additions and 0 deletions
				
			
		| 
						 | 
					@ -39,6 +39,9 @@ struct pa_bluetooth_discovery {
 | 
				
			||||||
    pa_hook hook;
 | 
					    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) {
 | 
					static pa_bluetooth_uuid *uuid_new(const char *uuid) {
 | 
				
			||||||
    pa_bluetooth_uuid *u;
 | 
					    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) {
 | 
					                while (dbus_message_iter_get_arg_type(&ai) != DBUS_TYPE_INVALID) {
 | 
				
			||||||
                    pa_bluetooth_uuid *node;
 | 
					                    pa_bluetooth_uuid *node;
 | 
				
			||||||
                    const char *value;
 | 
					                    const char *value;
 | 
				
			||||||
 | 
					                    DBusMessage *m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    dbus_message_iter_get_basic(&ai, &value);
 | 
					                    dbus_message_iter_get_basic(&ai, &value);
 | 
				
			||||||
                    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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    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))
 | 
					                    if (!dbus_message_iter_next(&ai))
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,20 @@
 | 
				
			||||||
#include <pulsecore/macro.h>
 | 
					#include <pulsecore/macro.h>
 | 
				
			||||||
#include <pulsecore/core-util.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_uuid pa_bluetooth_uuid;
 | 
				
			||||||
typedef struct pa_bluetooth_device pa_bluetooth_device;
 | 
					typedef struct pa_bluetooth_device pa_bluetooth_device;
 | 
				
			||||||
typedef struct pa_bluetooth_discovery pa_bluetooth_discovery;
 | 
					typedef struct pa_bluetooth_discovery pa_bluetooth_discovery;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue