[bluez] Update cable pairing patch

Bastien Nocera hadess at fedoraproject.org
Sun Dec 19 14:41:19 UTC 2010


commit 9befcf2c86255d92790051dd03558febc205ffb4
Author: Bastien Nocera <hadess at hadess.net>
Date:   Sun Dec 19 14:41:05 2010 +0000

    Update cable pairing patch

 0001-Add-sixaxis-cable-pairing-plugin.patch |  105 +++++++++++++++++++++++----
 1 files changed, 89 insertions(+), 16 deletions(-)
---
diff --git a/0001-Add-sixaxis-cable-pairing-plugin.patch b/0001-Add-sixaxis-cable-pairing-plugin.patch
index 34d054f..5724fe9 100644
--- a/0001-Add-sixaxis-cable-pairing-plugin.patch
+++ b/0001-Add-sixaxis-cable-pairing-plugin.patch
@@ -1,4 +1,4 @@
-From 450e51afd466497f7d2c981a61bf56c5fb7883a8 Mon Sep 17 00:00:00 2001
+From 14d6380cb9921ea09dc63d9401cb31c8f691449e Mon Sep 17 00:00:00 2001
 From: Bastien Nocera <hadess at hadess.net>
 Date: Tue, 1 Sep 2009 17:32:48 +0100
 Subject: [PATCH] Add sixaxis cable-pairing plugin
@@ -12,8 +12,12 @@ address, and added to the database of the current default adapter.
  Makefile.am     |    9 +-
  acinclude.m4    |   16 +++
  configure.ac    |    1 +
- plugins/cable.c |  385 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 409 insertions(+), 2 deletions(-)
+ plugins/cable.c |  382 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/adapter.c   |   19 +++
+ src/adapter.h   |    3 +
+ src/manager.c   |    5 +
+ src/manager.h   |    1 +
+ 8 files changed, 434 insertions(+), 2 deletions(-)
  create mode 100644 plugins/cable.c
 
 diff --git a/Makefile.am b/Makefile.am
@@ -104,7 +108,7 @@ index 287f07d..aab0c15 100644
 +	AM_CONDITIONAL(CABLE, test "${cable_enable}" = "yes" && test "${cable_found}" = "yes")
  ])
 diff --git a/configure.ac b/configure.ac
-index 50617fd..3348ee8 100644
+index 5f09cb6..0f73314 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -40,6 +40,7 @@ AC_PATH_GLIB
@@ -117,10 +121,10 @@ index 50617fd..3348ee8 100644
  
 diff --git a/plugins/cable.c b/plugins/cable.c
 new file mode 100644
-index 0000000..21f7257
+index 0000000..e8cff76
 --- /dev/null
 +++ b/plugins/cable.c
-@@ -0,0 +1,385 @@
+@@ -0,0 +1,382 @@
 +/*
 + *
 + *  BlueZ - Bluetooth protocol stack for Linux
@@ -159,8 +163,8 @@ index 0000000..21f7257
 +#include "plugin.h"
 +#include "log.h"
 +
-+#include "manager.h"
 +#include "adapter.h"
++#include "manager.h"
 +#include "device.h"
 +
 +#include "storage.h"
@@ -186,8 +190,11 @@ index 0000000..21f7257
 +	char srcaddr[18];
 +
 +	device = adapter_find_device(adapter, address);
-+	if (device == NULL)
-+		device = adapter_create_device(conn, adapter, address, FALSE);
++	if (device == NULL) {
++		device = device_create(conn, adapter, address, DEVICE_TYPE_UNKNOWN);
++		if (device != NULL)
++			adapter_create_device_for_device(conn, adapter, device);
++	}
 +	if (device != NULL) {
 +		device_set_temporary(device, FALSE);
 +		device_set_name(device, name);
@@ -337,7 +344,6 @@ index 0000000..21f7257
 +static void handle_device_plug(struct udev_device *udevice)
 +{
 +	struct btd_adapter *adapter;
-+	int adapter_id;
 +	guint i;
 +
 +	libusb_device **list, *usbdev;
@@ -355,12 +361,7 @@ index 0000000..21f7257
 +	DBG("Found Sixaxis device");
 +
 +	/* Look for the default adapter */
