qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: avg.tolik@gmail.com, Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH 07/17] wctablet: operate on line speed 9600
Date: Fri,  6 Jan 2017 09:55:35 +0100	[thread overview]
Message-ID: <1483692945-9866-8-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1483692945-9866-1-git-send-email-kraxel@redhat.com>

Ignore all input unless line speed is 9600.  This makes line speed
detection work correctly and alot more reliable.

Also drop the reset counter, this served as workaround for the lack of
proper line speed handling and is not needed any more.

The guest sends the reset sequence multiple times with different speeds
to figure what the line speed is.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 backends/wctablet.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/backends/wctablet.c b/backends/wctablet.c
index 4d14e96..84fb485 100644
--- a/backends/wctablet.c
+++ b/backends/wctablet.c
@@ -97,10 +97,8 @@ uint8_t WC_FULL_CONFIG_STRING[61] = {
     0x0a, 0x45, 0x37, 0x29
 };
 size_t WC_FULL_CONFIG_STRING_LENGTH = 61;
-int count = 0;
 int COMMON_SPEAD = 900 * 1000;
 
-
 // This structure is used to save private info for Wacom Tablet.
 typedef struct {
     struct QEMUTimer *transmit_timer;
@@ -170,6 +168,10 @@ static void wctablet_event(void *opaque, int x,
     // uint8_t codes[8] = { 0xe0, 0x05, 0x6a, 0x00, 0x06, 0x64, 0x40 };
     // uint8_t codes[8] = { 0xa0, 0x1c, 0x29, 0x00, 0x19, 0x1c, 0x00 };
 
+    if (tablet->line_speed != 9600) {
+        return;
+    }
+
     DPRINTF("x= %d; y= %d; buttons=%x\n", x, y, buttons_state);
     int newX = x * 0.1537;
     int nexY = y * 0.1152;
@@ -225,6 +227,9 @@ static int wctablet_chr_write(struct CharDriverState *s,
     TabletState *tablet = (TabletState *) s->opaque;
     uint8_t i, input;
 
+    if (tablet->line_speed != 9600) {
+        return len;
+    }
     for (i = 0; i < len && tablet->query_index < sizeof(tablet->query) - 1; i++) {
         tablet->query[tablet->query_index++] = buf[i];
     }
@@ -242,12 +247,8 @@ static int wctablet_chr_write(struct CharDriverState *s,
 
     int comm = wctablet_check_command(tablet->query, tablet->query_index);
 
-    if (comm == 1) {
-        count++;
-    }
-
     if (comm != -1) {
-        if (comm == 1 && count == 2) {
+        if (comm == 1) {
             wctablet_queue_output(tablet, WC_MODEL_STRING,
                                   WC_MODEL_STRING_LENGTH);
         }
-- 
1.8.3.1

  parent reply	other threads:[~2017-01-06  8:56 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06  8:55 [Qemu-devel] [PATCH 00/17] add serial wacom tablet emulation (gsoc 2016) Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 01/17] Add wctablet device Gerd Hoffmann
2017-01-06 13:15   ` Eric Blake
2017-01-06  8:55 ` [Qemu-devel] [PATCH 02/17] wctablet: add wctablet_queue_output helper Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 03/17] wctablet: save all chars in the query buffer Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 04/17] wctablet: drop wctablet_commands_names Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 05/17] wctablet: strip leading \r + \n from buffer Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 06/17] wctablet: track line speed, reset on speed changes Gerd Hoffmann
2017-01-06  8:55 ` Gerd Hoffmann [this message]
2017-01-06  8:55 ` [Qemu-devel] [PATCH 08/17] wctablet: drop debug code from wctablet_handler Gerd Hoffmann
2017-01-06 13:17   ` Eric Blake
2017-01-09  7:50     ` Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 09/17] wctablet: add wctablet_shift_input Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 10/17] wctablet: move init/detect sequence Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 11/17] wctablet: revamp command parser Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 12/17] wctablet: drop timer, hook into chr->accept_input instead Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 13/17] wctablet: drop DPRINTF, add trace events instead Gerd Hoffmann
2017-01-06 13:19   ` Eric Blake
2017-01-06  8:55 ` [Qemu-devel] [PATCH 14/17] wctablet: misc cleanups Gerd Hoffmann
2017-01-06 13:19   ` Eric Blake
2017-01-06  8:55 ` [Qemu-devel] [PATCH 15/17] wctablet: switch to new input interface Gerd Hoffmann
2017-01-06  8:55 ` [Qemu-devel] [PATCH 16/17] wctablet: update file comment Gerd Hoffmann
2017-01-06 13:20   ` Eric Blake
2017-01-06  8:55 ` [Qemu-devel] [PATCH 17/17] wctablet: implement ST and SP commands Gerd Hoffmann
2017-01-06  9:22 ` [Qemu-devel] [PATCH 00/17] add serial wacom tablet emulation (gsoc 2016) no-reply

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=1483692945-9866-8-git-send-email-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=avg.tolik@gmail.com \
    --cc=qemu-devel@nongnu.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).