亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usbdlib.c

?? vxworks嵌入式實時系統的 usb底層驅動代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    return urbExecBlock (&urb.header);    }/***************************************************************************** usbdMngmtCallbackSet - sets management callback for a client** Management callbacks provide a mechanism for the USBD to inform clients* of asynchronous management events on the USB.  For example, if the USB* is in the SUSPEND state - see usbdBusStateSet() - and a USB device* drives RESUME signalling, that event can be reported to a client through* its management callback.** <clientHandle> is a client's registered handled with the USBD.  * <mngmtCallback> is the management callback routine of type* USBD_MNGMT_CALLBACK which will be invoked by the USBD when management* events are detected.	<mngmtCallbackParam> is a client-defined parameter* which will be passed to the <mngmtCallback> each time it is invoked.* Passing a <mngmtCallback> of NULL cancels management event callbacks.** When the <mngmtCallback> is invoked, the USBD will also pass it the* USBD_NODE_ID of the root node on the bus for which the management event* has been detected and a code signifying the type of management event* as USBD_MNGMT_xxxx.** Clients are not required to register a management callback routine.* Clients that do use a management callback are permitted to register at* most one management callback per USBD_CLIENT_HANDLE.	** RETURNS: OK, or ERROR if unable to register management callback*/STATUS usbdMngmtCallbackSet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_MNGMT_CALLBACK mngmtCallback,	/* management callback */    pVOID mngmtCallbackParam		/* client-defined parameter */    )    {    URB_MNGMT_CALLBACK_SET urb;    /* Initialize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_MNGMT_CALLBACK_SET, NULL, 	NULL, sizeof (urb));    urb.mngmtCallback = mngmtCallback;    urb.mngmtCallbackParam = mngmtCallbackParam;    /* Execute URB */    return urbExecBlock (&urb.header);    }/***************************************************************************** usbdBusStateSet - Sets bus state (e.g., suspend/resume)** This function allows a client to set the state of the bus to which* the specified <nodeId> is attached.  The desired <busState> is specified* as USBD_BUS_xxxx.** Typically, a client will use this function to set a bus to the SUSPEND* or RESUME state.  Clients must use this capability with care, as it will* affect all devices on a given bus - and hence all clients communicating* with those devices.** When setting a bus to the SUSPEND state, a client must also be aware* that the USBD will not automatically return the bus to the RESUME state...* the client must RESUME the bus explicitly through this function.  This* point is most important when considering the USB "remote wakeup" feature.* This feature allows a remote device to drive RESUME signalling on the* bus.	However, it is the client's responsibility to recognize this* condition by monitoring management events through the use of management* callbacks - see usbdMngmtCallbackSet().  When a USBD_MNGMT_RESUME event* is detected, the client chooses to RESUME the bus (or not).** RETURNS: OK, or ERROR if unable to set specified bus state*/STATUS usbdBusStateSet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_NODE_ID nodeId,		/* node ID */    UINT16 busState			/* new bus state: USBD_BUS_xxxx */    )    {    URB_BUS_STATE_SET urb;    /* Initialize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_BUS_STATE_SET, NULL, 	NULL, sizeof (urb));    urb.nodeId = nodeId;    urb.busState = busState;    /* Execute URB */    return urbExecBlock (&urb.header);    }/***************************************************************************** usbdBusCountGet - Get number of USBs attached to the host.** This function returns the total number of USB host controllers in the * system.  Each host controller has its own root hub as required by the USB * specification; and clients planning to enumerate USB devices using the Bus * Enumeration Functions need to know the total number of host controllers in * order to retrieve the Node Ids for each root hub.** <pBusCount> must point to a UINT16 variable in which the total number of * USB host controllers will be stored.** Note: The number of USB host controllers is not constant.  Bus controllers * can be added by calling usbdHcdAttach() and removed by calling * usbdHcdDetach().  Again, the Dynamic Attach Functions deal with these * situations automatically, and are the preferred mechanism by which most * clients should be informed of device attachment and removal.** RETURNS: OK, or ERROR if unable to retrieve bus count*/STATUS usbdBusCountGet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    pUINT16 pBusCount			/* Word bfr to receive bus count */    )    {    URB_BUS_COUNT_GET urb;    STATUS s;    /* Initalize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_BUS_COUNT_GET, NULL, NULL,	sizeof (urb));    /* Execute URB */    s = urbExecBlock (&urb.header);    /* Return result */    if (pBusCount != NULL)	*pBusCount = urb.busCount;    return s;    }/***************************************************************************** usbdRootNodeIdGet - Returns root node for a specific USB** This function returns the Node Id for the root hub for the specified * USB host controller.	<busIndex> is the index of the desired USB host * controller.  The first host controller is index 0 and the last host * controller's index is the total number of USB host controllers - as * returned by usbdBusCountGet() - minus 1. < pRootId> must point to a * USBD_NODE_ID variable in which the Node Id of the root hub will be stored.* * RETURNS: OK, or ERROR if unable to get root node ID.*/STATUS usbdRootNodeIdGet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    UINT16 busIndex,			/* Bus index */    pUSBD_NODE_ID pRootId		/* bfr to receive Root Id */    )    {    URB_ROOT_ID_GET urb;    STATUS s;    /* Initalize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_ROOT_ID_GET, NULL, NULL,	sizeof (urb));    urb.busIndex = busIndex;    /* Execute URB */    s = urbExecBlock (&urb.header);    /* Return result */    if (pRootId != NULL)	*pRootId = urb.rootId;    return s;    }/***************************************************************************** usbdHubPortCountGet - Returns number of ports connected to a hub** usbdHubPortCountGet() provides clients with a convenient mechanism to * retrieve the number of downstream ports provided by the specified hub. * Clients can also retrieve this information by retrieving configuration * descriptors from the hub using the Configuration Functions describe in * a following section.	** <hubId> must be the Node Id for the desired USB hub.	An error will be * returned if <hubId> does not refer to a hub.	<pPortCount> must point to * a UINT16 variable in which the total number of ports on the specified * hub will be stored.** RETURNS: OK, or ERROR if unable to get hub port count.*/STATUS usbdHubPortCountGet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_NODE_ID hubId, 		/* Node Id for desired hub */    pUINT16 pPortCount			/* bfr to receive port count */    )    {    URB_HUB_PORT_COUNT_GET urb;    STATUS s;    /* Initalize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_HUB_PORT_COUNT_GET, NULL, NULL,	sizeof (urb));    urb.hubId = hubId;    /* Execute URB */    s = urbExecBlock (&urb.header);    /* Return result */    if (pPortCount != NULL)	*pPortCount = urb.portCount;    return s;    }/***************************************************************************** usbdNodeIdGet - Gets the id of the node connected to a hub port** Clients use this function to retrieve the Node Id for devices attached to* each of a hub抯 ports.  <hubId> and <portIndex> identify the hub and port * to which a device may be attached.  <pNodeType> must point to a UINT16 * variable to receive a type code as follows:** .IP "USB_NODETYPE_NONE"* No device is attached to the specified port.* .IP "USB_NODETYPE_HUB"* A hub is attached to the specified port.* .IP "USB_NODETYPE_DEVICE"* A device (non-hub) is attached to the specified port.** If the node type is returned as USBD_NODE_TYPE_NONE, then a Node Id is * not returned and the value returned in <pNodeId> is undefined.  If the * node type indicates a hub or device is attached to the port, then * <pNodeId> will contain that hub or device抯 nodeId upon return.** RETURNS: OK, or ERROR if unable to get node ID.*/STATUS usbdNodeIdGet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_NODE_ID hubId, 		/* Node Id for desired hub */    UINT16 portIndex,			/* Port index */    pUINT16 pNodeType,			/* bfr to receive node type */    pUSBD_NODE_ID pNodeId		/* bfr to receive Node Id */    )    {    URB_NODE_ID_GET urb;    STATUS s;    /* Initalize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_NODE_ID_GET, NULL, NULL,	sizeof (urb));    urb.hubId = hubId;    urb.portIndex = portIndex;    /* Execute URB */    s = urbExecBlock (&urb.header);    /* Return result */    if (pNodeType != NULL)	*pNodeType = urb.nodeType;    if (pNodeId != NULL)	*pNodeId = urb.nodeId;    return s;    }/***************************************************************************** usbdNodeInfoGet - Returns information about a USB node** This function retrieves information about the USB device specified by * <nodeId>.  The USBD copies node information into the <pNodeInfo> structure * provided by the caller.  This structure is of the form USBD_NODEINFO as* shown below:** .CS* typedef struct usbd_nodeinfo*     {*     UINT16 nodeType;*     UINT16 nodeSpeed;*     USBD_NODE_ID parentHubId;*     UINT16 parentHubPort;*     USBD_NODE_ID rootId;*     } USBD_NODEINFO, *pUSBD_NODEINFO;* .CE** <nodeType> specifies the type of node identified by <nodeId> and is defined * as USB_NODETYPE_xxxx.  <nodeSpeed> identifies the speed of the device and * is defined as USB_SPEED_xxxx.  <parentHubId> and <parentHubPort> identify * the Node Id and port of the hub to which the indicated node is attached * upstream.  If the indicated <nodeId> happens to be a root hub, then * <parentHubId> and <parentHubPort> will both be 0.  ** Similarly, <rootId> identifies the Node Id of the root hub for the USB to * which nodeId is attached.  If <nodeId> itself happens to be the root hub, * then the same value will be returned in <rootId>.** It is anticipated that this structure may grow over time.  To provide * backwards compatibility, the client must pass the total size of the * USBD_NODEINFO structure it has allocated in <infoLen>.  The USBD will copy * fields into this structure only up to the <infoLen> indicated by the caller.** RETURNS: OK, or ERROR if unable to retrieve node information.*/STATUS usbdNodeInfoGet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_NODE_ID nodeId,		/* Node Id of device/hub */    pUSBD_NODE_INFO pNodeInfo,		/* Structure to receive node info */    UINT16 infoLen			/* Len of bfr allocated by client */    )    {    URB_NODE_INFO_GET urb;    /* Initalize URB */    urbInit (&urb.header, clientHandle, USBD_FNC_NODE_INFO_GET, NULL, NULL,	sizeof (urb));    urb.nodeId = nodeId;    urb.pNodeInfo = pNodeInfo;    urb.infoLen = infoLen;    /* Execute URB */    return urbExecBlock (&urb.header);    }/***************************************************************************** usbdDynamicAttachRegister - Registers client for dynamic attach notification** Clients call this function to indicate to the USBD that they wish to be * notified whenever a device of the indicated class/sub-class/protocol is attached * or removed from the USB.  A client may specify that it wants to receive * notification for an entire device class or only for specific sub-classes* within that class.** <deviceClass>, <deviceSubClass>, and <deviceProtocol> must specify a USB * class/sub-class/protocol combination according to the USB specification.  For * the client抯 convenience, usbdLib.h automatically includes usb.h which defines a * number of USB device classes as USB_CLASS_xxxx and USB_SUBCLASS_xxxx.  A * value of USBD_NOTIFY_ALL in any/all of these parameters acts like a wildcard* and matches any value reported by the device for the corresponding field. ** <attachCallback> must be a non-NULL pointer to a client-supplied callback * routine of the form USBD_ATTACH_CALLBACK:** .CS* typedef VOID (*USBD_ATTACH_CALLBACK) *     (*     USBD_NODE_ID nodeId, *     UINT16 attachAction, *     UINT16 configuration,*     UINT16 interface,*     UINT16 deviceClass, *     UINT16 deviceSubClass, *     UINT16 deviceProtocol*     );* .CE** Immediately upon registration the client should expect that it may begin * receiving calls to the <attachCallback> routine.  Upon registration, USBD * will call the <attachCallback> for each device of the specified class which * is already attached to the system.  Thereafter, the USBD will call the * <attachCallback> whenever a new device of the specified class is attached to * the system or an already-attached device is removed.** Each time the <attachCallback> is called, USBD will pass the Node Id of the * device in <nodeId> and an attach code in <attachAction> which explains the 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产电影一区在线| 欧美性淫爽ww久久久久无| 99riav一区二区三区| 这里只有精品99re| 中文字幕一区二区三区在线不卡| 免费看精品久久片| 91麻豆国产福利精品| 亚洲精品一区二区三区蜜桃下载| 亚洲同性同志一二三专区| 狠狠色丁香婷综合久久| 制服丝袜中文字幕一区| 欧美久久久久久蜜桃| 欧美国产禁国产网站cc| 欧美综合在线视频| 亚洲蜜桃精久久久久久久| 一本久道久久综合中文字幕| 久久综合色婷婷| 91麻豆视频网站| 欧美www视频| 日本午夜精品一区二区三区电影| 亚洲特级片在线| 91精品国产色综合久久ai换脸| 最好看的中文字幕久久| 丁香婷婷综合五月| 久久丝袜美腿综合| 久久精品国产亚洲a| 91精品在线观看入口| 亚洲成人777| 欧美三级电影网| 偷拍一区二区三区| 欧美色图一区二区三区| 一区二区三区欧美日| 日韩欧美综合一区| 免费观看一级欧美片| 欧美疯狂性受xxxxx喷水图片| 亚洲第一精品在线| 3751色影院一区二区三区| 日本视频一区二区三区| 欧美一区二区三区人| 激情六月婷婷久久| 国产精品视频一二三区| 99国产精品久| 亚洲国产综合视频在线观看| 欧美日韩在线观看一区二区 | 精品中文字幕一区二区小辣椒| 在线播放91灌醉迷j高跟美女 | 亚洲视频一区在线| 色久优优欧美色久优优| 青青青爽久久午夜综合久久午夜| 日韩免费看的电影| 国产成人综合亚洲91猫咪| 国产精品欧美极品| 欧美日韩一区二区三区四区| 免费欧美日韩国产三级电影| 337p日本欧洲亚洲大胆色噜噜| 粉嫩13p一区二区三区| 亚洲欧美国产高清| 欧美精品1区2区| 国产麻豆视频一区| 亚洲人成人一区二区在线观看| 欧美日韩免费一区二区三区视频| 石原莉奈一区二区三区在线观看| 精品99999| 色999日韩国产欧美一区二区| 六月丁香婷婷色狠狠久久| 国产欧美精品一区二区色综合| 色综合咪咪久久| 麻豆精品一区二区av白丝在线| 国产女人aaa级久久久级| 欧美婷婷六月丁香综合色| 美美哒免费高清在线观看视频一区二区| 久久久www免费人成精品| 色老综合老女人久久久| 国产一区二区三区四区五区入口 | 亚洲黄色免费网站| 精品国产3级a| 在线观看亚洲a| 国产精品一区二区在线观看网站| 亚洲综合色自拍一区| 国产婷婷色一区二区三区在线| 色婷婷狠狠综合| 国内精品视频666| 午夜视频在线观看一区| 国产精品免费丝袜| 精品国产乱码久久久久久久久| 色综合网站在线| 国产成人福利片| 蜜桃av一区二区三区电影| 亚洲日本在线a| 久久亚洲捆绑美女| 欧美一区二区三区啪啪| 91麻豆国产福利在线观看| 成人一级片在线观看| 久久精品国产秦先生| 天天av天天翘天天综合网色鬼国产| 成人欧美一区二区三区1314| 精品久久一区二区| 日韩一区二区精品| 欧美日韩高清一区| 欧美色综合天天久久综合精品| 97久久超碰国产精品| 成人av先锋影音| 国产毛片精品视频| 国产麻豆午夜三级精品| 国产一区二区电影| 精品亚洲免费视频| 激情六月婷婷综合| 美女脱光内衣内裤视频久久网站 | 在线观看免费视频综合| 色一区在线观看| 91在线观看视频| 99精品视频在线观看| av电影天堂一区二区在线观看| 国产电影精品久久禁18| 国产成人亚洲综合a∨猫咪| 国产精品 日产精品 欧美精品| 国产老女人精品毛片久久| 国产在线精品一区二区| 国产麻豆精品theporn| 国产高清不卡一区二区| 高清免费成人av| 97久久超碰国产精品| 91福利在线导航| 337p亚洲精品色噜噜噜| 欧美mv日韩mv| 国产日韩一级二级三级| 国产精品不卡在线观看| 亚洲精品一二三| 人人超碰91尤物精品国产| 人妖欧美一区二区| 丰满放荡岳乱妇91ww| 91在线视频免费观看| 欧美性淫爽ww久久久久无| 日韩一区二区三区免费看| 久久精品一二三| 亚洲激情av在线| 美国三级日本三级久久99| 国产成人精品一区二区三区网站观看| 丁香婷婷综合色啪| 欧美午夜精品理论片a级按摩| 欧美一区二区三区影视| 久久久久久免费| 一区二区三区欧美激情| 久久精品国产亚洲5555| 99久久婷婷国产精品综合| 欧美三片在线视频观看| 欧美成人精品高清在线播放| 欧美激情中文字幕一区二区| 亚洲一区二区三区在线看| 激情综合网天天干| 91免费版在线看| 欧美成人vr18sexvr| 亚洲欧美日韩久久| 麻豆国产精品777777在线| gogogo免费视频观看亚洲一| 欧美精品色综合| 中文乱码免费一区二区| 美国十次了思思久久精品导航| 91偷拍与自偷拍精品| 日韩精品中文字幕一区| 一区二区三区日韩| 大胆亚洲人体视频| 欧美一区二区在线看| ...av二区三区久久精品| 久久av资源站| 欧美日韩国产精品成人| 亚洲欧美视频一区| 国产成人午夜精品5599| 91精品国产黑色紧身裤美女| 亚洲视频免费观看| 国产精品一区专区| 欧美不卡123| 日韩av不卡在线观看| 91网站最新地址| 国产欧美一区二区精品仙草咪| 日韩av电影天堂| 91.com视频| 亚洲午夜私人影院| 91视频在线看| 国产精品天美传媒沈樵| 韩国av一区二区| 日韩你懂的电影在线观看| 亚洲va欧美va人人爽午夜| 色婷婷香蕉在线一区二区| 国产精品久久777777| 国产成人精品免费视频网站| 精品国产乱码久久久久久浪潮| 首页综合国产亚洲丝袜| 欧美在线免费观看视频| 亚洲欧美偷拍另类a∨色屁股| k8久久久一区二区三区 | 欧美r级在线观看| 热久久久久久久| 欧美喷水一区二区| 亚洲成人先锋电影| 欧美一区二区在线不卡| 免费观看在线综合| 精品久久久久久最新网址| 捆绑调教一区二区三区| 精品久久久久久亚洲综合网|