This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

is multi touch HID possible with nrf51822 chip?

Hi All,

       Currently i am working on nrf51822 for multi touch HID.For that i have chosen mouse HID example as a reference, in which i have changed HID descriptor(single touch) and some other things.So, that single touch has been working.

And, if i changed the HID descriptor for multi touch, touch devices(touch laptop) were showing "Bluetooth driver error".

is it possible multi touch HID over nrf51822 as a reference of mouse HID example?

if possible, what all changes are to be required to work for multi touch.

so, please guide me how to implement multi touch HID over nrf51822.

regards

akash.

Parents Reply Children
  • Thanks for your precious reply.

    yes, i have gone through windows multi touch HID, but didn't work for me.

    so, i have taken one more multi touch HID, which has been working over USB.

    if i emulated same HID into Bluetooth stack, it was not working.

    here, i am attaching my HID

    0x05, 0x0D, // Usage Page (Digitizer)
    0x09, 0x04, // Usage (Touch Screen)
    0xA1, 0x01, // Collection (Application)
    0x09, 0x22, // Usage (Finger)
    0xA1, 0x02, // Collection (Logical)
    0x09, 0x42, // Usage (Tip Switch)
    0x15, 0x00, // Logical Minimum (0)
    0x25, 0x01, // Logical Maximum (1)
    0x75, 0x01, // Report Size (1)
    0x95, 0x01, // Report Count (1)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x09, 0x30, // Usage (Tip Pressure)
    0x25, 0x7F, // Logical Maximum (127)
    0x75, 0x07, // Report Size (7)
    0x95, 0x01, // Report Count (1)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x09, 0x51, // Usage (0x51)
    0x26, 0xFF, 0x00, // Logical Maximum (255)
    0x75, 0x08, // Report Size (8)
    0x95, 0x01, // Report Count (1)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
    0x09, 0x30, // Usage (X)
    0x09, 0x31, // Usage (Y)
    0x26, 0xFF, 0x7F, // Logical Maximum (32767)
    0x65, 0x00, // Unit (None)
    0x75, 0x10, // Report Size (16)
    0x95, 0x02, // Report Count (2)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0xC0, // End Collection
    0x05, 0x0D, // Usage Page (Digitizer)
    0x27, 0xFF, 0xFF, 0x00, 0x00, // Logical Maximum (65534)
    0x75, 0x10, // Report Size (16)
    0x95, 0x01, // Report Count (1)
    0x09, 0x56, // Usage (0x56)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x09, 0x54, // Usage (0x54)
    0x25, 0x05, // Logical Maximum (12)
    0x75, 0x08, // Report Size (8)
    0x95, 0x01, // Report Count (1)
    0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x05, 0x0D, // Usage Page (Digitizer)
    0x09, 0x55, // Usage (0x55)
    0x25, 0x0A, // Logical Maximum (12)
    0x75, 0x08, // Report Size (8)
    0x95, 0x01, // Report Count (1)
    0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
    0xC0, // End Collection

    is there any changes are to be required in code(like feature report, input report,output report)?

    because, single touch has been working without adding any feature reports and output reports.

    regards,

    akash.

  • Hi Akash

    Have you had any progress with this lately? 

    I am sorry for not getting back to you sooner. I have been quite busy with other tasks, and so far my attempts at setting up a similar HID report has been unsuccessful. 

    I will do my best to get back to you next week with a working HID report. 

    Best regards
    Torbjørn

  • Hi Ovrebekk

    I have also been working on HID to get it work, but couldn't get any break through.

    Regards

    akash

  • Hi Akash

    Still no luck?

    I am able to pair a kit to my phone using a descriptor very similar to yours, but I don't know what data I should send to test it out. 

    Do you have some sample data sets I could use to test this?
    If for instance you want to activate two touch points at the same time, what is the recommended sequence of events?

    Do you know about any off the shelf BLE devices that implement multi touch over HID that could be used as a reference point?

    Best regards
    Torbjørn

  • Hi Ovrebekk

    I was on leave for last week, since couldn't give reply.

    I have tested 5 touches over USB.

    Here, How i am sending data...

    void send (uint8_t i, uint16_t x, uint16_t y)
    {
    uint8_t my_buff1[10] = {0};

    my_buff[0] = 0xff;
    my_buff[1] = i;

    my_buff[2] = (x & 0x00ff);
    my_buff[3] = ((x >> 8) & 0xff);

    my_buff[4] = (y & 0xff);
    my_buff[5] = ((y >> 8) & 0xff);

    my_buff[6] = 0x64;
    my_buff[7] = 0x00;

    my_buff[8] = 0x06;

    // sprintf (my_buff1,"%d\r\n",my_buff[0]);
    // HAL_UART_Transmit (&huart2,&my_buff1[i],sizeof (my_buff1),100);

    USBD_CUSTOM_HID_SendReport (&hUsbDeviceFS,
    my_buff,
    9);
    USBD_LL_Delay (100);
    }

    Above wrapper is for constructing the packet.Like this i am sending 5 packets with different touch id(i value 0 to 4), 

    x and y values.(x and y are up to 10,000).

    If i construct same packet and send over Bluetooth, i have been not getting even a single touch also. 

    I have got a reference of working multi touch, but it has been working on teensy modules.

    please go through following link...

    https://github.com/PaulStoffregen/cores/tree/master/teensy3

    so, if u get any break through please let me know, that could be helped me a lot.

    best regards

    akash.

Related