⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbhcd.h

📁 操作系统开发,vxwork操作系统源代码
💻 H
字号:
/* usbHcd.h - General definitions for a USB HCD (Host Controller Driver) *//* Copyright 2000 Wind River Systems, Inc. *//*Modification history--------------------01i,18sep01,wef  merge from wrs.tor2_0.usb1_1-f for veloce01h,07may01,wef  changed module number to be (module num << 8) | M_usbHostLib01g,02may01,wef  changed module number to be M_<module> + M_usbHostLib01f,05dec00,wef  moved Module number defs to vwModNum.h - add this                 to #includes01e,26jan00,rcb  Change "bytesPerFrame" field in HRB_PIPE_CREATE to		 "bandwidth" and redefined as UINT32.01d,29nov99,rcb  Remove obsolete function HCD_FNC_BUS_RESET.		 Increase frame number fields to 32-bits.01c,23nov99,rcb  Replace bandwidth alloc/release functions with pipe		 create/destroy functions...generalizes approach for use		 with OHCI HCD.01b,07sep99,rcb  Add management callback to attach function.01a,03jun99,rcb  First.*//*DESCRIPTIONThis file defines the interface to a USB HCD (Host Controller Driver).	Thisinterface is generic across HCD implementations.NOTE: All HCD functions execute synchronously.	However, all HCD functionshave been designed to allow for rapid processing.  Delayed results, such as thecompletion of an IRP, are reported through callbacks.NOTE: The USB specification states that a host controller will incorporate the"root hub".  The caller of the HCD, generally the USBD, communicates with thisroot hub using the same IRPs that are used to communicate with other USB devices and hubs.  The HCD is responsible for recognizing IRPs addressed tothe root hub and processing them correctly, often by emulating the USB requestbehavior of the root hub.*/#ifndef __INCusbHcdh#define __INCusbHcdh#ifdef	__cplusplusextern "C" {#endif/* includes */#include "usb/usbHandleLib.h"#include "usb/usb.h"#include "vwModNum.h"           /* USB Module Number Def's *//* defines *//* HRB function codes */#define HCD_FNC_ATTACH		    0x0000  /* attach/init */#define HCD_FNC_DETACH		    0x0001  /* detach/shutdown */#define HCD_FNC_SET_BUS_STATE	    0x0100  /* set bus suspend/resume state */#define HCD_FNC_SOF_INTERVAL_GET    0x0101  /* retrieve SOF interval */#define HCD_FNC_SOF_INTERVAL_SET    0x0102  /* set SOF interval */#define HCD_FNC_CURRENT_FRAME_GET   0x0200  /* get current frame no */#define HCD_FNC_IRP_SUBMIT	    0x0201  /* submit an IRP for exection */#define HCD_FNC_IRP_CANCEL	    0x0202  /* cancel a pending IRP */#define HCD_FNC_PIPE_CREATE	    0x0300  /* create pipe & reserve bandwidth */#define HCD_FNC_PIPE_DESTROY	    0x0301  /* destroy pipe */#define HCD_FNC_PIPE_MODIFY	    0x0302  /* modify pipe parameters *//* HRB result codes *//*  * USB errnos are defined as being part of the USB host Module, as are all * vxWorks module numbers, but the USB Module number is further divided into  * sub-modules.  Each sub-module has upto 255 values for its own error codes */ #define USB_HCD_SUB_MODULE  4#define M_usbHcdLib 	( (USB_HCD_SUB_MODULE  << 8) | M_usbHostLib )#define hcdErr(x)	(M_usbHcdLib | (x))#define S_usbHcdLib_BAD_CLIENT		hcdErr(1)#define S_usbHcdLib_BAD_PARAM		hcdErr(2)#define S_usbHcdLib_BAD_HANDLE		hcdErr(3)#define S_usbHcdLib_OUT_OF_MEMORY	hcdErr(4)#define S_usbHcdLib_OUT_OF_RESOURCES	hcdErr(5) #define S_usbHcdLib_NOT_IMPLEMENTED	hcdErr(6)#define S_usbHcdLib_GENERAL_FAULT	hcdErr(7)#define S_usbHcdLib_NOT_INITIALIZED	hcdErr(8)#define S_usbHcdLib_INT_HOOK_FAILED	hcdErr(9)#define S_usbHcdLib_STRUCT_SIZE_FAULT	hcdErr(10)#define S_usbHcdLib_HW_NOT_READY	hcdErr(11)#define S_usbHcdLib_NOT_SUPPORTED	hcdErr(12)#define S_usbHcdLib_SHUTDOWN		hcdErr(13)#define S_usbHcdLib_IRP_CANCELED	hcdErr(14)#define S_usbHcdLib_STALLED		hcdErr(15)#define S_usbHcdLib_DATA_BFR_FAULT	hcdErr(16)#define S_usbHcdLib_BABBLE		hcdErr(17)#define S_usbHcdLib_CRC_TIMEOUT 	hcdErr(18)#define S_usbHcdLib_TIMEOUT		hcdErr(19)#define S_usbHcdLib_BITSTUFF_FAULT	hcdErr(20)#define S_usbHcdLib_SHORT_PACKET	hcdErr(21)#define S_usbHcdLib_CANNOT_CANCEL	hcdErr(22)#define S_usbHcdLib_BANDWIDTH_FAULT	hcdErr(23)#define S_usbHcdLib_SOF_INTERVAL_FAULT	hcdErr(24)#define S_usbHcdLib_DATA_TOGGLE_FAULT	hcdErr(25)#define S_usbHcdLib_PID_FAULT		hcdErr(26)#define S_usbHcdLib_ISOCH_FAULT 	hcdErr(27)/* management events */#define HCD_MNGMT_RESUME	1	    /* remote resume *//* bus states, bit mask */#define HCD_BUS_SUSPEND 	0x0001#define HCD_BUS_RESUME		0x0002/* typedefs *//* HCD_CLIENT_HANDLE */typedef GENERIC_HANDLE HCD_CLIENT_HANDLE, *pHCD_CLIENT_HANDLE;/* HCD_PIPE_HANDLE */typedef GENERIC_HANDLE HCD_PIPE_HANDLE, *pHCD_PIPE_HANDLE;/* * HCD_EXEC_FUNC * * HCD_EXEC_FUNC is the primary entry point for an HCD.  The caller passes  * HRBs (HCD Request Blocks) through this interface for execution by the HCD. */typedef STATUS (*HCD_EXEC_FUNC) (pVOID pHrb);/* management notification callback function */typedef VOID (*USB_HCD_MNGMT_CALLBACK)    (    pVOID mngmtCallbackParam,	    /* caller-defined param */    HCD_CLIENT_HANDLE handle,	    /* handle to host controller */    UINT16 busNo,		    /* bus number */    UINT16 mngmtCode		    /* management code */    );/* * HRB_HEADER * * All requests to an HCD begin with an HRB (HCD Request Block) header. */typedef struct hrb_header    {    HCD_CLIENT_HANDLE handle;	/* I/O	caller's HCD client handle */    UINT16 function;		/* IN	HCD function code */    UINT16 hrbLength;		/* IN	Length of the total HRB */    } HRB_HEADER, *pHRB_HEADER;/* * HRB_ATTACH */typedef struct hrb_attach    {    HRB_HEADER header;		/*	HRB header */    pVOID param;		/* IN	HCD-specific parameter */    USB_HCD_MNGMT_CALLBACK mngmtCallback;				/* IN	USBD's callback for mngmt events */    pVOID mngmtCallbackParam;	/* IN	USBD-defined parameter to callback */    UINT16 busCount;		/* OUT	number of buses managed by HCD */    } HRB_ATTACH, *pHRB_ATTACH;/* * HRB_DETACH */typedef struct hrb_detach    {    HRB_HEADER header;		/*	HRB header */    } HRB_DETACH, *pHRB_DETACH;/* * HRB_BUS_RESET */typedef struct hrb_bus_reset    {    HRB_HEADER header;		/*	HRB header */    UINT16 busNo;		/* IN	bus number to reset */    } HRB_BUS_RESET, *pHRB_BUS_RESET;/* * HRB_SET_BUS_STATE */typedef struct hrb_set_bus_state    {    HRB_HEADER header;		/*	HRB header */    UINT16 busNo;		/* IN	bus number */    UINT16 busState;		/* IN	new bus state, HCD_BUS_xxxx */    } HRB_SET_BUS_STATE, *pHRB_SET_BUS_STATE;/* * HRB_CURRENT_FRAME_GET */typedef struct hrb_current_frame_get    {    HRB_HEADER header;		/*	HRB header */    UINT16 busNo;		/* IN	bus index: 0, 1, ... */    UINT32 frameNo;		/* OUT	current frame number */    UINT32 frameWindow; 	/* OUT	frame window size */    } HRB_CURRENT_FRAME_GET, *pHRB_CURRENT_FRAME_GET;/* * HRB_PIPE_CREATE */typedef struct hrb_pipe_create    {    HRB_HEADER header;		/*	HRB header */    UINT16 busNo;		/* IN	bus index: 0, 1, ... */    UINT16 busAddress;		/* IN	bus address of USB device */    UINT16 endpoint;		/* IN	endpoint on device */    UINT16 transferType;	/* IN	transfer type */    UINT16 direction;		/* IN	transfer/pipe direction */    UINT16 speed;		/* IN	transfer speed */    UINT16 maxPacketSize;	/* IN	packet size */    UINT32 bandwidth;		/* IN	bandwidth required by pipe */    UINT16 interval;		/* IN	service interval */    UINT32 time;		/* OUT	calculated transfer time in nanoseconds */    HCD_PIPE_HANDLE pipeHandle; /* OUT	pipe handle */    } HRB_PIPE_CREATE, *pHRB_PIPE_CREATE;/* * HRB_PIPE_DESTROY */typedef struct hrb_pipe_destroy    {    HRB_HEADER header;		/*	HRB header */    HCD_PIPE_HANDLE pipeHandle; /* IN	pipe to be destroyed */    } HRB_PIPE_DESTROY, *pHRB_PIPE_DESTROY;/* * HRB_PIPE_MODIFY */typedef struct hrb_pipe_modify    {    HRB_HEADER header;		/*	HRB header */    HCD_PIPE_HANDLE pipeHandle; /* IN	pipe to modify */    UINT16 busAddress;		/* IN	new bus address, or 0 if unchanged */    UINT16 maxPacketSize;	/* IN	new max packet size, or 0 if unchanged */    } HRB_PIPE_MODIFY, *pHRB_PIPE_MODIFY;/*  * HRB_IRP_SUBMIT */typedef struct hrb_irp_submit    {    HRB_HEADER header;		/*	HRB header */    HCD_PIPE_HANDLE pipeHandle; /* IN	pipe to which IRP is directed */    pUSB_IRP pIrp;		/* IN	ptr to IRP */    } HRB_IRP_SUBMIT, *pHRB_IRP_SUBMIT;/* * HRB_IRP_CANCEL */typedef struct hrb_irp_cancel    {    HRB_HEADER header;		/*	HRB header */    pUSB_IRP pIrp;		/* IN	ptr to IPR to be canceled */    } HRB_IRP_CANCEL, *pHRB_IRP_CANCEL;/* * HRB_SOF_INTERVAL_GET_SET */typedef struct hrb_sof_interval_get_set    {    HRB_HEADER header;		/*	HRB header */    UINT16 busNo;		/* IN	bus index */    UINT16 sofInterval; 	/* I/O	SOF interval */    } HRB_SOF_INTERVAL_GET_SET, *pHRB_SOF_INTERVAL_GET_SET;#ifdef	__cplusplus}#endif#endif	/* __INCusbHcdh *//* End of file. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -