Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

why HID touch device can works on android but can't work on IOS?nRF52832 ,ble_app_hids_keyboard example,SDK 13.0.0,s132

hi,

I use 52832 to implement the HID touch device,It can works on android but can't works on IOS?why

//my report descritor
	static uint8_t report_map_data[] =
	{   
		///µÚ1¸öµã
		0x05, 0x0d, // USAGE_PAGE (Digitizers) ///global item
		0x09, 0x04, // USAGE (Touch Screen) ///local item
		0xa1, 0x01, // COLLECTION (Application) ///main item
		
		0x85, 0x01, // REPORT_ID (Touch) ///local item             ///report id  ///data[0]
		
		0x09, 0x22, // USAGE (Finger)   ///local item              ???
		0xa1, 0x02, // COLLECTION (Logical) ///main item
		0x09, 0x42, // USAGE (Tip Switch) ///local item  tip switch   ???
		0x15, 0x00, // LOGICAL_MINIMUM (0) ///global item
		0x25, 0x01, // LOGICAL_MAXIMUM (1) ///global  item
		0x75, 0x01, // REPORT_SIZE (1) ///global  item
		0x95, 0x01, // REPORT_COUNT (1) ///global  item
		0x81, 0x02, // INPUT (Data,Var,Abs) ///main  item   ///data[1]---bit1
		
		0x09, 0x32, // USAGE (In Range) ///local item
		0x81, 0x02, // INPUT (Data,Var,Abs) ///main  item  ///data[1]---bit2
		
		0x95, 0x06, // REPORT_COUNT (6)  ///global  item
		0x81, 0x03, // INPUT (Cnst,Ary,Abs) ///main  item ///data[1]---bit7~bit3
		0x75, 0x08, // REPORT_SIZE (8)  ///global   item
		0x09, 0x51, // USAGE (Contact Identifier) ///local  item 
		0x95, 0x01, // REPORT_COUNT (1) ///local  item
		0x81, 0x02, // INPUT (Data,Var,Abs)  ///main item      ///data[2]
		
		0x05, 0x01, // USAGE_PAGE (Generic Desktop)  ///global  item
		0x15, 0x00,        //LOGICAL_MINIMUM(0)  ///global  item             /// .1
		0x26, 0xff, 0x0f, // LOGICAL_MAXIMUM (4095)  ///global  item         /// .2 
		0x75, 0x10, // REPORT_SIZE (16)  ///local  item
		0x55, 0x00, // UNIT_EXPONENT (0)  ///local  item
		0x65, 0x00, // UNIT (None) ///local  item
		0x09, 0x30, // USAGE (X)  ///local  item
		0x35, 0x00, // PHYSICAL_MINIMUM (0)  ///global  item
		0x46, 0xff, 0x0f,///18.11.30  // PHYSICAL_MAXIMUM (4095) ///global item       ///1080///ĬÈÏÊúÆÁx///¶ÔÓ¦ºáÆÁy
		0x81, 0x02, // INPUT (Data,Var,Abs) ///main item   ///data[3] data[4]
		0x09, 0x31, // USAGE (Y)  ///local  item  
		0x26, 0xff, 0x0f,///18.11.30                                                ///2244///2244///ĬÈÏÊúÆÁy///¶ÔÓ¦ºáÆÁx
		0x46, 0xff, 0x0f,///18.11.30
		0x81, 0x02, // INPUT (Data,Var,Abs) ///main  item  ///data[5]  data[6]
		0xc0,            // END_COLLECTION  ///main item
	}
//send the report to app	
void AndroidHid_Notify_Key(ble_hids_t m_hids)
{
	ipRepVal[1] = TOUCH_DOWN; // down
	
	if (abs_hor < 10000)
	{
		abs_hor += 20;
		abs_ver += 20;
	} 
	else 
	{
		ipRepVal[1] = TOUCH_UP; // up
	}
	
	ipRepVal[0]=HID_TOUCH_RPT_ID;
	ipRepVal[2]=0x00;
	
	ipRepVal[3] = abs_hor%256;
	ipRepVal[4] = abs_hor/256;
	ipRepVal[5] = abs_ver%256;
	ipRepVal[6] = abs_ver/256;

	if (ipRepVal[1] == TOUCH_UP)
	{
		abs_hor = 0;
		abs_ver = 0;
	}
	
	ble_hids_inp_rep_send(&m_hids, 0, 7, ipRepVal);		
}

Related