我想在Joystick 的例子上,再添加个Joystick_ConfigDescriptor1 做USB键盘,和Joystick_ConfigDescriptor2 做触摸屏,
当然Joystick_ReportDescriptor也是3个。
在Joystick_Data_Setup()函数中,如下
/*******************************************************************************
* Function Name : Joystick_Data_Setup
* Description : Handle the data class specific requests.
* Input : Request Nb.
* Output : None.
* Return : USB_UNSUPPORT or USB_SUCCESS.
*******************************************************************************/
RESULT Joystick_Data_Setup(u8 RequestNo)
{
u8 *(*CopyRoutine)(u16);
// DEBUG_MSG(USB_DEBUG,"Joystick_Data_Setup");
CopyRoutine = NULL;
if ((RequestNo == GET_DESCRIPTOR)
&& (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
&& (pInformation->USBwIndex0 == 0))
{
DEBUG_MSG(USB_DEBUG,"0000000000000000");
if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
{
CopyRoutine = Joystick_GetReportDescriptor;
}
else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
{
CopyRoutine = Joystick_GetHIDDescriptor;
}
} /* End of GET_DESCRIPTOR */
if ((RequestNo == GET_DESCRIPTOR)
&& (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
&& (pInformation->USBwIndex0 == 1))
{
DEBUG_MSG(USB_DEBUG,"111111111111111111");
if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
{
CopyRoutine = Joystick_GetReportDescriptor1;
}
else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
{
CopyRoutine = Joystick_GetHIDDescriptor1;
}
}/**/// End of GET_DESCRIPTOR
#ifdef USING_TOUCHSCREEN
if ((RequestNo == GET_DESCRIPTOR)
&& (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
&& (pInformation->USBwIndex0 == 2))
{
DEBUG_MSG(USB_DEBUG,"22222222222222222");
if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
{
CopyRoutine = TouchScreen_GetReportDescriptor;
}
else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
{
CopyRoutine = TouchScreen_GetHIDDescriptor;
}
}/**/// End of GET_DESCRIPTOR
#endif
/*** GET_PROTOCOL ***/
if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_PROTOCOL)
{
CopyRoutine = Joystick_GetProtocolValue;
}
if (CopyRoutine == NULL)
{
return USB_UNSUPPORT;
}
pInformation->Ctrl_Info.CopyData = CopyRoutine;
pInformation->Ctrl_Info.Usb_wOffset = 0;
(*CopyRoutine)(0);
return USB_SUCCESS;
}
//end RESULT Joystick_Data_Setup(u8 RequestNo)
pInformation->USBwIndex0这个值由哪个决定的?
如果要按上面这种方式做鼠标,键盘,触摸屏,要修改哪些参数,目前用一个Joystick_ConfigDescriptor1,
功能都已经实现了,就是不知道把他合在一起。。。
本人QQ:136411995,求指教,或论坛回复,谢谢。
原子兄,弄个插入代码的嘛。。
|