Add PS3 BD Remote patches (power saving)
This commit is contained in:
parent
a7a3a89638
commit
d5c31c0790
37
0001-input-Add-helper-function-to-request-disconnect.patch
Normal file
37
0001-input-Add-helper-function-to-request-disconnect.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From c70bf65af6e301f18063491b22112300c0fb9b89 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Sun, 17 Jun 2012 01:25:46 +0200
|
||||
Subject: [PATCH 1/3] input: Add helper function to request disconnect
|
||||
|
||||
---
|
||||
input/device.c | 7 +++++++
|
||||
input/device.h | 1 +
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/input/device.c b/input/device.c
|
||||
index 0e3f4a9..8fdd4e0 100644
|
||||
--- a/input/device.c
|
||||
+++ b/input/device.c
|
||||
@@ -1306,3 +1306,10 @@ int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst)
|
||||
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+void input_device_request_disconnect(struct fake_input *fake)
|
||||
+{
|
||||
+ if (fake == NULL || fake->idev == NULL)
|
||||
+ return;
|
||||
+ device_request_disconnect(fake->idev->device, NULL);
|
||||
+}
|
||||
diff --git a/input/device.h b/input/device.h
|
||||
index 509a353..ff52967 100644
|
||||
--- a/input/device.h
|
||||
+++ b/input/device.h
|
||||
@@ -49,3 +49,4 @@ int input_device_unregister(const char *path, const char *uuid);
|
||||
int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm,
|
||||
GIOChannel *io);
|
||||
int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst);
|
||||
+void input_device_request_disconnect(struct fake_input *fake);
|
||||
--
|
||||
1.7.10
|
||||
|
118
0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch
Normal file
118
0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch
Normal file
@ -0,0 +1,118 @@
|
||||
From cca11542bcd4d1748c850806c1599ed1b76ea19a Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Sun, 17 Jun 2012 01:26:18 +0200
|
||||
Subject: [PATCH 2/3] fakehid: Disconnect from PS3 remote after 10 mins
|
||||
|
||||
After 10 minutes, disconnect the PS3 BD Remote to avoid draining its
|
||||
battery. This is consistent with its behaviour on the PS3.
|
||||
|
||||
Original patch by Ruslan N. Marchenko <rufferson@gmail.com>
|
||||
---
|
||||
input/device.h | 1 +
|
||||
input/fakehid.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/input/device.h b/input/device.h
|
||||
index ff52967..d8baa2c 100644
|
||||
--- a/input/device.h
|
||||
+++ b/input/device.h
|
||||
@@ -33,6 +33,7 @@ struct fake_input {
|
||||
int uinput; /* uinput socket */
|
||||
int rfcomm; /* RFCOMM socket */
|
||||
uint8_t ch; /* RFCOMM channel number */
|
||||
+ guint timeout_id; /* Disconnect timeout ID */
|
||||
gboolean (*connect) (struct input_conn *iconn, GError **err);
|
||||
int (*disconnect) (struct input_conn *iconn);
|
||||
void *priv;
|
||||
diff --git a/input/fakehid.c b/input/fakehid.c
|
||||
index 3181538..a125356 100644
|
||||
--- a/input/fakehid.c
|
||||
+++ b/input/fakehid.c
|
||||
@@ -44,6 +44,9 @@
|
||||
#include "fakehid.h"
|
||||
#include "uinput.h"
|
||||
|
||||
+/* Timeout to get the PS3 remote disconnected, in seconds */
|
||||
+#define PS3_REMOTE_TIMEOUT 10 * 60
|
||||
+
|
||||
enum ps3remote_special_keys {
|
||||
PS3R_BIT_PS = 0,
|
||||
PS3R_BIT_ENTER = 3,
|
||||
@@ -141,6 +144,20 @@ static unsigned int ps3remote_keymap[] = {
|
||||
[0xff] = KEY_MAX,
|
||||
};
|
||||
|
||||
+static gboolean ps3_remote_timeout_cb(gpointer user_data);
|
||||
+
|
||||
+static void ps3remote_set_timeout(struct fake_input *fake, gboolean enable)
|
||||
+{
|
||||
+ if (enable) {
|
||||
+ fake->timeout_id = g_timeout_add_seconds(PS3_REMOTE_TIMEOUT, ps3_remote_timeout_cb, fake);
|
||||
+ } else {
|
||||
+ if (fake->timeout_id > 0) {
|
||||
+ g_source_remove(fake->timeout_id);
|
||||
+ fake->timeout_id = 0;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int ps3remote_decode(char *buff, int size, unsigned int *value)
|
||||
{
|
||||
static unsigned int lastkey = 0;
|
||||
@@ -203,6 +220,16 @@ error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+ps3_remote_timeout_cb(gpointer user_data)
|
||||
+{
|
||||
+ struct fake_input *fake = (struct fake_input *) user_data;
|
||||
+ input_device_request_disconnect(fake);
|
||||
+ DBG("Disconnected PS3 BD Remote after timeout");
|
||||
+ fake->timeout_id = 0;
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond,
|
||||
gpointer data)
|
||||
{
|
||||
@@ -221,6 +248,9 @@ static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond,
|
||||
goto failed;
|
||||
}
|
||||
|
||||
+ /* Remove the old timeout */
|
||||
+ ps3remote_set_timeout(fake, FALSE);
|
||||
+
|
||||
fd = g_io_channel_unix_get_fd(chan);
|
||||
|
||||
memset(buff, 0, sizeof(buff));
|
||||
@@ -256,6 +286,8 @@ static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond,
|
||||
goto failed;
|
||||
}
|
||||
|
||||
+ ps3remote_set_timeout(fake, TRUE);
|
||||
+
|
||||
return TRUE;
|
||||
|
||||
failed:
|
||||
@@ -318,6 +350,8 @@ static int ps3remote_setup_uinput(struct fake_input *fake,
|
||||
goto err;
|
||||
}
|
||||
|
||||
+ ps3remote_set_timeout(fake, TRUE);
|
||||
+
|
||||
return 0;
|
||||
|
||||
err:
|
||||
@@ -378,6 +412,8 @@ struct fake_input *fake_hid_connadd(struct fake_input *fake,
|
||||
for (l = fake_hid->devices; l != NULL; l = l->next) {
|
||||
old = l->data;
|
||||
if (old->idev == fake->idev) {
|
||||
+ if (fake->timeout_id > 0)
|
||||
+ g_source_remove(fake->timeout_id);
|
||||
g_free(fake);
|
||||
fake = old;
|
||||
fake_hid->connect(fake, NULL);
|
||||
--
|
||||
1.7.10
|
||||
|
26
0003-fakehid-Use-the-same-constant-as-declared.patch
Normal file
26
0003-fakehid-Use-the-same-constant-as-declared.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From a354165e58f937ee12c16ab48ce334b664c8f163 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Sun, 17 Jun 2012 01:29:01 +0200
|
||||
Subject: [PATCH 3/3] fakehid: Use the same constant as declared
|
||||
|
||||
ps3remote_keymap[] uses 0xff as the max value, so should we.
|
||||
---
|
||||
input/fakehid.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/input/fakehid.c b/input/fakehid.c
|
||||
index a125356..a758413 100644
|
||||
--- a/input/fakehid.c
|
||||
+++ b/input/fakehid.c
|
||||
@@ -335,7 +335,7 @@ static int ps3remote_setup_uinput(struct fake_input *fake,
|
||||
}
|
||||
|
||||
/* enabling keys */
|
||||
- for (i = 0; i < 256; i++)
|
||||
+ for (i = 0; i < 0xff; i++)
|
||||
if (ps3remote_keymap[i] != KEY_RESERVED)
|
||||
if (ioctl(fake->uinput, UI_SET_KEYBIT,
|
||||
ps3remote_keymap[i]) < 0) {
|
||||
--
|
||||
1.7.10
|
||||
|
12
bluez.spec
12
bluez.spec
@ -1,7 +1,7 @@
|
||||
Summary: Bluetooth utilities
|
||||
Name: bluez
|
||||
Version: 4.100
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: http://www.bluez.org/
|
||||
@ -22,6 +22,10 @@ Patch2: 0001-Fix-ALSA-plugin-having-full-soname.patch
|
||||
Patch4: bluez-socket-mobile-cf-connection-kit.patch
|
||||
# http://thread.gmane.org/gmane.linux.bluez.kernel/2396
|
||||
Patch5: 0001-Add-sixaxis-cable-pairing-plugin.patch
|
||||
# PS3 BD Remote patches
|
||||
Patch6: 0001-input-Add-helper-function-to-request-disconnect.patch
|
||||
Patch7: 0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch
|
||||
Patch8: 0003-fakehid-Use-the-same-constant-as-declared.patch
|
||||
|
||||
BuildRequires: flex
|
||||
BuildRequires: dbus-devel >= 0.90
|
||||
@ -147,6 +151,9 @@ and mouse.
|
||||
%patch2 -p1 -b .typo
|
||||
%patch4 -p1 -b .socket-mobile
|
||||
%patch5 -p1 -b .cable-pairing
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
|
||||
%build
|
||||
libtoolize -f -c
|
||||
@ -311,6 +318,9 @@ fi
|
||||
%exclude /usr/lib/udev/rules.d/97-bluetooth-hid2hci.rules
|
||||
|
||||
%changelog
|
||||
* Sun Jun 17 2012 Bastien Nocera <bnocera@redhat.com> 4.100-2
|
||||
- Add PS3 BD Remote patches (power saving)
|
||||
|
||||
* Thu Jun 14 2012 Bastien Nocera <bnocera@redhat.com> 4.100-1
|
||||
- Update to 4.100
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user