[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-bluetooth
Subject: Re: [BlueZ PATCH 2/2] input: Change uinput name and set uniq attribute
From: Luiz Augusto von Dentz <luiz.dentz () gmail ! com>
Date: 2019-11-27 19:42:54
Message-ID: CABBYNZJk0=x4j4tgmsZUJmnqK74V4+hy9iciJB6N5doHsB5baQ () mail ! gmail ! com
[Download RAW message or body]
Hi Abhishek,
On Wed, Nov 27, 2019 at 9:09 PM Abhishek Pandit-Subedi
<abhishekpandit@chromium.org> wrote:
>
> When creating the uinput device, change the name to the peer device
> name. Set the peer device address to the uniq attribute instead of the
> name.
>
> The resulting uinput device will look like this:
>
> $ udevadm info -a -p /sys/devices/virtual/input/input17
> ...
> looking at device '/devices/virtual/input/input17':
> KERNEL=="input17"
> SUBSYSTEM=="input"
> DRIVER==""
> ATTR{inhibited}=="0"
> ATTR{name}=="BeatsStudio Wireless"
> ATTR{phys}=="00:00:00:6e:d0:74"
> ATTR{properties}=="0"
> ATTR{uniq}=="00:00:00:cc:1c:f3"
>
> ---
>
> This change requires an accompanying change in the kernel that adds the
> set uniq ioctl. The change is available here:
>
> https://lore.kernel.org/linux-bluetooth/20191127185139.65048-1-abhishekpandit@chromium.org/T/#u
>
> If this change looks ok, I would like to merge it with the previous
> change before merging since they're related.
I would split the UNIQ handling just in case it causes a problems in
some platform so we can easily revert, Im fine merging other parts
though.
>
> profiles/audio/avctp.c | 18 +++++++++---------
> src/uinput.h | 2 ++
> 2 files changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/profiles/audio/avctp.c b/profiles/audio/avctp.c
> index 42136f94b..05df57bd2 100644
> --- a/profiles/audio/avctp.c
> +++ b/profiles/audio/avctp.c
> @@ -1162,7 +1162,7 @@ failed:
> }
>
> static int uinput_create(struct btd_device *device, const char *name,
> - const char *phys)
> + const char *src, const char *dst)
> {
> struct uinput_dev dev;
> int fd, err, i;
> @@ -1203,8 +1203,8 @@ static int uinput_create(struct btd_device *device, const char *name,
> ioctl(fd, UI_SET_EVBIT, EV_REP);
> ioctl(fd, UI_SET_EVBIT, EV_SYN);
>
> - /* Also set the phys */
> - ioctl(fd, UI_SET_PHYS, phys);
> + ioctl(fd, UI_SET_PHYS, src);
> + ioctl(fd, UI_SET_UNIQ, dst);
>
> for (i = 0; key_map[i].name != NULL; i++)
> ioctl(fd, UI_SET_KEYBIT, key_map[i].uinput);
> @@ -1224,7 +1224,7 @@ static int uinput_create(struct btd_device *device, const char *name,
>
> static void init_uinput(struct avctp *session)
> {
> - char address[18], phys[18], name[248 + 1];
> + char dest[18], src[18], name[248 + 1];
>
> device_get_name(session->device, name, sizeof(name));
> if (g_str_equal(name, "Nokia CK-20W")) {
> @@ -1234,15 +1234,15 @@ static void init_uinput(struct avctp *session)
> session->key_quirks[AVC_PAUSE] |= QUIRK_NO_RELEASE;
> }
>
> - ba2strlc(device_get_address(session->device), address);
> + ba2strlc(device_get_address(session->device), dest);
> ba2strlc(btd_adapter_get_address(device_get_adapter(session->device)),
> - phys);
> + src);
>
> - session->uinput = uinput_create(session->device, address, phys);
> + session->uinput = uinput_create(session->device, name, src, dest);
> if (session->uinput < 0)
> - error("AVRCP: failed to init uinput for %s", address);
> + error("AVRCP: failed to init uinput for %s", dest);
> else
> - DBG("AVRCP: uinput initialized for %s", address);
> + DBG("AVRCP: uinput initialized for %s", dest);
> }
>
> static struct avctp_queue *avctp_queue_create(struct avctp_channel *chan)
> diff --git a/src/uinput.h b/src/uinput.h
> index 20e0941d1..589c22528 100644
> --- a/src/uinput.h
> +++ b/src/uinput.h
> @@ -686,6 +686,8 @@ extern "C" {
> #define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
> #define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char*)
> #define UI_SET_SWBIT _IOW(UINPUT_IOCTL_BASE, 109, int)
> +#define UI_SET_PROPBIT _IOW(UINPUT_IOCTL_BASE, 110, int)
> +#define UI_SET_UNIQ _IOW(UINPUT_IOCTL_BASE, 111, char*)
>
> #ifndef NBITS
> #define NBITS(x) ((((x) - 1) / (sizeof(long) * 8)) + 1)
> --
> 2.24.0.432.g9d3f5f5b63-goog
>
--
Luiz Augusto von Dentz
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic