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

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

?? usbtransunitinit.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 4 頁
字號:
    pUSBTU_DEVICE_DRIVER pDriver = (pUSBTU_DEVICE_DRIVER)clientHandle;    USBTU_LOG ( "usbdDynamicAttachUnRegister entered \n");    /* Wind View Instrumentation */    if ((usbtuInitWvFilter & USBTU_WV_FILTER) == TRUE)        {        char evLog[USBTU_WV_LOGSIZE];        strncpy ((char*)evLog,(char *)(pDriver->clientName),USBD_NAME_LEN );        strcat(evLog, " : Dynamic Attach/Dettach Callback Unregister ");        USB_HCD_LOG_EVENT(USBTU_WV_CLIENT_INIT, evLog, USBTU_WV_FILTER);        }    /* unregister */    if ( pDriver->pDriverData )        status = usbHstDriverDeregister (pDriver->pDriverData);    if ( status != USBHST_SUCCESS)        {        USBTU_LOG ( "usbdDynamicAttachUnRegister returns ERROR \n");        return ERROR;        }    else        {        /* reset client structure members  */        pDriver->attachCallback = NULL;        OSS_FREE (pDriver->pDriverData);        pDriver->pDriverData = NULL;        }    USBTU_LOG ( "usbdDynamicAttachUnRegister returns OK \n");    return OK;    }/***************************************************************************** usbtuInitThreadFn - Translation Unit Thread Function** This function is executed by the Translation Unit Thread.* The thread waits on the  message queue created for the Translation Unit* The message is of the type USBTU_TUMSG.* Based on the USBTU_EVENTCODE in the message it performs appropriate actions** RETURNS: N/A** ERRNO: N/A*/VOID usbtuInitThreadFn     (     pVOID param                      /* User Parameter */    )    {    pUSB_CONFIG_DESCR pCfgDescr;    pUSB_INTERFACE_DESCR pIfDescr;    UINT8 * pBfr;    UINT8 * pScratchBfr;    UINT16 actLen;    UINT16 ifNo;    pUSBTU_NODE_INFO pNodeInfo;    UINT32   message;    pUSBTU_TUMSG pMessage;    pUSBTU_CLIENTMSG pClientMessage;    pUSBTU_DEVICE_DRIVER pDriverInfo;    pUSBTU_NODE_INFO     pDevInfo;    USBTU_LOG ( "Translation Unit Thread Function:usbtuInitThreadFn entered \n");    while(1)        {        /* receive message */        msgQReceive(usbtuMsgQid, (char*)&message,sizeof(UINT32), WAIT_FOREVER);        /* get pointer to USBTU_TUMSG message structure */        pMessage = (pUSBTU_TUMSG)message;        switch (pMessage->eventCode)            {            case ADDDEVICE:                USBTU_LOG ( "usbtuInitThreadFn ADDDEVICE message received\n");                /* message indicates device attach event */                /* allocate buffer to get configuration descriptor */                if ((pBfr = OSS_CALLOC (USB_MAX_DESCR_LEN)) == NULL)                    {                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn malloc failed \n");	                continue;	                }                /* Get the configuration descriptor  */                if (usbdDescriptorGet (NULL,		                              (USBD_NODE_ID)pMessage->hDevice,		                              USB_RT_DEVICE,		                              USB_DESCR_CONFIGURATION,		                              0,	                                  0,	 	                              USB_MAX_DESCR_LEN,		                              pBfr,		                              &actLen)		                              != OK)	                {	                OSS_FREE (pBfr);	                OSS_FREE (pMessage);                    USBTU_LOG("usbtuInitThreadFn usbdDescriptorGet failed \n");    	            continue;	                }                if ((pCfgDescr = usbDescrParse (pBfr,                                      	        actLen,                                                USB_DESCR_CONFIGURATION))== NULL)                    {                    OSS_FREE (pBfr);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn usbDescrParse failed \n");                    continue;                    }                /* Look for required interface descriptor   */                ifNo = 0;                /*                 * usbDescrParseSkip() modifies the value of the pointer                 * it recieves.                 * so we pass it a copy of our buffer pointer                 */                pScratchBfr = pBfr;                while ((pIfDescr = usbDescrParseSkip (&pScratchBfr,		               &actLen,			           USB_DESCR_INTERFACE))    			       != NULL)    	            {    	            if (ifNo == pMessage->interface)	                    break;    	            ifNo++;    	            }                if (pIfDescr == NULL)                    {                    OSS_FREE (pBfr);                    OSS_FREE (pMessage);                    USBTU_LOG("usbtuInitThreadFn usbDescrParseSkip failed\n");                    continue;                    }                /* allocate structure for new device attached */                if ( !(pNodeInfo = OSS_CALLOC( sizeof(USBTU_NODE_INFO))))                    {                    OSS_FREE (pBfr);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn malloc1 failed \n");                    continue;                    }                /* initialize members of structure */                pNodeInfo->hDevice = pMessage->hDevice;                pNodeInfo->configuration = 0;                pNodeInfo->interface = pMessage->interface;                /* search for client that manages device attached */                OSS_MUTEX_TAKE (usbtuMutex, OSS_BLOCK);                pDriverInfo = usbListFirst (&usbtuClientList);                while (pDriverInfo != NULL)                    {                    if ((pDriverInfo->class == pIfDescr->interfaceClass) &&                      (pDriverInfo->subclass == pIfDescr->interfaceSubClass) &&                      (pDriverInfo->protocol == pIfDescr->interfaceProtocol))	                    break;                                        /* Check if driver only cared about class and subclass */                    if ((pDriverInfo->class == pIfDescr->interfaceClass) &&                      (pDriverInfo->subclass == pIfDescr->interfaceSubClass) &&                      (pDriverInfo->protocol == USBD_NOTIFY_ALL))	                    break;                    /* Check if driver only cared about class */                    if ((pDriverInfo->class == pIfDescr->interfaceClass) &&                      (pDriverInfo->subclass == USBD_NOTIFY_ALL) &&                      (pDriverInfo->protocol == USBD_NOTIFY_ALL))	                    break;                    pDriverInfo = usbListNext (&pDriverInfo->tuDriverLink);                    }                OSS_MUTEX_RELEASE(usbtuMutex);                if (!(pDriverInfo))                    {                    /* no client registered for device type */                    OSS_FREE (pNodeInfo);                    OSS_FREE (pBfr);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn no client for device \n");                    continue;                    }                /* store message queue id of client */                pNodeInfo->msgQid = pDriverInfo->msgQid;                /* allocate a message structure to be sent to client thread */                if ( !(pClientMessage = OSS_CALLOC (sizeof (USBTU_CLIENTMSG))))                    {                    OSS_FREE (pNodeInfo);                    OSS_FREE (pBfr);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn malloc2 failed \n");                    continue;                    }                /* initialize message structure */                pClientMessage->eventCode = ADDDEVICE;                pClientMessage->hDevice = pNodeInfo->hDevice;                pClientMessage->interface = pNodeInfo->interface;                /* send the message to client thread */                if ( msgQSend(pNodeInfo->msgQid,(char *) &pClientMessage,                              sizeof(char *), NO_WAIT, MSG_PRI_URGENT )                              != OK)                    {                    /* could not send message to client thread */                    OSS_FREE (pNodeInfo);                    OSS_FREE (pBfr);                    OSS_FREE (pClientMessage);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn msgQSend failed \n");                    continue;                    }                /* update driver data with pointer to message q id */                *(pMessage->ppDriverData) = pNodeInfo->msgQid;                /* Link device structure to global list */                OSS_MUTEX_TAKE (usbtuMutex, OSS_BLOCK);                usbListLink (&usbtuDevList, pNodeInfo,                             &(pNodeInfo->devLink), LINK_TAIL);                OSS_MUTEX_RELEASE (usbtuMutex);                /* Free the memory allocated for the buffer */                OSS_FREE(pBfr);                break;            case REMOVEDEVICE:                USBTU_LOG ( "usbtuInitThreadFn REMOVEDEVICE message received \n");                /* message indicates device removal event */                /* allocate a message structure to send to client thread */                if ( !(pClientMessage = OSS_CALLOC( sizeof (USBTU_CLIENTMSG))))                    {                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn malloc failed \n");                    continue;                    }                /* initialize message structure */                pClientMessage->eventCode = REMOVEDEVICE;                pClientMessage->hDevice = pMessage->hDevice;                /* send message */                if ( msgQSend((MSG_Q_ID)pMessage->ppDriverData,                              (char *) &pClientMessage ,                              sizeof(char *), NO_WAIT, MSG_PRI_URGENT)                              != OK)                    {                    /* could not send message to client thread  */                    OSS_FREE ( pClientMessage);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn msgQSend failed \n");                    continue;                    }                break;             case SUSPENDDEVICE:                 USBTU_LOG ( "usbtuInitThreadFn SUSPENDDEVICE message received\n");                 /* message indicates device suspend  event */                 /* search devList for device structure */                 OSS_MUTEX_TAKE (usbtuMutex, OSS_BLOCK);                 pDevInfo = usbListFirst (&usbtuDevList);                 while (pDevInfo != NULL)                     {                     if ( pDevInfo->hDevice == pMessage->hDevice )	                     break;                     pDevInfo = usbListNext (&pDevInfo->devLink);                     }                 OSS_MUTEX_RELEASE (usbtuMutex);                 if (!(pDevInfo))                     {                     /* did not find device structure */                     OSS_FREE (pMessage);                     USBTU_LOG ( "usbtuInitThreadFn device not found \n");                     continue;                     }                 /* allocate a message structure to send to client thread */                 if ( !(pClientMessage = OSS_CALLOC(sizeof (USBTU_CLIENTMSG))))                     {                     OSS_FREE (pMessage);                     USBTU_LOG ( "usbtuInitThreadFn malloc failed \n");                     continue;                     }                 /* initialze message structure */                 pClientMessage->eventCode = SUSPENDDEVICE;                 pClientMessage->hDevice = pMessage->hDevice;                 /* send message */                 if ( msgQSend(pDevInfo->msgQid,(char *) &pClientMessage,                               sizeof(char *), NO_WAIT, MSG_PRI_URGENT )                               != OK)                     {                     /* could not send message to client */                     OSS_FREE ( pClientMessage);                     OSS_FREE (pMessage);                     USBTU_LOG ( "usbtuInitThreadFn msgQSend failed \n");                     continue;                     }                 /* update driver data */                 *(pMessage->ppDriverData) = pDevInfo->msgQid;                 break;            case RESUMEDEVICE:                USBTU_LOG ( "usbtuInitThreadFn RESUMEDEVICE  message received\n");                /* message indicates device resume  event */                /* allocate a message structure to be sent to client thread */                if ( !(pClientMessage = OSS_CALLOC( sizeof (USBTU_CLIENTMSG))))                    {                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn malloc failed \n");                    continue;                    }                /* initialize message structure */                pClientMessage->eventCode = RESUMEDEVICE;                pClientMessage->hDevice = pMessage->hDevice;                /* send the message to client  */                if ( msgQSend((MSG_Q_ID)pMessage->ppDriverData,                              (char *) &pClientMessage,                               sizeof(char *),                               NO_WAIT,                               MSG_PRI_URGENT )                               != OK )                    {                    /* could not send message to client */                    OSS_FREE (pClientMessage);                    OSS_FREE (pMessage);                    USBTU_LOG ( "usbtuInitThreadFn msgQSend failed \n");                    continue;                    }                break;            default:                break;            }        OSS_FREE(pMessage);        USBTU_LOG("Translation Unit Thread Function:waiting for more messages\n");        }    }/***************************************************************************** usbtuInitClientThreadFn - Client Thread Function** This function is executed by a client Thread.* The thread waits on the  message queue created for the client* The message is of the type USBTU_CLIENTMSG.* Based on the USBTU_EVENTCODE in the message it performs the action.** RETURNS: N/A** ERRNO: N/A*/VOID usbtuInitClientThreadFn

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合在线观看| 色八戒一区二区三区| 欧美日韩综合一区| www久久精品| 亚洲精品视频一区| 狠狠久久亚洲欧美| 91视频91自| 日韩精品中文字幕在线不卡尤物| 国产亚洲短视频| 亚洲自拍都市欧美小说| 午夜精品免费在线| 成人黄色小视频| 在线不卡的av| 亚洲三级电影全部在线观看高清| 午夜成人在线视频| 色婷婷综合久久久中文一区二区| 日韩一区二区在线看片| 亚洲综合一区二区三区| 国产精品99久久久| 91精品国产综合久久精品图片| 久久精品人人做人人爽人人| 日韩高清中文字幕一区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日本一区二区综合亚洲| 亚洲va天堂va国产va久| www.成人网.com| 久久尤物电影视频在线观看| 五月婷婷久久综合| 91毛片在线观看| 中文字幕第一页久久| 国产原创一区二区| 9色porny自拍视频一区二区| 久久综合色婷婷| 久久激情五月激情| 4438x成人网最大色成网站| 一区二区三区欧美久久| 99精品视频中文字幕| 日韩欧美资源站| 奇米精品一区二区三区四区| 欧美日韩在线电影| 亚洲福利国产精品| 欧美日韩一区二区三区在线| 亚洲午夜在线观看视频在线| 视频一区二区欧美| 欧美久久高跟鞋激| 亚洲777理论| 欧美性猛交一区二区三区精品| 亚洲欧美一区二区三区久本道91| 国产成人福利片| 国产精品日韩成人| av中文字幕不卡| 亚洲美女一区二区三区| 日本高清不卡在线观看| 久久一二三国产| 久久99国产精品久久99| 亚洲精品在线电影| 国产成人在线视频播放| 中文一区在线播放| www.激情成人| 亚洲国产日韩一级| 日韩欧美三级在线| 国产久卡久卡久卡久卡视频精品| 久久久www成人免费毛片麻豆 | 天堂午夜影视日韩欧美一区二区| 欧美日韩国产大片| 日本美女一区二区三区视频| 日韩成人一区二区| 粉嫩欧美一区二区三区高清影视| 欧美日韩精品电影| 久久精品人人做人人综合 | 高清不卡在线观看| 精品久久久久一区二区国产| 国产美女视频91| 亚洲欧洲国产专区| 欧美久久久久久久久久| 久久爱另类一区二区小说| 国产欧美日韩麻豆91| 在线这里只有精品| 美女www一区二区| 国产精品人妖ts系列视频| 在线中文字幕一区二区| 久久精品国产亚洲高清剧情介绍 | 欧美日本乱大交xxxxx| 久久国产视频网| 国产精品污网站| 欧美性猛交xxxx乱大交退制版| 国产一区二区91| 日韩精品欧美精品| 一区二区三区欧美亚洲| 日本一区二区成人| 精品久久国产字幕高潮| 欧美日韩黄色一区二区| 91麻豆免费视频| 国产成人av电影免费在线观看| 日本不卡视频在线观看| 亚洲小说春色综合另类电影| 亚洲品质自拍视频| 中文字幕中文字幕一区| 国产网站一区二区| 欧美va日韩va| 日韩欧美你懂的| 欧美一级xxx| 欧美久久一区二区| 欧美日韩另类一区| 欧美三级中文字| 欧美综合久久久| 91搞黄在线观看| 91久久精品一区二区二区| proumb性欧美在线观看| 高清日韩电视剧大全免费| 国产91精品精华液一区二区三区 | 日韩av不卡在线观看| 亚洲成人免费观看| 亚洲成av人片在线观看| 亚洲丶国产丶欧美一区二区三区| 一区二区三区高清在线| 樱花影视一区二区| 亚洲制服丝袜av| 午夜欧美一区二区三区在线播放| 亚洲在线视频一区| 丝袜亚洲另类欧美| 蜜臀av一区二区在线免费观看| 日韩成人av影视| 国产在线精品不卡| 国产激情一区二区三区桃花岛亚洲| 国产乱码精品1区2区3区| 国产999精品久久久久久绿帽| 成人做爰69片免费看网站| 色综合一区二区三区| 91福利社在线观看| 91精品国产色综合久久不卡电影 | 欧美日韩国产综合久久| 日韩欧美123| 国产精品亲子乱子伦xxxx裸| 国产精品福利在线播放| 亚洲自拍偷拍av| 另类综合日韩欧美亚洲| 成人自拍视频在线观看| 欧美亚洲动漫精品| 日韩欧美在线影院| 中文av一区二区| 亚洲一区二区精品久久av| 久久99精品久久久久| 国产精品1区二区.| 91丨porny丨在线| 日韩三级.com| 日韩理论片在线| 久久99精品久久久久久国产越南 | 国产在线不卡一区| 色婷婷国产精品| 日韩免费观看高清完整版在线观看| 国产亚洲一二三区| 亚洲第一会所有码转帖| 国产盗摄一区二区三区| 欧美日韩午夜在线视频| 久久久国产精华| 视频一区二区不卡| 91麻豆国产自产在线观看| 欧美一区二区黄色| 一区二区三区精品视频| 国产成人精品综合在线观看| 欧美日韩视频不卡| 国产精品成人午夜| 精品亚洲porn| 欧美日韩午夜在线| 亚洲欧美成aⅴ人在线观看| 精东粉嫩av免费一区二区三区 | 成人性视频网站| 精品欧美乱码久久久久久 | 69av一区二区三区| 亚洲视频免费在线观看| 国产成人av电影免费在线观看| 欧美精品久久99| 亚洲一二三区在线观看| 99这里只有精品| 国产精品麻豆一区二区| 伦理电影国产精品| 欧美一区二区在线不卡| 亚洲午夜电影在线观看| 99视频超级精品| 中文字幕高清不卡| 国产激情视频一区二区在线观看| 7777精品伊人久久久大香线蕉的 | 亚洲日穴在线视频| 成人爽a毛片一区二区免费| www欧美成人18+| 久久成人免费网站| 91精品免费观看| 青青草国产成人99久久| 6080亚洲精品一区二区| 天天综合日日夜夜精品| 欧美亚洲高清一区| 亚洲国产精品久久久久婷婷884| 91丨九色丨黑人外教| 中文字幕永久在线不卡| 99视频在线精品| 亚洲欧美日韩电影| 在线观看一区日韩| 亚洲午夜一区二区| 欧美日本一道本在线视频|