? ?請問在CH582芯片上將藍(lán)牙觸摸屏例程移植到復(fù)合HID設(shè)備中,在電腦上可以用,安卓設(shè)備上無法使用是什么原因。描述符如下:
/* 多媒體 */
? ? 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);
}