All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
To: Roderick Colenbrander <roderick@gaikai.com>
Cc: Simon Wood <simon@mungewell.org>,
	linux-input@vger.kernel.org, Jiri Kosina <jikos@kernel.org>,
	Tim Bird <tim.bird@am.sony.com>,
	Roderick Colenbrander <roderick.colenbrander@sony.com>
Subject: Re: [PATCH 5/5] HID: sony: Handle multiple touch events input record
Date: Fri, 7 Oct 2016 18:02:19 +0200	[thread overview]
Message-ID: <20161007160219.GF30411@mail.corp.redhat.com> (raw)
In-Reply-To: <CANndSK=p2r-P_mDZFEhKjUB1R9f9_vxrav9Aekdez87HYQCQ9A@mail.gmail.com>

On Oct 05 2016 or thereabouts, Roderick Colenbrander wrote:
> On Wed, Oct 5, 2016 at 8:29 AM, Simon Wood <simon@mungewell.org> wrote:
> > On Wed, October 5, 2016 2:35 am, Benjamin Tissoires wrote:
> >> On Oct 04 2016 or thereabouts, Roderick Colenbrander wrote:
> >
> >>> +            /*
> >>> +             * The first 7 bits of the first byte is a counter and bit 8 is
> >>> +             * a touch indicator that is 0 when pressed and 1 when not
> >>> +             * pressed.
> >>> +             * The next 3 bytes are two 12 bit touch coordinates, X and Y.
> >>> +             * The data for the second touch is in the same format and
> >>> +             * immediately follows the data for the first.
> >>> +             */
> >>> +            for (n = 0; n < 2; n++) {
> >>> +                    u16 x, y;
> >>> +                    bool active;
> >>> +
> >>> +                    x = rd[offset+1] | ((rd[offset+2] & 0xF) << 8);
> >>> +                    y = ((rd[offset+2] & 0xF0) >> 4) | (rd[offset+3] << 4);
> >>> +
> >>> +                    active = !(rd[offset] >> 7);
> >>> +                    input_mt_slot(input_dev, n);
> >>>
> >>
> >> Just to be sure, the device reports 2 touches only, and the
> >> "num_touch_data" chunks are just the history of these 2 touches, the
> >> last chunk being the last known touches?
> >
> > FYI - Community knowledge/understanding...
> > http://www.psdevwiki.com/ps4/DS4-BT#HID_INPUT_reports
> >
> > Simon
> >
> 
> Hi Ben and Simon,
> 
> Correct, the DS4 sends a touch history. The last element is the
> latest. An input report can contain multiple touch samples, because
> the device internally samples at a rate which is higher than at which
> it generates HID reports. On USB you can easily see multiple touch
> events and it is even easier on Bluetooth (especially if it is set to
> a low frequency). The extra history is important for gestures.

OK, so if it's important, you need to actually send it by adding
input_mt_sync_frame() and input_sync() calls. Otherwise, the values will
just get mangled by the kernel in evdev and everything happens as if you
just sent the last pair in the history.

The first 4 patches are IMO mergeable, but this one will need a little
bit more polish to actually forward the events.

Cheers,
Benjamin

> 
> Thanks,
> Roderick

  reply	other threads:[~2016-10-07 16:02 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-05  2:58 [PATCH 0/5] HID: sony: game controller updates Roderick Colenbrander
2016-10-05  2:58 ` [PATCH 1/5] HID: sony: Fix race condition in sony_probe Roderick Colenbrander
2016-10-05  2:58 ` [PATCH 2/5] HID: sony: Adjust HID report size name definitions Roderick Colenbrander
2016-10-05  2:58 ` [PATCH 3/5] HID: sony: Perform CRC check on bluetooth input packets Roderick Colenbrander
2016-10-05  8:24   ` Benjamin Tissoires
2016-10-05  2:58 ` [PATCH 4/5] HID: sony: Send ds4 output reports on output end-point Roderick Colenbrander
2016-10-05  8:31   ` Benjamin Tissoires
2016-10-05 16:54     ` Frank Praznik
2016-10-05 17:35       ` Simon Wood
2016-10-05 20:35         ` Frank Praznik
2016-10-07 15:56           ` Benjamin Tissoires
2016-10-05 18:53       ` Roderick Colenbrander
2016-10-05  2:58 ` [PATCH 5/5] HID: sony: Handle multiple touch events input record Roderick Colenbrander
2016-10-05  8:35   ` Benjamin Tissoires
2016-10-05 15:29     ` Simon Wood
2016-10-05 17:25       ` Roderick Colenbrander
2016-10-07 16:02         ` Benjamin Tissoires [this message]
2016-10-18 23:27           ` Roderick Colenbrander
2016-10-31  8:21             ` Benjamin Tissoires

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=20161007160219.GF30411@mail.corp.redhat.com \
    --to=benjamin.tissoires@redhat.com \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=roderick.colenbrander@sony.com \
    --cc=roderick@gaikai.com \
    --cc=simon@mungewell.org \
    --cc=tim.bird@am.sony.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.