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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? device.c

?? usb2 driver for vxwokrs
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* device.c - USBD device management functionality *//* Copyright 2004 Wind River Systems, Inc.    This software includes software licensed to Wind River Systems, Inc.   by Wipro, Ltd. Wind River licensees may use this software according     to the terms of their Wind River license agreement(s) applicable to    this software.*//*Modification history--------------------01b,11oct04,ami  Apigen Changes01a,23jun03,cfc Changing the code to WRS standards*//*DESCRIPTIONDevice manager provides for handling Plug & Play and PowerManagement. The Device Manager provides the interfaces forthe following functionality:1.  Handle device connection and disconnection.2.  Configure a newly attached device.3.  Handle device suspend and resume.4. Interfaces for the client software to selectively suspend or resume a device. This file is included by the usbd.c source file.INCLUDE FILES: none*//*INTERNAL ******************************************************************************* * Filename         : DeviceManager.c * * Copyright        : * * THE COPYRIGHT IN THE CONTENTS OF THIS SOFTWARE VEST WITH WIPRO * LIMITED A COMPANY INCORPORATED UNDER THE LAWS OF INDIA AND HAVING * ITS REGISTERED OFFICE AT DODDAKANNELLI SARJAPUR ROAD  BANGALORE * 560 035. DISTRIBUTION OR COPYING OF THIS SOFTWARE BY * ANY INDIVIDUAL OR ENTITY OTHER THAN THE ADDRESSEE IS STRICTLY * PROHIBITED AND MAY INCUR LEGAL LIABILITY. IF YOU ARE NOT THE * ADDRESSEE PLEASE NOTIFY US IMMEDIATELY BY PHONE OR BY RETURN EMAIL. * THE ADDRESSEE IS ADVISED TO MAINTAIN THE PROPRIETARY INTERESTS OF * THIS COPYRIGHT AS PER APPLICABLE LAWS. * * * Description      : Device manager provides for handling Plug & Play and Power *                    Management. The Device Manager provides the interfaces for *                    the following functionality: * *                      1.  Handle device connection and disconnection. *                      2.  Configure a newly attached device. *                      3.  Handle device suspend and resume. *                      4.  Interfaces for the client software to selectively *                          suspend or resume a device. * * ******************************************************************************//***************************************************************************** usbdLinkDeviceInfo - links specified device information to  the specified bus.** This routine links the specified device information to the specified bus.** RETURNS: N/A** ERRNO: None* * \NOMANUAL*/LOCAL void usbdLinkDeviceInfo    (    UINT8             uBusIndex,     /* Bus index link to device info */    pUSBD_DEVICE_INFO pDeviceInfo    /* Ptr to device info            */    )    {    OS_LOG_MESSAGE_LOW(USBD,                       "Entering usbdLinkDeviceInfo() Function.\n",                       0,                       0,                       0,                       0);    /* Lock the bus before modifying the list */    OS_WAIT_FOR_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock,                      OS_WAIT_INFINITE);    /* Insert pDeviceInfo to the head of the bus device info list */    pDeviceInfo->pNextUSBDeviceInfo =        gUSBBusInfoList[uBusIndex].pUSBDeviceInfoList;    /* Head of Bus device info list points to the new pDeviceInfo */    gUSBBusInfoList[uBusIndex].pUSBDeviceInfoList = pDeviceInfo;    /* Release the bus lock */    OS_RELEASE_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock);    OS_LOG_MESSAGE_LOW(USBD,                       "Exiting usbdLinkDeviceInfo() Function.\n",                       0,                       0,                       0,                       0);    return;    } /* End of function usbdLinkDeviceInfo *//***************************************************************************** usbdUlinkDeviceInfo - unlinks specified device information.** This routine unlinkes the specified device information.** RETURNS: N/A** ERRNO: None** \NOMANUAL*/LOCAL void usbdUlinkDeviceInfo    (    UINT8             uBusIndex,     /* Bus index link to device info */    pUSBD_DEVICE_INFO pDeviceInfo    /* Ptr to device info            */    )    {    /* To store device info */    pUSBD_DEVICE_INFO   pTemp = NULL;    OS_LOG_MESSAGE_LOW(USBD,                       "Entering usbdUlinkDeviceInfo() Function.\n",                       0,                       0,                       0,                       0);    /* Initialize with the device info list of the bus */    pTemp = gUSBBusInfoList[uBusIndex].pUSBDeviceInfoList;	if ((pTemp == NULL) || (pDeviceInfo == NULL))	    {		OS_LOG_MESSAGE_HIGH(USBD,						    "USBD_UNLINK_DEVICE_INFO() Failed. Invalid paramter\n",						    0,						    0,						    0,						    0);		return;	    }    /*     * If the pDeviceInfo is the first element in the list     * then store the  next device info into pTemp. Else     * parse the entire list to find pDeviceInfo.     */    if (pTemp == pDeviceInfo)        {        /* Lock the bus before modifying the list */        OS_WAIT_FOR_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock,                          OS_WAIT_INFINITE);        /* Move the list head to next position */        pTemp = pTemp->pNextUSBDeviceInfo;        /* Update the global device list info head */        gUSBBusInfoList[uBusIndex].pUSBDeviceInfoList = pTemp;        /* Release the bus lock */        OS_RELEASE_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock);        }    else        {        /* Find pDeviceInfo in the list pTemp */        while (pTemp != NULL)            {            if (pTemp->pNextUSBDeviceInfo == pDeviceInfo)                {                /* if pDeviceInfo found then break the loop */                break;                }            /* Store the next device info in the list to pTemp */            pTemp = pTemp->pNextUSBDeviceInfo;            } /* End of WHILE loop */        /* If matching element is found then remove the element from the list*/        if (pTemp != NULL)            {            /* Lock the bus before modifying the list */            OS_WAIT_FOR_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock,                              OS_WAIT_INFINITE);            /*             * Store the next device info of the element to be removed into the             * previous element's next device info.             */            pTemp->pNextUSBDeviceInfo =                pTemp->pNextUSBDeviceInfo->pNextUSBDeviceInfo;            /* Release the bus lock */            OS_RELEASE_EVENT(gUSBBusInfoList[uBusIndex].busOperationLock);            } /* End of IF pTemp is NULL check */        } /* End of else case of IF pTemp is pDeviceInfo */    OS_LOG_MESSAGE_LOW(USBD,                       "Exiting usbdUlinkDeviceInfo() Function.\n",                       0,                       0,                       0,                       0);    return;    } /* End of function usbdUlinkDeviceInfo *//***************************************************************************** usbdGenerateDeviceHandle - generates unique device handle for USB device ** This routine generates a unique device handle for USB device.** RETURNS: N/A** ERRNO: None** \NOMANUAL*/LOCAL void usbdGenerateDeviceHandle    (    UINT32 *pHandle,         /* Ptr to generated handle */    UINT8   uBusIndex,       /* Bus Index               */    UINT8   uDeviceAddress   /* Address of the device   */    )    {    OS_LOG_MESSAGE_LOW(USBD,                       "Entering usbdGenerateDeviceHandle() Function.\n",                       0,                       0,                       0,                       0);    /*     * Generate the device handle with first lower byte as device address and     * second lower byte as bus index     */    *pHandle = (uBusIndex << 8) | uDeviceAddress;    OS_LOG_MESSAGE_LOW(USBD,                       "Exiting usbdGenerateDeviceHandle() Function.\n",                       0,                       0,                       0,                       0);    return;    } /* End of function usbdGenerateDeviceHandle *//***************************************************************************** usbdTranslateDeviceHandle - translate device handle to USB device information** This routine translates a device handle to USB device information.** RETURNS: N/A** ERRNO: None* * \NOMANUAL*/LOCAL void usbdTranslateDeviceHandle    (    UINT32            uHandle,         /* Dev handle to translate      */    pUSBD_DEVICE_INFO *pDeviceInfo     /* Ptr to hold translated dev info */    )    {    UINT8               uBusIndex = 0;         /* To store bus index */    UINT8               uDeviceAddress = 0;    /* To store device address */    pUSBD_DEVICE_INFO   pTemp = NULL;          /* To store device info */    OS_LOG_MESSAGE_LOW(USBD,                       "Entering usbdTranslateDeviceHandle() Function.\n",                       0,                       0,                       0,                       0);    /* Initialize device info to NULL */    *pDeviceInfo = NULL;	if (((uHandle) == 0) || (((uHandle) >> 16) != 0))        {        OS_LOG_MESSAGE_MEDIUM(            USBD,            "usbdTranslateDeviceHandle() Failed: Invalid parameter.\n",            0,            0,            0,            0);        return;        }    /* From device handle get the bus index which is the second lower byte */    uBusIndex = (uHandle & 0x0000FF00) >> 8;    /* From device handle get the device address which is first lower byte */    uDeviceAddress = uHandle & 0x000000FF;    /* Check if the bus index is valid */    if (USBD_MAX_BUS_NUM > uBusIndex)        {        /* Initialize pTemp with the device list of the bus */        pTemp = gUSBBusInfoList[uBusIndex].pUSBDeviceInfoList;        /* Find the matching device info from the device list */        while (pTemp != NULL)            {            /* Check if the device address and bus index of the device matches*/            if ((pTemp->uDeviceAddress == uDeviceAddress) &&                (pTemp->uBusIndex == uBusIndex))                {                /* If match is found then break the loop */                break;                }            /* Since the match is not found move the pointer to next device */            pTemp = pTemp->pNextUSBDeviceInfo;            } /* End of WHILE loop */        /* Store the match found in pDeviceInfo */        *pDeviceInfo = pTemp;        } /* End of IF */     OS_LOG_MESSAGE_LOW(USBD,                        "Exiting usbdTranslateDeviceHandle() Function.\n",                        0,                        0,                        0,                        0);    return;    } /* End of function usbdTranslateDeviceHandle *//***************************************************************************** usbdGetFreeAddress - gets the free address in the given bus** This function is used to get a free address in the given bus** RETURNS: USBHST_SUCCESS, USBHST_FAILURE if no free address is found** ERRNO: None* * \NOMANUAL*/LOCAL USBHST_STATUS usbdGetFreeAddress    (    UINT8  uBusIndex,  /* Bus Index which device is connected */    UINT8 *pAddress    /* Ptr to free available address       */    )    {    UINT8 uOuterIndex = 0; /* Loop counter for byte pos in address map */    UINT8 uInnerIndex = 0; /* Loop counter for bit pos in byte of address map */    UINT8 uPower = 0;      /* bit position within a byte */     OS_LOG_MESSAGE_LOW(USBD,                       "Entering usbdGetFreeAddress() Function.\n",                       0,                       0,                       0,                       0);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费视频网址| 欧美中文字幕一区二区三区亚洲| 国产精品乱码人人做人人爱| 欧洲生活片亚洲生活在线观看| 久久超碰97中文字幕| 亚洲欧洲av色图| 久久综合给合久久狠狠狠97色69| 欧美伊人久久久久久久久影院 | 丝袜亚洲另类欧美| 国产欧美一二三区| 日韩欧美123| 欧美日韩久久一区二区| 精品国产1区2区3区| 欧美一区二区三区日韩| 国产宾馆实践打屁股91| 日韩精品1区2区3区| 亚洲欧美另类在线| 久久精品欧美日韩精品| 91精品久久久久久久99蜜桃| 91小宝寻花一区二区三区| 国产剧情一区在线| 美女视频黄频大全不卡视频在线播放| 亚洲美女视频在线观看| 国产精品久久久久天堂| 久久综合av免费| 精品久久国产97色综合| 欧美一区二区三区性视频| 欧美三日本三级三级在线播放| 99热99精品| www.亚洲国产| bt欧美亚洲午夜电影天堂| 国产91精品免费| 国产精品18久久久久久久久久久久 | 亚洲精品中文字幕乱码三区 | 一区在线播放视频| 国产女人aaa级久久久级| 欧美精品一区二区三区蜜桃视频 | 亚洲裸体xxx| 欧美激情在线看| 国产丝袜美腿一区二区三区| 亚洲精品国产一区二区三区四区在线| 国产精品家庭影院| 中文字幕一区二区三区在线不卡| 欧美国产精品一区二区三区| 久久久国产精品麻豆| 久久久久亚洲综合| 国产日韩欧美在线一区| 国产视频一区二区在线观看| 国产免费成人在线视频| 国产精品天干天干在观线| 国产精品视频线看| 亚洲三级在线播放| 一区二区三区四区激情| 亚洲国产精品视频| 日韩国产欧美三级| 另类小说欧美激情| 粉嫩蜜臀av国产精品网站| youjizz久久| 欧美亚男人的天堂| 欧美一区二区三区精品| 精品国产乱码久久久久久蜜臀 | 精品成人一区二区三区四区| 久久噜噜亚洲综合| 欧美日韩成人综合在线一区二区| 日本中文一区二区三区| 男人的天堂久久精品| 久久精品国产第一区二区三区| 精品在线观看视频| 成人国产精品免费观看动漫| 91成人免费电影| 精品福利在线导航| 1000部国产精品成人观看| 天涯成人国产亚洲精品一区av| 久久精品噜噜噜成人av农村| 欧美日韩日日骚| 国产精品亚洲а∨天堂免在线| 精品影院一区二区久久久| 成人性生交大合| 欧美日韩一卡二卡| 久久综合狠狠综合| 亚洲欧美日韩人成在线播放| 日韩影院在线观看| 国产69精品久久久久毛片| 欧美在线免费观看亚洲| 精品久久久久久综合日本欧美| 亚洲日本在线看| 免费欧美高清视频| 99久久精品免费看| 日韩欧美国产三级| 亚洲精品国久久99热| 精彩视频一区二区| 欧美三级电影在线观看| 国产欧美一区二区三区鸳鸯浴 | 色婷婷av久久久久久久| 欧美日韩精品欧美日韩精品| 久久亚洲春色中文字幕久久久| 中文字幕日韩精品一区| 免费在线观看不卡| 欧美草草影院在线视频| 久久久国产精品午夜一区ai换脸| 亚洲国产色一区| 国产一区二三区好的| 精品视频在线免费观看| 国产精品久久久久影视| 久久国产麻豆精品| 欧美视频在线播放| 国产精品国产三级国产aⅴ无密码| 美女www一区二区| 日本高清免费不卡视频| 国产日本欧洲亚洲| 乱一区二区av| 欧美精品18+| 中文字幕一区三区| 国产高清视频一区| 欧美成人性福生活免费看| 亚洲成人福利片| 91高清在线观看| 国产精品电影一区二区| 国产丶欧美丶日本不卡视频| 日韩欧美一区二区三区在线| 亚洲成人免费视频| 欧美性欧美巨大黑白大战| 综合电影一区二区三区| 成人av电影在线观看| 国产欧美精品一区| 国产69精品久久99不卡| 久久精品一区蜜桃臀影院| 国产在线播放一区三区四| 日韩欧美中文一区| 蜜桃视频一区二区三区| 欧美日韩一级片网站| 亚洲一区二区三区四区在线观看| 成人国产精品免费观看动漫| 国产精品情趣视频| eeuss鲁片一区二区三区| 中文字幕+乱码+中文字幕一区| 国产在线精品一区在线观看麻豆| 日韩视频免费观看高清完整版 | 日本一区二区免费在线观看视频| 国产综合色视频| 久久久久久97三级| 国产成人精品免费看| 色婷婷av一区| 色欲综合视频天天天| 国产精品电影一区二区| 不卡电影一区二区三区| 中文字幕一区av| 91黄色免费看| 亚洲丶国产丶欧美一区二区三区| 欧美色中文字幕| 日韩电影在线一区二区三区| 精品久久久久久久人人人人传媒| 国产一区二区精品久久| 亚洲成人第一页| 日韩一卡二卡三卡四卡| 国产一区二区导航在线播放| 欧美高清在线视频| 色一情一伦一子一伦一区| 亚洲一区二区高清| 日韩欧美区一区二| 国产黄色成人av| 尤物av一区二区| 欧美妇女性影城| 国产乱子轮精品视频| 亚洲视频一区二区在线| 欧美顶级少妇做爰| 国产成a人无v码亚洲福利| 亚洲男人的天堂在线观看| 在线播放91灌醉迷j高跟美女| 狠狠色丁香九九婷婷综合五月| 国产精品素人视频| 欧美日韩精品三区| 国产一区二区三区电影在线观看| 亚洲同性gay激情无套| 欧美无乱码久久久免费午夜一区| 亚洲成人一区在线| 国产亚洲欧洲997久久综合| 91一区二区在线观看| 日韩福利电影在线| 亚洲欧美综合色| 制服视频三区第一页精品| 国产成人高清视频| 香蕉加勒比综合久久| 久久精品人人爽人人爽| 欧美色图激情小说| 国产激情91久久精品导航| 亚洲第一会所有码转帖| 国产亚洲女人久久久久毛片| 欧美日韩一级片在线观看| 国产精品一区久久久久| 亚洲午夜久久久久久久久久久 | 欧美日韩国产高清一区| 国产精品1区二区.| 日产欧产美韩系列久久99| 中文字幕一区二区三区在线播放| 一区二区三区在线观看欧美| 欧美一区二区三区在线电影| 99久久精品国产观看| 激情久久久久久久久久久久久久久久| 一区二区三区在线视频免费观看|