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

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

?? usbkeyboardlib.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 5 頁
字號:
		}	    }	    /* 	     * If newTypematicChar is 0, then no keys were received in 	     * this report - so no keys are being held down.  If 	     * newTypematicChar matches the previous typematic char, 	     * then allow the typematic timer to continue.  If 	     * newTypematicChar is different (but non-zero), then start 	     * a new timer.  In all cases, only one key may be active 	     * for typematic repeat to be enabled. 	     */	    if (activeCount != 1)		newTypematicChar = 0;	    if (newTypematicChar != pSioChan->typematicChar)		{		pSioChan->typematicChar = newTypematicChar;		if (newTypematicChar != 0)		    {		    pSioChan->typematicTime = OSS_TIME ();		    pSioChan->typematicCount = 0;		    }		}	    updateTypematic (pSioChan);	}    /* invoke receive callback */    while (pSioChan->inQueueCount > 0 &&           pSioChan->putRxCharCallback != NULL &&           pSioChan->mode == SIO_MODE_INT)	{        (*pSioChan->putRxCharCallback) (pSioChan->putRxCharArg, 					nextInChar (pSioChan));	}    /*      * Copy the current list of active keys to the channel      * structure, overwriting the previous list.     */    for (i = 0; i < BOOT_RPT_KEYCOUNT; i++)	pSioChan->activeScanCodes [i] = pReport->scanCodes [i];    }/***************************************************************************** usbKeyboardIoctl - special device control** This routine is largely a no-op for the usbKeyboardLib.  The only ioctls* which are used by this module are the SIO_AVAIL_MODES_GET and SIO_MODE_SET.** RETURNS: OK on success, ENOSYS on unsupported request, EIO on failed request** ERRNO: none**\NOMANUAL*/LOCAL int usbKeyboardIoctl    (    SIO_CHAN *pChan,	    /* device to control */    int request,	/* request code */    void *someArg	/* some argument */    )    {    pUSB_KBD_SIO_CHAN pSioChan = (pUSB_KBD_SIO_CHAN) pChan;    int arg = (int) someArg;    switch (request)	{	case SIO_BAUD_SET:	    /* baud rate has no meaning for USB.  We store the desired 	     * baud rate value and return OK.	     */	    pSioChan->baudRate = arg;	    return OK;	case SIO_BAUD_GET:	    /* Return baud rate to caller */	    *((int *) arg) = pSioChan->baudRate;	    return OK;		case SIO_MODE_SET:	    /* Set driver operating mode: interrupt or polled */	    if (arg != SIO_MODE_POLL && arg != SIO_MODE_INT)		return EIO;	    pSioChan->mode = arg;	    return OK;	case SIO_MODE_GET:	    /* Return current driver operating mode for channel */	    *((int *) arg) = pSioChan->mode;	    return OK;	case SIO_AVAIL_MODES_GET:	    /* Return modes supported by driver. */	    *((int *) arg) = SIO_MODE_INT | SIO_MODE_POLL;	    return OK;	case SIO_OPEN:	    /* Channel is always open. */	    return OK;         case SIO_KYBD_MODE_SET:             switch (arg)                 {                 case SIO_KYBD_MODE_RAW:                 case SIO_KYBD_MODE_ASCII:                     break;                 case SIO_KYBD_MODE_UNICODE:                     return ENOSYS; /* usb doesn't support unicode */                 }             pSioChan->scanMode = arg;             return OK;         case SIO_KYBD_MODE_GET:             *(int *)someArg = pSioChan->scanMode;             return OK;         case SIO_KYBD_LED_SET:	    {	    UINT8 ledReport; 	    /*  update the channel's information about the LED state */		    pSioChan->numLock = (arg & SIO_KYBD_LED_NUM) ? SIO_KYBD_LED_NUM : 0;	    pSioChan->capsLock = (arg & SIO_KYBD_LED_CAP) ? 					SIO_KYBD_LED_CAP : 0;	    pSioChan->scrLock = (arg & SIO_KYBD_LED_SCR) ? 					SIO_KYBD_LED_SCR : 0;	    /* 	     * We are relying on the SIO_KYBD_LED_X macros matching the USB	     * LED equivelants.	     */	    ledReport = arg;	    /* set the LED's */	    setLedReport (pSioChan, ledReport);	     	    return OK;	    }         case SIO_KYBD_LED_GET:	     {	     int tempArg;	    	     tempArg = (pSioChan->capsLock) ? SIO_KYBD_LED_CAP : 0;    	     tempArg |= (pSioChan->scrLock) ? SIO_KYBD_LED_SCR : 0;    	     tempArg |= (pSioChan->numLock) ? SIO_KYBD_LED_NUM : 0;	     *(int *) someArg = tempArg;             return OK;	     }	case SIO_HW_OPTS_SET:   /* optional, not supported */	case SIO_HW_OPTS_GET:   /* optional, not supported */	case SIO_HUP:	/* hang up is not supported */	default:	    /* unknown/unsupported command. */	    return ENOSYS;	}    }/***************************************************************************** usbKeyboardTxStartup - start the interrupt transmitter** The USB keyboard SIO driver does not support output to the keyboard.** RETURNS: EIO** ERRNO: none**\NOMANUAL*/LOCAL int usbKeyboardTxStartup    (    SIO_CHAN *pChan	/* channel to start */    )    {    return EIO;    }/***************************************************************************** usbKeyboardCallbackInstall - install ISR callbacks to get/put chars** This driver allows interrupt callbacks for transmitting characters* and receiving characters.** RETURNS: OK on success, or ENOSYS for an unsupported callback type** ERRNO: none**\NOMANUAL*/ LOCAL int usbKeyboardCallbackInstall    (    SIO_CHAN *pChan,	    /* channel */    int callbackType,	    /* type of callback */    STATUS (*callback) (void *tmp, ...),  /* callback */    void *callbackArg	    /* parameter to callback */    )    {    pUSB_KBD_SIO_CHAN pSioChan = (pUSB_KBD_SIO_CHAN) pChan;    switch (callbackType)	{	case SIO_CALLBACK_GET_TX_CHAR:	    pSioChan->getTxCharCallback = (STATUS (*)()) (callback);	    pSioChan->getTxCharArg = callbackArg;	    return OK;	case SIO_CALLBACK_PUT_RCV_CHAR:	    pSioChan->putRxCharCallback = (STATUS (*)()) (callback);	    pSioChan->putRxCharArg = callbackArg;	    return OK;	default:	    return ENOSYS;	}    }/***************************************************************************** usbKeyboardPollOutput - output a character in polled mode** The USB keyboard SIO driver does not support output to the keyboard.** RETURNS: EIO** ERRNO: none**\NOMANUAL*/LOCAL int usbKeyboardPollOutput    (    SIO_CHAN *pChan,    char outChar    )    {    return EIO;    }/***************************************************************************** usbKeyboardPollInput - poll the device for input** This function polls the keyboard device for input.** RETURNS: OK if a character arrived, EIO on device error, EAGAIN* if the input buffer if empty, ENOSYS if the device is interrupt-only.** ERRNO: none**\NOMANUAL */LOCAL int usbKeyboardPollInput    (    SIO_CHAN *pChan,    char *thisChar    )    {    pUSB_KBD_SIO_CHAN pSioChan = (pUSB_KBD_SIO_CHAN) pChan;    int status = OK;    /* validate parameters */    if (thisChar == NULL)        return EIO;    OSS_MUTEX_TAKE (kbdMutex, OSS_BLOCK);    /* Check if the input queue is empty. */    if (pSioChan->inQueueCount == 0)        status = EAGAIN;    else	{	/* Return a character from the input queue. */	*thisChar = nextInChar (pSioChan);	}    OSS_MUTEX_RELEASE (kbdMutex);    return status;    }/***************************************************************************** initKbdIrp - Initialize IRP to listen for input on interrupt pipe** This function intializes the IRP to listen on the interrupt pipe** RETURNS: TRUE if able to submit IRP successfully, else FALSE** ERRNO: none**\NOMANUAL*/LOCAL BOOL initKbdIrp    (    pUSB_KBD_SIO_CHAN pSioChan    )    {    pUSB_IRP pIrp = &pSioChan->irp;    /* Initialize IRP */    memset (pIrp, 0, sizeof (*pIrp));    pIrp->userPtr = pSioChan;    pIrp->irpLen = sizeof (*pIrp);    pIrp->userCallback = usbKeyboardIrpCallback;    pIrp->timeout = USB_TIMEOUT_NONE;    pIrp->transferLen = sizeof (HID_KBD_BOOT_REPORT);    pIrp->bfrCount = 1;    pIrp->bfrList [0].pid = USB_PID_IN;    pIrp->bfrList [0].pBfr = (pUINT8) pSioChan->pBootReport;    pIrp->bfrList [0].bfrLen = sizeof (HID_KBD_BOOT_REPORT);    /* Submit IRP */    if (usbdTransfer (usbdHandle, pSioChan->pipeHandle, pIrp) != OK)	return FALSE;    pSioChan->irpInUse = TRUE;    return TRUE;    }/***************************************************************************** usbKeyboardIrpCallback - Invoked upon IRP completion/cancellation** Examines the cause of the IRP completion.  If completion was successful,* interprets the USB keyboard's boot report and re-submits the IRP.** RETURNS: N/A** ERRNO: none**\NOMANUAL*/LOCAL VOID usbKeyboardIrpCallback    (    pVOID p	    /* completed IRP */    )    {    pUSB_IRP pIrp = (pUSB_IRP) p;    pUSB_KBD_SIO_CHAN pSioChan = pIrp->userPtr;    OSS_MUTEX_TAKE (kbdMutex, OSS_BLOCK);    /* Was the IRP successful? */    if (pIrp->result == OK)	{	/* Interpret the keyboard report */	interpKbdReport (pSioChan);	}    /* Re-submit the IRP unless it was canceled - which would happen only     * during pipe shutdown (e.g., the disappearance of the device).     */    pSioChan->irpInUse = FALSE;    if (pIrp->result != S_usbHcdLib_IRP_CANCELED) 	{	initKbdIrp (pSioChan);	}    else         {        if (!pSioChan->connected)            {            /* Release structure. */            if (pSioChan->pBootReport != NULL)                OSS_FREE (pSioChan->pBootReport);		    OSS_FREE (pSioChan);            }                   }        OSS_MUTEX_RELEASE (kbdMutex);    }/***************************************************************************** typematicThread - Updates typematic state for each active channel** Updates typematic state for each active channel** RETURNS: N/A** ERRNO: none**\NOMANUAL*/LOCAL VOID typematicThread    (    pVOID param 	/* param not used by this thread */    )    {    pUSB_KBD_SIO_CHAN pSioChan;    while (!killTypematic)	{        OSS_MUTEX_TAKE (kbdMutex, OSS_BLOCK);        /* Walk the list of open channels and update the typematic         * state for each.         */        pSioChan = usbListFirst (&sioList);        while (pSioChan != NULL)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女在线视频一区| 国产女主播视频一区二区| 99视频一区二区三区| 久久99热狠狠色一区二区| 亚洲成人综合在线| 午夜视频久久久久久| 亚洲成va人在线观看| 亚洲资源中文字幕| 亚洲国产欧美在线人成| 亚洲午夜激情网页| 亚洲超碰97人人做人人爱| 亚洲第一福利一区| 男人的j进女人的j一区| 九一九一国产精品| 国产精品一区一区三区| 成人免费精品视频| 日本高清成人免费播放| 欧美美女bb生活片| 久久综合色婷婷| 国产精品福利在线播放| 亚洲乱码国产乱码精品精可以看 | 欧美一级在线免费| 精品久久久久久久久久久久包黑料| 6080亚洲精品一区二区| 日韩三级中文字幕| 国产精品拍天天在线| 一区二区不卡在线播放 | 91原创在线视频| 欧美午夜精品久久久久久孕妇 | 91视频91自| 欧美精品1区2区| 久久精品人人做人人综合| 亚洲欧美激情一区二区| 亚洲成人综合在线| 国产精品影视天天线| 色欧美乱欧美15图片| 日韩一区二区精品葵司在线| 国产农村妇女毛片精品久久麻豆| 亚洲黄色小说网站| 久久国产尿小便嘘嘘尿| 91在线观看美女| 日韩三级视频在线观看| 中文字幕在线一区免费| 日韩在线一区二区三区| 国产寡妇亲子伦一区二区| 欧美视频完全免费看| 久久久精品综合| 五月婷婷欧美视频| av在线播放一区二区三区| 3atv一区二区三区| 亚洲天堂av老司机| 国产精品一区在线| 日韩视频中午一区| 午夜视频一区在线观看| 99久久99久久综合| 国产亚洲欧美在线| 久久99热99| 日韩一区二区在线看| 一区二区视频在线| 国产精品亚洲午夜一区二区三区| 欧美日韩国产123区| 亚洲男人的天堂av| 成人深夜视频在线观看| 日韩视频123| 日韩va亚洲va欧美va久久| 欧洲激情一区二区| 亚洲免费av观看| 91视频.com| 亚洲天堂2014| 95精品视频在线| 日韩一区欧美一区| www.亚洲色图| 一色屋精品亚洲香蕉网站| 国产在线麻豆精品观看| 久久久久久久久免费| 麻豆免费看一区二区三区| 欧美一区二区福利视频| 婷婷久久综合九色综合绿巨人| 91官网在线免费观看| 亚洲欧美另类小说| 一本大道久久a久久综合婷婷 | 亚洲成a人v欧美综合天堂| 91美女福利视频| 一区二区三区精品| 欧美日韩高清在线播放| 日本不卡视频在线| 精品国产伦一区二区三区免费 | 久久午夜电影网| 国产精品一卡二卡| 亚洲国产精品激情在线观看| 成人免费精品视频| 中文字幕综合网| 欧美日韩免费高清一区色橹橹 | www激情久久| 国产精品一区二区果冻传媒| 久久精品人人爽人人爽| 菠萝蜜视频在线观看一区| 一区二区三区在线观看动漫| 欧美色网站导航| 麻豆国产精品777777在线| 国产亚洲欧美激情| 91久久精品国产91性色tv| 水野朝阳av一区二区三区| 久久一区二区三区国产精品| 99久久综合精品| 日韩电影一区二区三区| 国产无一区二区| 欧洲视频一区二区| 国产一区二区导航在线播放| 成人免费在线观看入口| 欧美私模裸体表演在线观看| 日韩av一二三| 欧美剧情片在线观看| 国产福利一区二区| 亚洲日本在线看| 日本二三区不卡| 韩国成人在线视频| 亚洲欧美怡红院| 欧美日韩1区2区| 极品少妇xxxx精品少妇偷拍| 精品国产sm最大网站免费看| 91蜜桃传媒精品久久久一区二区| 亚洲欧美日韩中文播放 | 欧美国产一区视频在线观看| av在线综合网| 国产精品夫妻自拍| 欧美一区二区三区喷汁尤物| 狠狠色狠狠色综合系列| 国产精品久久久久影院亚瑟| 在线视频综合导航| 精品综合免费视频观看| 亚洲成人免费在线| 国产视频911| 欧美美女一区二区在线观看| 久久精品国产久精国产| 亚洲男人的天堂在线观看| 国产女人18毛片水真多成人如厕 | 欧美日韩国产另类一区| 九色porny丨国产精品| 国产日本欧洲亚洲| 91麻豆精品91久久久久同性| 国产成人免费网站| 亚洲超碰97人人做人人爱| 国产女同性恋一区二区| 91精品中文字幕一区二区三区| 国产激情视频一区二区三区欧美| 亚洲国产精品久久人人爱蜜臀| 国产亚洲一区二区三区四区 | 欧美日本一区二区三区| 懂色av中文字幕一区二区三区| 久久精品国产亚洲高清剧情介绍| 中文字幕一区二区三区在线播放| 欧美草草影院在线视频| 欧美性videosxxxxx| 成人福利在线看| 免费成人小视频| 麻豆成人综合网| 午夜久久福利影院| 亚洲日本免费电影| 国产精品视频九色porn| 中文字幕高清不卡| 精品国内二区三区| 91精品国产91久久久久久一区二区 | 天天综合天天做天天综合| 国产调教视频一区| 一区免费观看视频| 国产精品天天看| 久久综合九色欧美综合狠狠| 欧美男同性恋视频网站| 91香蕉视频mp4| 欧美视频一区在线| 欧美日韩亚洲另类| 91福利区一区二区三区| 99精品偷自拍| 99久久99久久综合| 欧美日韩国产小视频在线观看| 色噜噜狠狠色综合中国| 在线一区二区三区| 欧美日韩一二三| 久久久久国产免费免费| 久久久久久久久蜜桃| 国产人久久人人人人爽| 国产午夜精品在线观看| 欧美一区二区三区成人| 国产精品―色哟哟| 成人免费在线播放视频| 亚洲最大成人综合| 日韩中文字幕麻豆| 成人aaaa免费全部观看| 91在线观看成人| 欧美精品丝袜久久久中文字幕| 欧美一区二区三区视频在线 | 日本不卡一区二区三区| 国产成人av一区二区三区在线观看| 国产成人精品免费看| 色婷婷香蕉在线一区二区| 欧美电影一区二区| 国产精品每日更新在线播放网址| 国产精品久久一卡二卡| 亚州成人在线电影|