[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