-+	adapter_id = manager_get_default_adapter();
-+	if (adapter_id == -1) {
-+		DBG("No adapters, exiting");
-+		return;
-+	}
-+	adapter = manager_find_adapter_by_id(adapter_id);
++	adapter = manager_get_default_adapter();
 +	if (adapter == NULL)
 +		return;
 +
@@ -506,6 +507,78 @@ index 0000000..21f7257
 +
 +BLUETOOTH_PLUGIN_DEFINE(cable, VERSION,
 +			BLUETOOTH_PLUGIN_PRIORITY_DEFAULT, cable_init, cable_exit)
+diff --git a/src/adapter.c b/src/adapter.c
+index 5118306..6318d12 100644
+--- a/src/adapter.c
++++ b/src/adapter.c
+@@ -1056,6 +1056,25 @@ static struct btd_device *adapter_create_device(DBusConnection *conn,
+ 	return device;
+ }
+ 
++void adapter_create_device_for_device(DBusConnection *conn,
++				      struct btd_adapter *adapter,
++				      struct btd_device *device)
++{
++	const char *path;
++
++	device_set_temporary(device, TRUE);
++
++	adapter->devices = g_slist_append(adapter->devices, device);
++
++	path = device_get_path(device);
++	g_dbus_emit_signal(conn, adapter->path,
++			ADAPTER_INTERFACE, "DeviceCreated",
++			DBUS_TYPE_OBJECT_PATH, &path,
++			DBUS_TYPE_INVALID);
++
++	adapter_update_devices(adapter);
++}
++
+ void adapter_remove_device(DBusConnection *conn, struct btd_adapter *adapter,
+ 						struct btd_device *device,
+ 						gboolean remove_storage)
+diff --git a/src/adapter.h b/src/adapter.h
+index a02f61c..472cc0e 100644
+--- a/src/adapter.h
++++ b/src/adapter.h
+@@ -133,6 +133,9 @@ int adapter_remove_found_device(struct btd_adapter *adapter, bdaddr_t *bdaddr);
+ void adapter_emit_device_found(struct btd_adapter *adapter,
+ 				struct remote_dev_info *dev,
+ 				uint8_t *eir_data, size_t eir_length);
++void adapter_create_device_for_device(DBusConnection *conn,
++				      struct btd_adapter *adapter,
++				      struct btd_device *device);
+ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode);
+ void adapter_update_local_name(struct btd_adapter *adapter, const char *name);
+ void adapter_service_insert(const bdaddr_t *bdaddr, void *rec);
+diff --git a/src/manager.c b/src/manager.c
+index c8ec7e5..1bfc021 100644
+--- a/src/manager.c
++++ b/src/manager.c
+@@ -245,6 +245,11 @@ static void manager_update_adapters(void)
+ 	g_free(array);
+ }
+ 
++struct btd_adapter *manager_get_default_adapter(void)
++{
++	return manager_find_adapter_by_id(default_adapter_id);
++}
++
+ static void manager_remove_adapter(struct btd_adapter *adapter)
+ {
+ 	uint16_t dev_id = adapter_get_dev_id(adapter);
+diff --git a/src/manager.h b/src/manager.h
+index e6d5dd9..894dcb7 100644
+--- a/src/manager.h
++++ b/src/manager.h
+@@ -35,6 +35,7 @@ struct btd_adapter *manager_find_adapter(const bdaddr_t *sba);
+ struct btd_adapter *manager_find_adapter_by_address(const char *address);
+ struct btd_adapter *manager_find_adapter_by_path(const char *path);
+ struct btd_adapter *manager_find_adapter_by_id(int id);
++struct btd_adapter *manager_get_default_adapter(void);
+ GSList *manager_get_adapters(void);
+ int manager_register_adapter(int id, gboolean devup);
+ int manager_unregister_adapter(int id);
 -- 
 1.7.3.2
 


More information about the scm-commits mailing list