struct usb_host_endpoint

本文介绍了USB主机端点的数据结构定义,包括usb_host_endpoint和usb_endpoint_descriptor两个关键结构体。usb_host_endpoint用于描述USB主机端点的属性及管理相关的URB链表,而usb_endpoint_descriptor则详细记录了端点描述符的具体信息。
struct usb_host_endpoint {
	struct usb_endpoint_descriptor		desc;
	struct usb_ss_ep_comp_descriptor	ss_ep_comp;
	struct list_head		urb_list;
	void				*hcpriv;
	struct ep_device		*ep_dev;	/* For sysfs info */

	unsigned char *extra;   /* Extra descriptors */
	int extralen;
	int enabled;
};

struct usb_endpoint_descriptor {
	__u8  bLength;
	__u8  bDescriptorType;

	__u8  bEndpointAddress;
	__u8  bmAttributes;
	__le16 wMaxPacketSize;
	__u8  bInterval;

	/* NOTE:  these two are _only_ in audio endpoints. */
	/* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */
	__u8  bRefresh;
	__u8  bSynchAddress;
} __attribute__ ((packed));

根据您的建议之后,我发现我的程序可以枚举成功低速设备了,但是全速设备无法枚举成功。 ///////////////////////////////////////////////////////////////// // 文件说明:本文件实现USBhub的类描述 // by jinyh 2025-2-11 //////////////////////////////////////////////////////////////// #include "hubclass.h" #include "hubctrl.h" #include "usb_host_core.h" #include "usb_host_stdreq.h" #include "usb_host_ctrltrans.h" #include "usb_host_cfgch.h" #include "usb_host_driver.h" #include "usb_host_user.h" DESCRIPTOR_HUB_DESC_T myHubDesc; //hub描述符,本工程中只有唯一的一个hub HUB_Machine_TypeDef myHUB_Machine; // Hub的操作结构体 extern __USB_ALIGN_BEGIN USBH_HOST usb_app_host; // 连接一个设备, extern __USB_ALIGN_BEGIN USBH_HOST usb_child_host[5]; // 如何是hub的话,则连接最多4个设备。 //function //void usb_hub_dev_process(usb_core_instance *pdev, USBH_HOST *phost); extern HOST_STATUS usb_host_enumprocess(usb_core_instance *pdev, USBH_HOST *phost); // 跟应用相关,照猫画虎写一写 2025-1-22 static HOST_STATUS usb_host_hub_init(usb_core_instance *pdev, void *phost); void usb_host_hub_deinit(usb_core_instance *pdev,void *phost); static HOST_STATUS usb_host_hub_classreq(usb_core_instance *pdev, void *phost); static HOST_STATUS usb_host_hub_process(usb_core_instance *pdev, void *phost); usb_host_class_callback_func USBH_hub_cb = { usb_host_hub_init, usb_host_hub_deinit, usb_host_hub_classreq, usb_host_hub_process }; static HOST_STATUS usb_host_hub_init(usb_core_instance *pdev, void *phost) { // hub 初始化,已经枚举结束 USBH_HOST *pphost = phost; myHUB_Machine.hub_reqState=HUB_GET_DESC_REQUEST; // 控制hub的req状态为HUB_GET_DESC_REQUEST myHUB_Machine.hub_process_state=HUB_GET_PORT_STATUS; // 默认是读取端口状态 HOST_STATUS status = HSTATUS_BUSY ; if (pphost->device_prop.devitfdesc[0].bInterfaceClass == USB_HUB_CLASS) { myHUB_Machine.dev_addr=pphost->device_prop.devaddr; myHUB_Machine.int_ep_addr = pphost->device_prop.devepdesc[0][0].bEndpointAddress; myHUB_Machine.poll_interval = pphost->device_prop.devepdesc[0]
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值