void HID_CtrlSetupSetReport(void * pVoid) { S_DRVUSB_DEVICE *psDevice = (S_DRVUSB_DEVICE *)((S_HID_DEVICE *)pVoid)->device; if(psDevice->au8Setup[3] == 1) { /* Report Type = input */ // Trigger next Control Out DATA1 Transaction. _DRVUSB_SET_EP_TOG_BIT(1, FALSE); _DRVUSB_TRIG_EP(1, 0); } else if (psDevice->au8Setup[3] == 2) { _DRVUSB_SET_EP_TOG_BIT(1, FALSE); _DRVUSB_TRIG_EP(1, 0x00); } else if (psDevice->au8Setup[3] == 3) { /* Request Type = Feature */ _DRVUSB_SET_EP_TOG_BIT(1, FALSE); _DRVUSB_TRIG_EP(1, 0x00); } else { // Not support. Reply STALL. _HID_CLR_CTRL_READY_AND_TRIG_STALL(); } }
void HID_CtrlSetupGetReport(void * pVoid) { S_DRVUSB_DEVICE *psDevice = (S_DRVUSB_DEVICE *)((S_HID_DEVICE *)pVoid)->device; DBG_PRINTF("HID - Get Report"); if (psDevice->au8Setup[3] == 3) { /* Request Type = Feature */ const uint8_t au8Data[2] = {0x01, 0x02}; gpu8UsbBuf = au8Data; gu32BytesInUsbBuf = 0; DrvUSB_DataIn(0, au8Data, 2); } else { DBG_PRINTF(" - Unknown\n"); _HID_CLR_CTRL_READY_AND_TRIG_STALL(); } }
// 21 09 02 03 02 00 03 00 (Report ID = 0x02) // 02(ID) 02(MODE) 78(contact ID) // void HID_CtrlSetupSetReport(void * pVoid) { S_DRVUSB_DEVICE *psDevice = (S_DRVUSB_DEVICE *)((S_HID_DEVICE *)pVoid)->device; DBG_PRINTF("HID - Set Report"); if (psDevice->au8Setup[3] == HID_RPT_TYPE_INPUT) { /* Report Type = input */ // _DRVUSB_SET_EP_TOG_BIT(1,FALSE); // _DRVUSB_TRIG_EP(1, 0x00); DBG_PRINTF(" - Input\n"); } else if (psDevice->au8Setup[3] == HID_RPT_TYPE_OUTPUT) { /* Report Type = Output */ // _DRVUSB_SET_EP_TOG_BIT(1,FALSE); // _DRVUSB_TRIG_EP(1,0x00); DBG_PRINTF(" - Output\n"); } else if (psDevice->au8Setup[3] == HID_RPT_TYPE_FEATURE) { /* Request Type = Feature */ DrvUSB_DataOutTrigger(CTRL_EP_NUM, HID_MAX_PACKET_SIZE_EP0); DBG_PRINTF(" - Feature\n"); } else { // Not support. Reply STALL. DBG_PRINTF(" - Unknown\n"); _HID_CLR_CTRL_READY_AND_TRIG_STALL(); } DBG_PRINTF("\n"); }