Touch screen interface (Android)


#1

Hi guys,
In automotive environment we have an external resistive touch screen with unusual (through the CAN bus) data protocol. We’re putting a MCU to process the CAN frames and convert them into something standard. There are 3 options as we can see.

  1. Connect the MCU as HID touch screen to 410c’s USB.
  2. Connect the MCU as serial touch (just send the touch data through UART lines to 410c)
  3. The last solution would be to use the event interface and generate touch events… Something like listen UART port and inject the data into event0 pipe.

Technically there is another option, our MCU can be configured as i2c slave device so, theoretically we could emulate Synaptics touch screen data. But we would prefer explore the simple solutions first.

We tried the first solution. It works but when touching the screen a mouse pointer appears for a short period the disappears. Tried different HID descriptors and still having the same issue, mouse pointer or finger circle still always present for 1 sec at least. It looks like all descriptors are based on same digitizer approach with tip/finger operation.
Unfortunately we don’t have any “true” USB touch screen that works out of box with 410c board so we can get the right descriptor. If anyone has the descriptor which works properly please don’t hesitate to share it :slight_smile:

Now we’re trying the second approach, using the serial data. Do you know what would be the “standard” serial data format supported by 410c and how to enable the corresponding driver?

Thank you!


#2

Hi @dim.sh

I am using a WaveShare 7inch display https://www.arrow.com/en/products/96boards-display-7/linksprite-technologies-inc and it uses USB to communicate touch with the DragonBoard. It works great with Linaro Debian Linux 17.04.1, and the cursor is on all the time. Based on your symptoms I believe you are running Android on the DragonBoard. The disappearing cursor is a function of Android, not the HID device. My skills with Android are very low and I am not sure how you change the default behavior of Android to keep he cursor displayed at all times. Since you are creating your own Touch screen controller, have you considered adding some code to the controller to periodically ‘wiggle’ the pointer if there is no activity? Move one pixel left, and then back one pixel right, this should keep Android thinking that the pointer is still active.

Full disclosure: I am an employee of Qualcomm Canada, any opinions I may have expressed in this or any other post my not reflect the opinions of my employer.


#3

Hi,

In fact, we’d like to remove the mouse pointer completely. Actually it’s showing for a half of second when the touch is detected and processed. I believe this is because the HID descriptor we’re using is not a true touch screen descriptor but based on digitizer input device class (0x05, 0x0D //Usage page (digitizers)). So technically is something like as we’re using a stylus and I think this kind of stylus has the mouse properties. It’s not a blocking issue but we’d like to provide a natural touch experience, if this is possible, of course.
Is there any way to disable the pointer somewhere in Android sources, eventually for this class of devices?

Thanks again!