Update cable pairing patch
This commit is contained in:
parent
a6d564f749
commit
9befcf2c86
@ -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@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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user