USB_INT_SUCCESS)//DATA阶段操作成功
{
receive_mode ^= 0x80;
descr_len-=RD_USB_DATA(p);
}
else return(0);
}
}
else return(0);
send_mode = 0x40;
WR_USB_DATA(0,SetupGetCfgDescr);
issue_token(send_mode,( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt();
if(status==USB_INT_SUCCESS)//状态阶段操作成功
return(1);
else return(0);
}
//*****************************************************
//*NAME: parse_config_descr( )
//*FUCTION: 简单的分析配置描述符中的相关信息,并保存
//*输入参数: 无
//* 输出参数:无
//*说明: 保存设备的接口号,端点地址,报表长度,支持复合设备
//******************************************************
void parse_config_descr( )
{
Device_Atti.Device_connect = 1; //表示设备连接
Device_Atti.Cfg_value = ((PUSB_CFG_DESCR)data_buf)->bConfigurationValue; //保留配置描述符中的配置值
if(((PUSB_CFG_DESCR)data_buf)->bNumInterfaces==1) //只有一个接口设备
{
Device_Atti.Device_compat = 0; //非复合设备
#define HID_Dev ((PHID_DEVICE)data_buf)
Device_Atti.Device[0].Device_type = HID_Dev->hid_itf_descr.bInterfaceProtocol;//设备类型:0x01 键盘,0x02 鼠标
Device_Atti.Device[0].Device_inf = HID_Dev->hid_itf_descr.bInterfaceNumber;//设备的接口号
Device_Atti.Device[0].Device_endp = HID_Dev->endp_descr.bEndpointAddress;//设备端点地址
Device_Atti.Device[0].Device_size = HID_Dev->endp_descr.wMaxPacketSize;//设备端点大小
Device_Atti.Device[0].Device_report_len = (HID_Dev->hid_class_descr.wDescriptorLength>>8)|(HID_Dev->hid_class_descr.wDescriptorLength<<8); //报表长度,大小端数据格式转换
}
else if(((PUSB_CFG_DESCR)data_buf)->bNumInterfaces==2) //2个接口设备
{
Device_Atti.Device_compat = 1; //复合设备
#define HID_Dev1 ((PHID_COMPOSITE_DEVICE1)data_buf)
Device_Atti.Device[0].Device_type = HID_Dev1->hid_itf_descr1.bInterfaceProtocol;
Device_Atti.Device[0].Device_inf = HID_Dev1->hid_itf_descr1.bInterfaceNumber;
Device_Atti.Device[0].Device_endp = HID_Dev1->endp_descr1.bEndpointAddress;
Device_Atti.Device[0].Device_size = HID_Dev1->endp_descr1.wMaxPacketSize;
Device_Atti.Device[0].Device_report_len = (HID_Dev1->hid_class_descr1.wDescriptorLength>>8)|(HID_Dev1->hid_class_descr1.wDescriptorLength<<8); //报表长度,大小端数据格式转换
Device_Atti.Device[1].Device_type = HID_Dev1->hid_itf_descr2.bInterfaceProtocol;
Device_Atti.Device[1].Device_inf = HID_Dev1->hid_itf_descr2.bInterfaceNumber;
Device_Atti.Device[1].Device_endp = HID_Dev1->end
p_descr2.bEndpointAddress;
Device_Atti.Device[1].Device_size = HID_Dev1->endp_descr2.wMaxPacketSize;
Device_Atti.Device[1].Device_report_l
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科CH376主机控制键盘鼠标程序(7)全文阅读和word下载服务。
相关推荐: