请问在CH582芯片上将蓝牙触摸屏例程移植到复合HID设备中,在电脑上可以用,安卓设备上无法使用是什么原因。描述符如下:
/* 多媒体 */
0x05, 0x0C, 0x09, 0x01, 0xA1, 0x01,
0x85, HID_RPT_ID_CONSUMER_IN, 0x05, 0x0C, 0x19, 0x00, 0x2A, 0xFF, 0x03,
0x95, 0x01, 0x75, 0x10, 0x15, 0x00, 0x26, 0xFF, 0x03, 0x81, 0x00,
0x05, 0x07, 0x19, 0x00, 0x29, 0xFF, 0x75, 0x08, 0x26, 0xFF, 0x00, 0x81, 0x00, 0x81, 0x01,
0x06, 0x00, 0xFF, 0x0A, 0x03, 0xFE, 0x0A, 0x04, 0xFE, 0x75, 0x01, 0x95, 0x02, 0x25, 0x01, 0x81, 0x02,
0x0A, 0x05, 0xFF, 0x95, 0x01, 0x75, 0x05, 0x25, 0x1F, 0x81, 0x02,
0x75, 0x01, 0x81, 0x01, 0x1A, 0x01, 0xFD, 0x2A, 0xFF, 0xFD, 0x15, 0x01,
0x26, 0xFF, 0x00, 0x75, 0x08, 0x81, 0x00, 0x0A, 0x02, 0xFF, 0x26, 0xFF, 0x00, 0x15, 0x00, 0x81, 0x02, 0xC0,
/* 触摸屏 */
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x04, // Usage (Touch Screen)
0xA1, 0x01, // Collection (Application)
0x85, HID_RPT_ID_MOUSE_IN, /* REPORT_ID (01) */
0x05, 0x0D, // Usage Page (Digitizer)
0x09, 0x22, // Usage (Finger)
0xA1, 0x02, // Collection (Logical)
0x05, 0x0D, // Usage Page (Digitizer)
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, Variable, Absolute)
0x75, 0x07, // Report Size............. (7)
0x95, 0x01, // Report Count............ (1)
0x81, 0x01, // Input...................(Constant)
0x09, 0x51, /* USAGE (Contact Identifier) */
0x75, 0x08, // Report Size............. (8)
0x95, 0x01, // Report Count............ (1)
0x81, 0x02, // Input...................(Data, Variable, Absolute)
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x30, // Usage (X)
0x15, 0x00, // Logical Minimum......... (0)
/*48 49 50*/
0x26, (uint8_t)DEF_DESKTOP_X_MAX, (uint8_t)(DEF_DESKTOP_X_MAX >> 8), /* LOGIC_MAX (0X0800) */
0x75, 0x10, // Report Size............. (16)
0x95, 0x01, // Report Count............ (1)
0x81, 0x02, // Input...................(Data, Variable, Absolute)
0x09, 0x31, // Usage (Y)
0x15, 0x00, // Logical Minimum......... (0)
/*61 62 63*/
0x26, (uint8_t)DEF_DESKTOP_Y_MAX, (uint8_t)(DEF_DESKTOP_Y_MAX >> 8), /* LOGIC_MAX (0X0800) */
0x75, 0x10, // Report Size............. (16) 64 65
0x95, 0x01, // Report Count............ (1) 66 67
0x81, 0x02, // Input...................(Data, Variable, Absolute) 68 69
0xC0, // End Collection 70
0xc0,
/* 键盘*/
0x05, 0x01, // Usage Pg (Generic Desktop)
0x09, 0x06, // Usage (Keyboard)
0xA1, 0x01, // Collection: (Application)
0x85, HID_RPT_ID_KEY_IN, // ReportID (1)
//
0x05, 0x07, // Usage Pg (Key Codes)
0x19, 0xE0, // Usage Min (224)
0x29, 0xE7, // Usage Max (231)
0x15, 0x00, // Log Min (0)
0x25, 0x01, // Log Max (1)
//
// Modifier byte
0x75, 0x01, // Report Size (1)
0x95, 0x08, // Report Count (8)
0x81, 0x02, // Input: (Data, Variable, Absolute)
//
// Reserved byte
0x95, 0x01, // Report Count (1)
0x75, 0x08, // Report Size (8)
0x81, 0x01, // Input: (Constant)
// LED report
0x95, 0x05, // Report Count (5)
0x75, 0x01, // Report Size (1)
0x05, 0x08, // Usage Pg (LEDs)
0x19, 0x01, // Usage Min (1)
0x29, 0x05, // Usage Max (5)
0x91, 0x02, // Output: (Data, Variable, Absolute)
//
// LED report padding
0x95, 0x01, // Report Count (1)
0x75, 0x03, // Report Size (3)
0x91, 0x01, // Output: (Constant)
// Key arrays (6 bytes)
0x95, 0x06, // Report Count (6)
0x75, 0x08, // Report Size (8)
0x15, 0x00, // Log Min (0)
0x25, 0x65, // Log Max (101)
0x05, 0x07, // Usage Pg (Key Codes)
0x19, 0x00, // Usage Min (0)
0x29, 0x65, // Usage Max (101)
0x81, 0x00, // Input: (Data, Array)
//
0xC0, // End Collection
void hidEmuSendTouchReport(uint8_t *data)
{
uint8_t buf[6];
buf[0] = data[1]; // touch or not
buf[1] = 1; // touch ID
buf[2] = data[2]; // X axis data low 8bit
buf[3] = data[3]; // X axis data high 8bit
buf[4] = data[4]; // Y axis data low 8bit
buf[5] = data[5]; // Y axis data high 8bit
HidDev_Report(HID_RPT_ID_MOUSE_IN, HID_REPORT_TYPE_INPUT,
6, buf);
}