<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/47592/multitouch-usb-to-hid-over-bluetooth</link><description>Hey guys, i recently bought a nrf52 DK to implement a gateway between a usb touch monitor to a device such as a android or a computer.my approach is recovering the hid raw frame with a raspberry pi and send it by uart to the bluetooth module, and put</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 27 May 2019 08:52:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/47592/multitouch-usb-to-hid-over-bluetooth" /><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/189238?ContentTypeID=1</link><pubDate>Mon, 27 May 2019 08:52:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8bfda9c4-e872-469a-b54d-9724fdb5c34c</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Since you set report count to 1 it seems you are trying to remove the BUTTONS and MOVEMENT reports, and only use the DIGITIZER report. If that is the case you should probably set the INPUT_REP_DIGITIZER_INDEX to 0 rather than 2, since you only have one report in use.&amp;nbsp;&lt;br /&gt;The INPUT_REP_REF_DIGITIZER_ID should be 1.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you can also send me the content of your&amp;nbsp;hids_init() function it should be easier to verify if everything is set up correctly (feel free to&amp;nbsp;just attach your main.c file directly, then I got everything).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/189007?ContentTypeID=1</link><pubDate>Fri, 24 May 2019 10:01:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:72559bd3-4e8c-4ffd-b401-6b38863be370</guid><dc:creator>speicherspule</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;i&amp;#39;m using last version of SDK,&amp;nbsp;15.3.0.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;i didn&amp;#39;t use the debugger yet,i will try to use it.&lt;/p&gt;
&lt;p&gt;But i believe this part of the code isn&amp;#39;t initialized in the right way:&amp;nbsp;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define INPUT_REPORT_COUNT              1                                           /**&amp;lt; Number of input reports in this application. */
#define INPUT_REP_BUTTONS_LEN           3                                           /**&amp;lt; Length of Mouse Input Report containing button data. */
#define INPUT_REP_MOVEMENT_LEN          3                                           /**&amp;lt; Length of Mouse Input Report containing movement data. */
#define INPUT_REP_DIGITIZER_LEN         62
#define INPUT_REP_BUTTONS_INDEX         0                                           /**&amp;lt; Index of Mouse Input Report containing button data. */
#define INPUT_REP_MOVEMENT_INDEX        1                                           /**&amp;lt; Index of Mouse Input Report containing movement data. */
#define INPUT_REP_DIGITIZER_INDEX       2
#define INPUT_REP_REF_BUTTONS_ID        1                                           /**&amp;lt; Id of reference to Mouse Input Report containing button data. */
#define INPUT_REP_REF_MOVEMENT_ID       2                                           /**&amp;lt; Id of reference to Mouse Input Report containing movement data. */
#define INPUT_REP_REF_DIGITIZER_ID      2                                           /**&amp;lt; Id of reference to Mouse Input Report containing media player data. */
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Would you please point me in the right direction to configure this constants?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/188946?ContentTypeID=1</link><pubDate>Fri, 24 May 2019 06:42:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3aa3fbdd-f9ed-4586-b38b-0db6e421b9a9</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Which SDK version did you use for the example?&lt;/p&gt;
&lt;p&gt;Have you tried running the debugger to trace which part of the code is triggering the fatal error?&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/188945?ContentTypeID=1</link><pubDate>Fri, 24 May 2019 06:42:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eab7f2dc-daad-465c-8eaf-dd0713149699</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This definitely makes more sense &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/188645?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 17:14:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0d3f73a7-edb1-4e41-a946-d4a7809aaa71</guid><dc:creator>speicherspule</dc:creator><description>&lt;p&gt;Attached is my code that i&amp;#39;ve been develop this afternoon. i&amp;#39;ve added data structure and hex hid descriptor and have 2 different pointer positions with the iteration with button0 or button1.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m getting &amp;quot;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;&amp;lt;warning&amp;gt; app: System reset&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;&amp;lt;error&amp;gt; app: Fatal error&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;&lt;br /&gt;when connected by UART.&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/ble_5F00_app_5F00_hids_5F00_mouse.zip"&gt;devzone.nordicsemi.com/.../ble_5F00_app_5F00_hids_5F00_mouse.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/188599?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 13:52:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:47605aa2-eb04-4833-8d56-feaa36e95f4b</guid><dc:creator>speicherspule</dc:creator><description>&lt;p&gt;Dear&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you for quick reply. You&amp;#39;re right, the descriptor is wrong.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Now we have&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1byte for report id&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1byte (3bit value + 5 bis of padding)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2byte x value&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2byte y value&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1 contact identifier byte&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1byte contact counter&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1byte + (1+2+2+1)byte*10 + 1byte =&amp;nbsp; 62 byte&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;//--------------------------------------------------------------------------------
// Digitizer Device Page inputReport 02 (Device --&amp;gt; Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x02 (2)
                                                     // Collection: CA:TouchScreen CL:Finger
  uint8_t  DIG_TouchScreenFingerTipSwitch : 1;       // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange : 1;         // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence : 1;      // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier;   // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX;                    // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY;                    // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_1 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_1 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_1 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_1; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_1;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_1;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_2 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_2 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_2 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_2; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_2;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_2;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_3 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_3 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_3 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_3; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_3;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_3;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_4 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_4 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_4 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_4; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_4;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_4;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_5 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_5 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_5 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_5; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_5;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_5;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_6 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_6 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_6 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_6; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_6;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_6;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_7 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_7 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_7 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_7; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_7;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_7;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_8 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_8 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_8 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_8; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_8;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_8;                  // Usage 0x00010031: Y, Value = 0 to 32767
  uint8_t  DIG_TouchScreenFingerTipSwitch_9 : 1;     // Usage 0x000D0042: Tip Switch, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerInRange_9 : 1;       // Usage 0x000D0032: In Range, Value = 0 to 1
  uint8_t  DIG_TouchScreenFingerConfidence_9 : 1;    // Usage 0x000D0047: Confidence, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  DIG_TouchScreenFingerContactIdentifier_9; // Usage 0x000D0051: Contact Identifier, Value = 0 to 1
  uint16_t GD_TouchScreenFingerX_9;                  // Usage 0x00010030: X, Value = 0 to 32767
  uint16_t GD_TouchScreenFingerY_9;                  // Usage 0x00010031: Y, Value = 0 to 32767
                                                     // Collection: CA:TouchScreen
  uint8_t  DIG_TouchScreenContactCount;              // Usage 0x000D0054: Contact Count, Value = 0 to 10
} inputReport02_t;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;does it make more sense?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multitouch Usb to Hid over bluetooth</title><link>https://devzone.nordicsemi.com/thread/188569?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 12:45:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a76f6cb8-6ba9-49fb-8bdf-8a731e94639b</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I am a bit confused looking at the struct, and comparing it to the numbers you mention (124 char&amp;#39;s and 62 byte data frame).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Correct me if I&amp;#39;m wrong, but the struct sets up 12 similar value groups, each 6 bytes in size (3 one bit values, 5 bits of padding, a one byte contact identifier and two bytes each for X and Y).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then at the end there is one additional byte, which means the full struct should be 12*6 + 1 = 73 bytes in size.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Are there too many touch points defined in the descriptor?&lt;/p&gt;
&lt;p&gt;Do you have an overview of the content of the 124 char UART packet that you are receiving?&lt;br /&gt;From the numbers alone it is hard to see how this should match the data structure that you included.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>