From: Szymon Janc <szymon.janc@codecoup.pl>
To: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH] sixaxis: Fix Bluetooth PS3 clone joypad being named like the original
Date: Mon, 22 Feb 2021 09:27:16 +0100 [thread overview]
Message-ID: <2568708.mvXUDI8C0e@ix> (raw)
In-Reply-To: <20210218190545.109454-1-szymon.janc@codecoup.pl>
On Thursday, 18 February 2021 20:05:45 CET Szymon Janc wrote:
> When cable pairing a PS3 clone device, we should try and keep the USB device
> name to create a new btd_device so that the joypad is named after its USB
> name when connecting through Bluetooth.
>
> If that isn't done, "Shanwan" clone joypads are named like the genuine
> joypads, and kernel Bluetooth quirks aren't applied.
>
> gh-issue: https://github.com/bluez/bluez/issues/46
> ---
> plugins/sixaxis.c | 5 ++++-
> profiles/input/server.c | 2 +-
> profiles/input/sixaxis.h | 13 ++++++++++++-
> 3 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c
> index d693a86c0..517cecc47 100644
> --- a/plugins/sixaxis.c
> +++ b/plugins/sixaxis.c
> @@ -387,6 +387,7 @@ get_pairing_type_for_device(struct udev_device *udevice,
> uint16_t *bus, char **sysfs_path)
> {
> struct udev_device *hid_parent;
> + const char *hid_name;
> const char *hid_id;
> const struct cable_pairing *cp;
> uint16_t vid, pid;
> @@ -401,7 +402,9 @@ get_pairing_type_for_device(struct udev_device *udevice,
> uint16_t *bus, if (!hid_id || sscanf(hid_id, "%hx:%hx:%hx", bus, &vid,
> &pid) != 3) return NULL;
>
> - cp = get_pairing(vid, pid);
> + hid_name = udev_device_get_property_value(hid_parent, "HID_NAME");
> +
> + cp = get_pairing(vid, pid, hid_name);
> *sysfs_path = g_strdup(udev_device_get_syspath(udevice));
>
> return cp;
> diff --git a/profiles/input/server.c b/profiles/input/server.c
> index d8b413744..79cf08a66 100644
> --- a/profiles/input/server.c
> +++ b/profiles/input/server.c
> @@ -120,7 +120,7 @@ static bool dev_is_sixaxis(const bdaddr_t *src, const
> bdaddr_t *dst) vid = btd_device_get_vendor(device);
> pid = btd_device_get_product(device);
>
> - cp = get_pairing(vid, pid);
> + cp = get_pairing(vid, pid, NULL);
> if (cp && (cp->type == CABLE_PAIRING_SIXAXIS ||
> cp->type ==
CABLE_PAIRING_DS4))
> return true;
> diff --git a/profiles/input/sixaxis.h b/profiles/input/sixaxis.h
> index a3cda70e4..ab8831995 100644
> --- a/profiles/input/sixaxis.h
> +++ b/profiles/input/sixaxis.h
> @@ -29,7 +29,7 @@ struct cable_pairing {
> };
>
> static inline const struct cable_pairing *
> -get_pairing(uint16_t vid, uint16_t pid)
> +get_pairing(uint16_t vid, uint16_t pid, const char *name)
> {
> static const struct cable_pairing devices[] = {
> {
> @@ -40,6 +40,14 @@ get_pairing(uint16_t vid, uint16_t pid)
> .version = 0x0000,
> .type = CABLE_PAIRING_SIXAXIS,
> },
> + {
> + .name = "SHANWAN PS3 GamePad",
> + .source = 0x0002,
> + .vid = 0x054c,
> + .pid = 0x0268,
> + .version = 0x0000,
> + .type = CABLE_PAIRING_SIXAXIS,
> + },
> {
> .name = "Navigation Controller",
> .source = 0x0002,
> @@ -73,6 +81,9 @@ get_pairing(uint16_t vid, uint16_t pid)
> if (devices[i].pid != pid)
> continue;
>
> + if (name && strcmp(name, devices[i].name))
> + continue;
> +
> return &devices[i];
> }
Applied.
--
pozdrawiam
Szymon Janc
prev parent reply other threads:[~2021-02-22 8:28 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-18 19:05 [PATCH] sixaxis: Fix Bluetooth PS3 clone joypad being named like the original Szymon Janc
2021-02-22 8:27 ` Szymon Janc [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2568708.mvXUDI8C0e@ix \
--to=szymon.janc@codecoup.pl \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).