linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: Archie Pusaka <apusaka@google.com>
Cc: linux-bluetooth <linux-bluetooth@vger.kernel.org>,
	CrosBT Upstreaming <chromeos-bluetooth-upstreaming@chromium.org>,
	Archie Pusaka <apusaka@chromium.org>,
	Alain Michaud <alainm@chromium.org>,
	Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Subject: Re: [Bluez PATCH v2 1/3] input/device: Replace UHID_FEATURE with UHID_GET_REPORT
Date: Mon, 3 Aug 2020 13:01:02 -0700	[thread overview]
Message-ID: <CABBYNZ+enHjri-aMrWcur5V+EWDRWj9b5Zmwp4v4ijDpYN7m4A@mail.gmail.com> (raw)
In-Reply-To: <20200803145200.Bluez.v2.1.Ibf5508171632eebb66a6cd0ed2fa87bfac078f74@changeid>

Hi Archie,

On Sun, Aug 2, 2020 at 11:52 PM Archie Pusaka <apusaka@google.com> wrote:
>
> From: Archie Pusaka <apusaka@chromium.org>
>
> According to kernel's uhid.h, UHID_FEATURE is obsolete and is
> replaced with UHID_GET_REPORT.
>
> Reviewed-by: Alain Michaud <alainm@chromium.org>
> Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> ---
>
> Changes in v2:
> -Split into three patches, now this only handles UHID_GET_REPORT
>
>  profiles/input/device.c    | 41 +++++++++++++++++++-------------------
>  profiles/input/hidp_defs.h |  2 +-
>  2 files changed, 22 insertions(+), 21 deletions(-)
>
> diff --git a/profiles/input/device.c b/profiles/input/device.c
> index ee0b2404a..ac4487f63 100644
> --- a/profiles/input/device.c
> +++ b/profiles/input/device.c
> @@ -220,7 +220,7 @@ static bool hidp_send_intr_message(struct input_device *idev, uint8_t hdr,
>         return hidp_send_message(idev->intr_io, hdr, data, size);
>  }
>
> -static bool uhid_send_feature_answer(struct input_device *idev,
> +static bool uhid_send_get_report_reply(struct input_device *idev,
>                                         const uint8_t *data, size_t size,
>                                         uint32_t id, uint16_t err)
>  {
> @@ -230,8 +230,8 @@ static bool uhid_send_feature_answer(struct input_device *idev,
>         if (data == NULL)
>                 size = 0;
>
> -       if (size > sizeof(ev.u.feature_answer.data))
> -               size = sizeof(ev.u.feature_answer.data);
> +       if (size > sizeof(ev.u.get_report_reply.data))
> +               size = sizeof(ev.u.get_report_reply.data);
>
>         if (!idev->uhid_created) {
>                 DBG("HID report (%zu bytes) dropped", size);
> @@ -239,13 +239,13 @@ static bool uhid_send_feature_answer(struct input_device *idev,
>         }
>
>         memset(&ev, 0, sizeof(ev));
> -       ev.type = UHID_FEATURE_ANSWER;
> -       ev.u.feature_answer.id = id;
> -       ev.u.feature_answer.err = err;
> -       ev.u.feature_answer.size = size;
> +       ev.type = UHID_GET_REPORT_REPLY;
> +       ev.u.get_report_reply.id = id;
> +       ev.u.get_report_reply.err = err;
> +       ev.u.get_report_reply.size = size;
>
>         if (size > 0)
> -               memcpy(ev.u.feature_answer.data, data, size);
> +               memcpy(ev.u.get_report_reply.data, data, size);
>
>         ret = bt_uhid_send(idev->uhid, &ev);
>         if (ret < 0) {
> @@ -399,7 +399,7 @@ static void hidp_recv_ctrl_handshake(struct input_device *idev, uint8_t param)
>         case HIDP_HSHK_ERR_FATAL:
>                 if (pending_req_type == HIDP_TRANS_GET_REPORT) {
>                         DBG("GET_REPORT failed (%u)", param);
> -                       uhid_send_feature_answer(idev, NULL, 0,
> +                       uhid_send_get_report_reply(idev, NULL, 0,
>                                                 idev->report_rsp_id, EIO);
>                         pending_req_complete = true;
>                 } else if (pending_req_type == HIDP_TRANS_SET_REPORT) {
> @@ -460,8 +460,8 @@ static void hidp_recv_ctrl_data(struct input_device *idev, uint8_t param,
>         switch (param) {
>         case HIDP_DATA_RTYPE_FEATURE:
>         case HIDP_DATA_RTYPE_INPUT:
> -       case HIDP_DATA_RTYPE_OUPUT:
> -               uhid_send_feature_answer(idev, data + 1, size - 1,
> +       case HIDP_DATA_RTYPE_OUTPUT:
> +               uhid_send_get_report_reply(idev, data + 1, size - 1,
>                                                         idev->report_rsp_id, 0);
>                 break;
>
> @@ -626,7 +626,7 @@ static void hidp_send_set_report(struct uhid_event *ev, void *user_data)
>                 break;
>         case UHID_OUTPUT_REPORT:
>                 /* Send DATA on interrupt channel */
> -               hdr = HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUPUT;
> +               hdr = HIDP_TRANS_DATA | HIDP_DATA_RTYPE_OUTPUT;
>                 hidp_send_intr_message(idev, hdr, ev->u.output.data,
>                                                         ev->u.output.size);
>                 break;
> @@ -646,13 +646,13 @@ static void hidp_send_get_report(struct uhid_event *ev, void *user_data)
>
>         if (idev->report_req_pending) {
>                 DBG("Old GET_REPORT or SET_REPORT still pending");
> -               uhid_send_feature_answer(idev, NULL, 0, ev->u.feature.id,
> +               uhid_send_get_report_reply(idev, NULL, 0, ev->u.get_report.id,
>                                                                         EBUSY);
>                 return;
>         }
>
>         /* Send GET_REPORT on control channel */
> -       switch (ev->u.feature.rtype) {
> +       switch (ev->u.get_report.rtype) {
>         case UHID_FEATURE_REPORT:
>                 hdr = HIDP_TRANS_GET_REPORT | HIDP_DATA_RTYPE_FEATURE;
>                 break;
> @@ -660,21 +660,21 @@ static void hidp_send_get_report(struct uhid_event *ev, void *user_data)
>                 hdr = HIDP_TRANS_GET_REPORT | HIDP_DATA_RTYPE_INPUT;
>                 break;
>         case UHID_OUTPUT_REPORT:
> -               hdr = HIDP_TRANS_GET_REPORT | HIDP_DATA_RTYPE_OUPUT;
> +               hdr = HIDP_TRANS_GET_REPORT | HIDP_DATA_RTYPE_OUTPUT;
>                 break;
>         default:
> -               DBG("Unsupported HID report type %u", ev->u.feature.rtype);
> +               DBG("Unsupported HID report type %u", ev->u.get_report.rtype);
>                 return;
>         }
>
> -       sent = hidp_send_ctrl_message(idev, hdr, &ev->u.feature.rnum,
> -                                               sizeof(ev->u.feature.rnum));
> +       sent = hidp_send_ctrl_message(idev, hdr, &ev->u.get_report.rnum,
> +                                               sizeof(ev->u.get_report.rnum));
>         if (sent) {
>                 idev->report_req_pending = hdr;
>                 idev->report_req_timer =
>                         g_timeout_add_seconds(REPORT_REQ_TIMEOUT,
>                                                 hidp_report_req_timeout, idev);
> -               idev->report_rsp_id = ev->u.feature.id;
> +               idev->report_rsp_id = ev->u.get_report.id;
>         }
>  }
>
> @@ -909,7 +909,8 @@ static int uhid_connadd(struct input_device *idev, struct hidp_connadd_req *req)
>         }
>
>         bt_uhid_register(idev->uhid, UHID_OUTPUT, hidp_send_set_report, idev);
> -       bt_uhid_register(idev->uhid, UHID_FEATURE, hidp_send_get_report, idev);
> +       bt_uhid_register(idev->uhid, UHID_GET_REPORT, hidp_send_get_report,
> +                                                                       idev);
>
>         idev->uhid_created = true;
>
> diff --git a/profiles/input/hidp_defs.h b/profiles/input/hidp_defs.h
> index 5dc479acf..bb9231dbb 100644
> --- a/profiles/input/hidp_defs.h
> +++ b/profiles/input/hidp_defs.h
> @@ -63,7 +63,7 @@
>  #define HIDP_DATA_RSRVD_MASK                   0x0c
>  #define HIDP_DATA_RTYPE_OTHER                  0x00
>  #define HIDP_DATA_RTYPE_INPUT                  0x01
> -#define HIDP_DATA_RTYPE_OUPUT                  0x02
> +#define HIDP_DATA_RTYPE_OUTPUT                 0x02
>  #define HIDP_DATA_RTYPE_FEATURE                        0x03
>
>  /* HIDP protocol header parameters */
> --
> 2.28.0.163.g6104cc2f0b6-goog

Applied, thanks.

-- 
Luiz Augusto von Dentz

      parent reply	other threads:[~2020-08-03 20:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-03  6:52 [Bluez PATCH v2 1/3] input/device: Replace UHID_FEATURE with UHID_GET_REPORT Archie Pusaka
2020-08-03  6:52 ` [Bluez PATCH v2 2/3] input/device: Implement handle for UHID_SET_REPORT Archie Pusaka
2020-08-03  6:52 ` [Bluez PATCH v2 3/3] input/device: Send UHID_DESTROY upon disconnection Archie Pusaka
2020-08-03 20:01 ` Luiz Augusto von Dentz [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=CABBYNZ+enHjri-aMrWcur5V+EWDRWj9b5Zmwp4v4ijDpYN7m4A@mail.gmail.com \
    --to=luiz.dentz@gmail.com \
    --cc=abhishekpandit@chromium.org \
    --cc=alainm@chromium.org \
    --cc=apusaka@chromium.org \
    --cc=apusaka@google.com \
    --cc=chromeos-bluetooth-upstreaming@chromium.org \
    --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).