bluez: update to bluez-4.86

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2011-01-21 14:23:50 +01:00
parent 33862c1805
commit 3179090220
2 changed files with 47 additions and 52 deletions

View File

@ -19,7 +19,7 @@
################################################################################ ################################################################################
PKG_NAME="bluez" PKG_NAME="bluez"
PKG_VERSION="4.85" PKG_VERSION="4.86"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -1,10 +1,7 @@
This patch adds additional PS3 remote support to bluez (4.76). diff -Naur bluez-4.86/input/device.c bluez-4.86.patch/input/device.c
The latest patch will always be located at http://kitlaan.twinaxis.com/project/bluez-ps3remote --- bluez-4.86/input/device.c 2011-01-20 08:49:26.000000000 +0100
+++ bluez-4.86.patch/input/device.c 2011-01-21 13:59:29.759613759 +0100
diff -Nur a/input/device.c b/input/device.c @@ -437,14 +437,14 @@
--- a/input/device.c 2010-09-08 11:27:53.000000000 -0400
+++ b/input/device.c 2010-10-19 13:08:36.553574553 -0400
@@ -465,14 +465,14 @@
static gboolean fake_hid_connect(struct input_conn *iconn, GError **err) static gboolean fake_hid_connect(struct input_conn *iconn, GError **err)
{ {
@ -21,7 +18,7 @@ diff -Nur a/input/device.c b/input/device.c
return fhid->disconnect(iconn->fake); return fhid->disconnect(iconn->fake);
} }
@@ -602,7 +602,7 @@ @@ -574,7 +574,7 @@
} }
static int hidp_add_connection(const struct input_device *idev, static int hidp_add_connection(const struct input_device *idev,
@ -30,7 +27,7 @@ diff -Nur a/input/device.c b/input/device.c
{ {
struct hidp_connadd_req *req; struct hidp_connadd_req *req;
struct fake_hid *fake_hid; struct fake_hid *fake_hid;
@@ -639,13 +639,17 @@ @@ -611,13 +611,17 @@
fake = g_new0(struct fake_input, 1); fake = g_new0(struct fake_input, 1);
fake->connect = fake_hid_connect; fake->connect = fake_hid_connect;
fake->disconnect = fake_hid_disconnect; fake->disconnect = fake_hid_disconnect;
@ -49,7 +46,7 @@ diff -Nur a/input/device.c b/input/device.c
goto cleanup; goto cleanup;
} }
@@ -785,7 +789,7 @@ @@ -760,7 +764,7 @@
struct input_device *idev = user_data; struct input_device *idev = user_data;
int flags; int flags;
@ -58,7 +55,7 @@ diff -Nur a/input/device.c b/input/device.c
flags = removal ? (1 << HIDP_VIRTUAL_CABLE_UNPLUG) : 0; flags = removal ? (1 << HIDP_VIRTUAL_CABLE_UNPLUG) : 0;
@@ -1291,3 +1295,15 @@ @@ -1260,3 +1264,15 @@
return 0; return 0;
} }
@ -74,9 +71,9 @@ diff -Nur a/input/device.c b/input/device.c
+ device_request_disconnect(idev->device, NULL); + device_request_disconnect(idev->device, NULL);
+} +}
+ +
diff -Nur a/input/device.h b/input/device.h diff -Naur bluez-4.86/input/device.h bluez-4.86.patch/input/device.h
--- a/input/device.h 2010-09-08 11:27:53.000000000 -0400 --- bluez-4.86/input/device.h 2010-09-08 17:27:53.000000000 +0200
+++ b/input/device.h 2010-10-19 13:10:01.273608173 -0400 +++ bluez-4.86.patch/input/device.h 2011-01-21 13:59:29.759613759 +0100
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
struct input_device; struct input_device;
@ -107,10 +104,10 @@ diff -Nur a/input/device.h b/input/device.h
int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst); int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst);
+void input_device_request_disconnect(const bdaddr_t *src, const bdaddr_t *dst); +void input_device_request_disconnect(const bdaddr_t *src, const bdaddr_t *dst);
+ +
diff -Nur a/input/fakehid.c b/input/fakehid.c diff -Naur bluez-4.86/input/fakehid.c bluez-4.86.patch/input/fakehid.c
--- a/input/fakehid.c 2010-09-08 11:27:53.000000000 -0400 --- bluez-4.86/input/fakehid.c 2011-01-20 08:49:26.000000000 +0100
+++ b/input/fakehid.c 2010-10-19 13:24:55.243569928 -0400 +++ bluez-4.86.patch/input/fakehid.c 2011-01-21 14:04:17.768938794 +0100
@@ -48,8 +48,479 @@ @@ -47,8 +47,479 @@
#include "fakehid.h" #include "fakehid.h"
#include "uinput.h" #include "uinput.h"
@ -590,7 +587,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
enum ps3remote_special_keys { enum ps3remote_special_keys {
PS3R_BIT_PS = 0, PS3R_BIT_PS = 0,
PS3R_BIT_ENTER = 3, PS3R_BIT_ENTER = 3,
@@ -92,6 +563,8 @@ @@ -91,6 +562,8 @@
[PS3R_BIT_SELECT] = 0x50, [PS3R_BIT_SELECT] = 0x50,
}; };
@ -599,7 +596,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
static unsigned int ps3remote_keymap[] = { static unsigned int ps3remote_keymap[] = {
[0x16] = KEY_EJECTCD, [0x16] = KEY_EJECTCD,
[0x64] = KEY_AUDIO, [0x64] = KEY_AUDIO,
@@ -147,10 +620,38 @@ @@ -146,10 +619,38 @@
[0xff] = KEY_MAX, [0xff] = KEY_MAX,
}; };
@ -641,7 +638,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
unsigned int i, mask; unsigned int i, mask;
int retval; int retval;
guint8 key; guint8 key;
@@ -165,17 +666,18 @@ @@ -164,17 +665,18 @@
/* first, check flags */ /* first, check flags */
for (i = 0; i < 24; i++) { for (i = 0; i < 24; i++) {
@ -663,7 +660,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
goto out; goto out;
} }
@@ -183,20 +685,21 @@ @@ -182,20 +684,21 @@
*value = buff[11]; *value = buff[11];
if (buff[11] == 1) { if (buff[11] == 1) {
retval = ps3remote_keymap[key]; retval = ps3remote_keymap[key];
@ -689,7 +686,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
return retval; return retval;
@@ -204,8 +707,8 @@ @@ -203,8 +706,8 @@
error("ps3remote: unrecognized sequence [%#x][%#x][%#x][%#x] [%#x]," error("ps3remote: unrecognized sequence [%#x][%#x][%#x][%#x] [%#x],"
"last: [%#x][%#x][%#x][%#x]", "last: [%#x][%#x][%#x][%#x]",
buff[2], buff[3], buff[4], buff[5], buff[11], buff[2], buff[3], buff[4], buff[5], buff[11],
@ -700,19 +697,19 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
return -1; return -1;
} }
@@ -213,19 +716,28 @@ @@ -212,19 +715,27 @@
gpointer data) gpointer data)
{ {
struct fake_input *fake = data; struct fake_input *fake = data;
- struct uinput_event event; - struct uinput_event event;
+ struct ps3remote_data *ps3data = fake->priv; + struct ps3remote_data *ps3data = fake->priv;
unsigned int key, value = 0; unsigned int key, value = 0;
gsize size; ssize_t size;
char buff[50]; char buff[50];
- int fd;
- if (cond & G_IO_NVAL) - if (cond & G_IO_NVAL)
- return FALSE; - return FALSE;
+
+ if (cond & G_IO_NVAL) { + if (cond & G_IO_NVAL) {
+ goto failed; + goto failed;
+ } + }
@ -723,18 +720,16 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
+ error("Hangup or error on ps3remote server socket"); + error("Hangup or error on ps3remote server socket");
goto failed; goto failed;
} }
+ /* reset the timeout if needed */ + /* reset the timeout if needed */
+ if (fake->timer > 0) { + if (fake->timer > 0) {
+ g_source_remove(fake->timer); + g_source_remove(fake->timer);
+ fake->timer = g_timeout_add_seconds(fake->idle_timeout, + fake->timer = g_timeout_add_seconds(fake->idle_timeout,
+ fake_hid_common_timeout, fake); + fake_hid_common_timeout, fake);
+ } + }
+
memset(buff, 0, sizeof(buff));
if (g_io_channel_read(chan, buff, sizeof(buff), &size) != fd = g_io_channel_unix_get_fd(chan);
@@ -234,55 +746,114 @@
@@ -235,55 +746,114 @@
goto failed; goto failed;
} }
@ -878,7 +873,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
error("Error opening uinput device file"); error("Error opening uinput device file");
return 1; return 1;
} }
@@ -295,13 +866,13 @@ @@ -296,13 +866,13 @@
dev.id.vendor = fake_hid->vendor; dev.id.vendor = fake_hid->vendor;
dev.id.product = fake_hid->product; dev.id.product = fake_hid->product;
@ -894,7 +889,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
error("Error enabling uinput device key events"); error("Error enabling uinput device key events");
goto err; goto err;
} }
@@ -309,43 +880,79 @@ @@ -310,43 +880,79 @@
/* enabling keys */ /* enabling keys */
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
if (ps3remote_keymap[i] != KEY_RESERVED) if (ps3remote_keymap[i] != KEY_RESERVED)
@ -982,7 +977,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
.event = ps3remote_event, .event = ps3remote_event,
.setup_uinput = ps3remote_setup_uinput, .setup_uinput = ps3remote_setup_uinput,
.devices = NULL, .devices = NULL,
@@ -393,6 +1000,11 @@ @@ -394,6 +1000,11 @@
/* New device? Add it to the list of known devices, /* New device? Add it to the list of known devices,
* and create the uinput necessary */ * and create the uinput necessary */
if (old == NULL) { if (old == NULL) {
@ -994,7 +989,7 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
if (fake_hid->setup_uinput(fake, fake_hid)) { if (fake_hid->setup_uinput(fake, fake_hid)) {
error("Error setting up uinput"); error("Error setting up uinput");
g_free(fake); g_free(fake);
@@ -403,8 +1015,73 @@ @@ -404,8 +1015,73 @@
fake->io = g_io_channel_ref(intr_io); fake->io = g_io_channel_ref(intr_io);
g_io_channel_set_close_on_unref(fake->io, TRUE); g_io_channel_set_close_on_unref(fake->io, TRUE);
@ -1069,9 +1064,9 @@ diff -Nur a/input/fakehid.c b/input/fakehid.c
+ } + }
+} +}
+ +
diff -Nur a/input/fakehid.h b/input/fakehid.h diff -Naur bluez-4.86/input/fakehid.h bluez-4.86.patch/input/fakehid.h
--- a/input/fakehid.h 2010-09-08 11:27:53.000000000 -0400 --- bluez-4.86/input/fakehid.h 2010-09-08 17:27:53.000000000 +0200
+++ b/input/fakehid.h 2010-10-19 13:05:34.503528246 -0400 +++ bluez-4.86.patch/input/fakehid.h 2011-01-21 13:59:29.844614740 +0100
@@ -38,3 +38,8 @@ @@ -38,3 +38,8 @@
struct fake_input *fake_hid_connadd(struct fake_input *fake, GIOChannel *intr_io, struct fake_input *fake_hid_connadd(struct fake_input *fake, GIOChannel *intr_io,
@ -1081,9 +1076,9 @@ diff -Nur a/input/fakehid.h b/input/fakehid.h
+ +
+void fake_hid_exit(void); +void fake_hid_exit(void);
+ +
diff -Nur a/input/input.conf b/input/input.conf diff -Naur bluez-4.86/input/input.conf bluez-4.86.patch/input/input.conf
--- a/input/input.conf 2008-08-05 17:14:56.000000000 -0400 --- bluez-4.86/input/input.conf 2008-08-05 23:14:56.000000000 +0200
+++ b/input/input.conf 2010-10-19 13:05:34.503528246 -0400 +++ bluez-4.86.patch/input/input.conf 2011-01-21 13:59:29.845614753 +0100
@@ -4,6 +4,79 @@ @@ -4,6 +4,79 @@
# particular interface # particular interface
[General] [General]
@ -1165,9 +1160,9 @@ diff -Nur a/input/input.conf b/input/input.conf
+0x61 = KEY_FRAMEFORWARD # SLOW/STEP FORWARD (XBMC recommendation: KEY_DOT) +0x61 = KEY_FRAMEFORWARD # SLOW/STEP FORWARD (XBMC recommendation: KEY_DOT)
+0xff = KEY_MAX +0xff = KEY_MAX
+ +
diff -Nur a/input/manager.c b/input/manager.c diff -Naur bluez-4.86/input/manager.c bluez-4.86.patch/input/manager.c
--- a/input/manager.c 2010-05-23 08:47:19.000000000 -0400 --- bluez-4.86/input/manager.c 2010-05-23 14:47:19.000000000 +0200
+++ b/input/manager.c 2010-10-19 13:05:34.503528246 -0400 +++ bluez-4.86.patch/input/manager.c 2011-01-21 13:59:29.845614753 +0100
@@ -41,6 +41,7 @@ @@ -41,6 +41,7 @@
#include "device.h" #include "device.h"
#include "server.h" #include "server.h"
@ -1202,10 +1197,10 @@ diff -Nur a/input/manager.c b/input/manager.c
+ +
connection = NULL; connection = NULL;
} }
diff -Nur a/src/device.c b/src/device.c diff -Naur bluez-4.86/src/device.c bluez-4.86.patch/src/device.c
--- a/src/device.c 2010-10-02 19:25:27.000000000 -0400 --- bluez-4.86/src/device.c 2011-01-11 15:51:27.000000000 +0100
+++ b/src/device.c 2010-10-19 13:05:34.503528246 -0400 +++ bluez-4.86.patch/src/device.c 2011-01-21 13:59:29.847614776 +0100
@@ -968,6 +968,7 @@ @@ -936,6 +936,7 @@
const gchar *adapter_path = adapter_get_path(adapter); const gchar *adapter_path = adapter_get_path(adapter);
bdaddr_t src; bdaddr_t src;
char srcaddr[18], alias[MAX_NAME_LENGTH + 1]; char srcaddr[18], alias[MAX_NAME_LENGTH + 1];
@ -1213,7 +1208,7 @@ diff -Nur a/src/device.c b/src/device.c
device = g_try_malloc0(sizeof(struct btd_device)); device = g_try_malloc0(sizeof(struct btd_device));
if (device == NULL) if (device == NULL)
@@ -999,6 +1000,10 @@ @@ -968,6 +969,10 @@
if (read_blocked(&src, &device->bdaddr)) if (read_blocked(&src, &device->bdaddr))
device_block(conn, device); device_block(conn, device);
@ -1224,7 +1219,7 @@ diff -Nur a/src/device.c b/src/device.c
device->auth = 0xff; device->auth = 0xff;
if (read_link_key(&src, &device->bdaddr, NULL, NULL) == 0) if (read_link_key(&src, &device->bdaddr, NULL, NULL) == 0)
@@ -1206,6 +1211,8 @@ @@ -1187,6 +1192,8 @@
if (!probe_uuids) if (!probe_uuids)
continue; continue;