Hid: Feature report

Status
Not open for further replies.

ProBoDiS

Member
Hi!
I'm trying to implement touch screen device on Teensy 3.1 in the Arduino IDE.
I need to recognize two contacts. However, Windows recognizes only one contact now(the second is ignored).
I use this Report description:
HTML:
    0x05, 0x0D,           // USAGE_PAGE (Digitizers)          
    0x09, 0x04,           // USAGE (Touch Screen)             
    0xA1, 0x01,           // COLLECTION (Application)         
    0x85, 0x01,           	//   REPORT_ID (Touch)                 
    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)       
    // 0x09, 0x32,          		//       USAGE (In Range)             
    // 0x81, 0x02,           		//       INPUT (Data,Var,Abs)         
    0x95, 0x07,           		//       REPORT_COUNT (7)     
    0x81, 0x03,           		//       INPUT (Cnst,Ary,Abs)         
    0x75, 0x08,           		//       REPORT_SIZE (8)
    0x09, 0x51,           		//       USAGE (Contact Identifier)  
    0x95, 0x01,           		//       REPORT_COUNT (1)              
    0x81, 0x02,           		//       INPUT (Data,Var,Abs)       
    0x05, 0x01,           		//       USAGE_PAGE (Generic Desk..
    0x26, 0xFF, 0x0F,     		//       LOGICAL_MAXIMUM (4095)         
    0x75, 0x10,           		//       REPORT_SIZE (16)             
    0x55, 0x00,           		//       UNIT_EXPONENT (0)           
    0x65, 0x00,           		//       UNIT (None)                  
    0x09, 0x30,           		//       USAGE (X)                    
    0x35, 0x00,           		//       PHYSICAL_MINIMUM (0)         
    0x46, 0x00, 0x00,     		//       PHYSICAL_MAXIMUM (0)         
    0x81, 0x02,           		//       INPUT (Data,Var,Abs)        
    0x26, 0xFF, 0x0B,     		//       LOGICAL_MAXIMUM (3071)      
    0x09, 0x31,           		//       USAGE (Y)                    
    0x81, 0x02,           		//       INPUT (Data,Var,Abs)          
    0xC0,                 	//   END_COLLECTION
    0x05, 0x0D,           	//   USAGE_PAGE (Digitizers)    
    0x09, 0x54,           	//   USAGE (Actual count)
    0x95, 0x01,           	//   REPORT_COUNT (1)
    0x75, 0x08,           	//   REPORT_SIZE (8)    
    0x81, 0x02,           	//   INPUT (Data,Var,Abs)            
    0x85, 0x02,           	//   REPORT_ID (Feature)                   
    0x09, 0x55,           	//   USAGE(Maximum Count)
    0x25, 0x02,           	//   LOGICAL_MAXIMUM (2)
    0xB1, 0x02,           	//   FEATURE (Data,Var,Abs)    
    0xC0                  // END_COLLECTION
As I understand it, to recognize the two contacts I have to specify the maximum number of contacts with REPORT ID #2(FEATURE (Data,Var,Abs)).
And it should be sent only on request from the host, right?
But I don't understand how to implement the answer report_id #2? As the function will help to know that it came this request?
 
Status
Not open for further replies.
Back
Top