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

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

?? usbtargrbclib.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* usbTargRbcLib.c - USB Reduced Block Command set routine library *//* Copyright 2004 Wind River Systems, Inc. *//*DESCRIPTIONThis module defines the USB_ERP callback routines directly used by the USB 2.0 mass storage driver. These callback routines invoke the routines defined in the file usbTargRbcCmd.c.INCLUDES: vxWorks.h, ramDrv.h, cbioLib.h, logLib.h,          usb/usbPlatform.h, usb/usb.h, usb/usbdLib.h,          usb/target/usbTargLib.h, drv/usb/usbBulkDevLib.h,          drv/usb/target/usbTargMsLib.h, drv/usb/target/usbTargRbcCmd.h*//*Modification History--------------------01f,02aug04,mta  Changes to modification history01e,23jul04,hch  change vxworks.h to vxWorks.h01d,23jul04,ami  Coding Convention Changes01c,21jul04,ami  Cleaned the warning messages01b,19jul04,hch  created the file element01a,15mar04,jac  written.*//* includes */#include "vxWorks.h"#include "ramDrv.h"#include "cbioLib.h"#include "usb/usbPlatform.h"#include "usb/usb.h"#include "usb/target/usbTargLib.h"#include "usb/usbdLib.h"#include "drv/usb/usbBulkDevLib.h"#include "drv/usb/target/usbTargMsLib.h"#include "drv/usb/target/usbTargRbcCmd.h"/* defines *//* RBC commands */#define RBC_CMD_FORMAT			0x04	/* format command */#define RBC_CMD_READ10			0x28	/* read (10) command */ #define RBC_CMD_READCAPACITY		0x25	/* read media capacity command*/#define RBC_CMD_STARTSTOPUNIT		0x1B	/* start/stop file */#define RBC_CMD_SYNCCACHE		0x35	/* sync. cache command */#define RBC_CMD_VERIFY10		0x2F	/* verify (10) command */#define RBC_CMD_WRITE10			0x2A	/* write (10) command *//* SPC-2 commands */#define RBC_CMD_INQUIRY			0x12	/* inquiry command */#define RBC_CMD_MODESELECT6		0x15	/* mode select command */#define RBC_CMD_MODESENSE6		0x1A	/* mode sense command */#define RBC_CMD_PERSISTANTRESERVIN	0x5E	/* reserve IN */#define RBC_CMD_PERSISTANTRESERVOUT	0x5F	/* reserve OUT */#define RBC_CMD_PRVENTALLOWMEDIUMREMOVAL 0x1E	/* prevent/ allow medium */						/* removal */#define RBC_CMD_RELEASE6		0x17	/* release command */#define RBC_CMD_REQUESTSENSE		0x03	/* request sense command */#define RBC_CMD_RESERVE6		0x16	/* reserve command */#define RBC_CMD_TESTUNITREADY		0x00	/* test unit ready command */#define RBC_CMD_WRITEBUFFER		0x3B	/* write buffer *//* vendor specific commands */#define RBC_CMD_VENDORSPECIFIC_23	0x23	/* vendor specific command */#define RBC_CMD_SIZE6			0x06	/* size 6 command */#define RBC_CMD_SIZE10			0x0a	/* size 10 command */#define CBW_DATA_IN		1		/* Command Block Data IN */	#define CBW_DATA_OUT		0		/* Command Block Data Out */#define RBC_LUN			0		/* Logical Unit Number *//* globals */BOOL	g_bulkInStallFlag = FALSE;		/* Bulk IN data */BOOL	g_bulkOutStallFlag = FALSE;		/* Bulk OUT data *//* forward declarations */void bulkInErpCallbackCSW   (pVOID erp);void bulkOutErpCallbackData (pVOID erp);void bulkInErpCallbackData  (pVOID erp);void bulkInErpCallbackCSW   (pVOID erp);void bulkOutErpCallbackCBW  (pVOID erp);/********************************************************************************* bulkOutErpCallbackCBW - process the CBW on bulk-out pipe** This routine processes the the CBW (Command Block Wrapper) which is received* on the bulk out pipe.** RETURNS: N/A* * ERRNO:*  none*/void bulkOutErpCallbackCBW    (    pVOID	erp		/* USB_ERP endpoint request packet */    )    {    USB_ERP   	    *pErp     = (USB_ERP *)erp; /* USB_ERP */            STATUS          rbcRetVal = ERROR;		/* return value */    BOOL            rbcDataIn = FALSE;		/* flag for data in */    BOOL            rbcDataOut = FALSE;		/* flag for data out */     UINT8           * pData   = NULL;		/* data buffer */    UINT8           **ppData  = &pData;    UINT32          dSize     = 0;		/* size of data */    BOOL            validCBW  = FALSE;		/* flag for CBW */    BOOL            validReq  = TRUE;		/* flag for request */    USB_BULK_CBW    *pCbw  = NULL;		/* Command Block Wrapper */    USB_BULK_CSW    *pCsw  = NULL;		/* Command Block Status */    UINT8           opCode    = 0;		/* opcode */    UINT32          cbwDataXferLgth = 0;	/* transfer length */    UINT8           cbwDataDir;			/* direction */    ERP_CALLBACK    erpCallback = NULL;		/* ERP_CALLBACK pointer */    /* debug print */    usbDbgPrint("bulkOutErpCallbackCBW: Enter...\n");    /* signal that bulk out ERP is complete */    usbMsBulkOutErpInUseFlagSet (FALSE);    /* if we had a reset condition, then we are no longer configured */    if (usbMsIsConfigured() == FALSE)        return;    /* verify that the data is good */    if (pErp->result != OK)        return;    /*     * retrieve CBW from pErp and test if valid      * NOTE: USB_BULK_CBW has an odd size, so this struct must be byte      * aligned and packed      */    if (pErp->bfrList[0].actLen == sizeof(USB_BULK_CBW))        {        pCbw = (USB_BULK_CBW *)(pErp->bfrList[0].pBfr);        if (pCbw->signature == USB_BULK_SWAP_32(USB_CBW_SIGNATURE))            {            if (pCbw->lun == RBC_LUN)                 /* must be this LUN */                {                if ((pCbw->length >= 1) && (pCbw->length <= USB_CBW_MAX_CBLEN))                    validCBW = TRUE;                }            }        }    if (validCBW == TRUE)        {        /*         * init CSW, set status to "command good",         * set CSW tag to CBW tag          */        pCsw = usbMsCSWInit();        pCsw->status = USB_CSW_STATUS_PASS;        pCsw->tag = pCbw->tag;        pCsw->dataResidue = 0x0;                /* get data transfer lgth, and correct endian */        cbwDataXferLgth = USB_BULK_SWAP_32(pCbw->dataXferLength);        /* set data direction flag from CBW */        if(((pCbw->direction & USB_CBW_DIR_IN) >> 7) == 0x1)            cbwDataDir = CBW_DATA_IN;        else            cbwDataDir = CBW_DATA_OUT;        /* retrieve op code and execute RBC command */        opCode = pCbw->CBD[0];        switch(opCode)            {            /* RBC commands */            case RBC_CMD_FORMAT:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcFormat(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_READ10:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcRead(&pCbw->CBD[0], ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_READCAPACITY:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcCapacityRead(&pCbw->CBD[0],                                                  ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_STARTSTOPUNIT:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcStartStop(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_SYNCCACHE:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcCacheSync(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_VERIFY10:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcVerify(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_WRITE10:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcWrite(&pCbw->CBD[0], ppData, &dSize);                    erpCallback = bulkOutErpCallbackData;                    rbcDataOut = TRUE;                    }                else                    goto EXIT_ERROR;                break;            /* SPC-2 commands */            case RBC_CMD_INQUIRY:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcInquiry(&pCbw->CBD[0], ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_MODESELECT6:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcModeSelect(&pCbw->CBD[0],                                                ppData, &dSize);                    erpCallback = bulkOutErpCallbackData;                    rbcDataOut = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_MODESENSE6:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcModeSense(&pCbw->CBD[0],                                                ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_PERSISTANTRESERVIN:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcPersistentReserveIn(&pCbw->CBD[0],                                                ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_PERSISTANTRESERVOUT:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcPersistentReserveOut(&pCbw->CBD[0],                                                ppData, &dSize);                    erpCallback = bulkOutErpCallbackData;                    rbcDataOut = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_PRVENTALLOWMEDIUMREMOVAL:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcPreventAllowRemoval(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_RELEASE6:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcRelease(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_REQUESTSENSE:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcRequestSense(&pCbw->CBD[0],                                                  ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_RESERVE6:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcReserve(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_TESTUNITREADY:                if (pCbw->length == RBC_CMD_SIZE6)                    {                    rbcRetVal = usbTargRbcTestUnitReady(&pCbw->CBD[0]);                    erpCallback = bulkInErpCallbackCSW;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_WRITEBUFFER:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcBufferWrite(&pCbw->CBD[0],                                                 ppData, &dSize);                    erpCallback = bulkOutErpCallbackData;                    rbcDataOut = TRUE;                    }                else                    goto EXIT_ERROR;                break;            case RBC_CMD_VENDORSPECIFIC_23:                if (pCbw->length == RBC_CMD_SIZE10)                    {                    rbcRetVal = usbTargRbcVendorSpecific(&pCbw->CBD[0],                                                    ppData, &dSize);                    erpCallback = bulkInErpCallbackData;                    rbcDataIn = TRUE;                    }                else                    goto EXIT_ERROR;                break;            default:                validReq = FALSE;                goto EXIT_ERROR;            }        if (rbcRetVal == OK)            {            if (rbcDataIn == TRUE)                {                if (cbwDataXferLgth > 0)                    {                    if (cbwDataDir == CBW_DATA_IN)                        {                        if (cbwDataXferLgth == dSize)                            {                            pCsw->dataResidue = 0x0;                            /*                              * init Data-In ERP on Bulk-In pipe and submit                             * to TCD                              */                            if (usbMsBulkInErpInit(pData,dSize,                                                   erpCallback,NULL) != OK)                                goto EXIT_ERROR;                            }                        else if (cbwDataXferLgth > dSize)                            {                            pCsw->dataResidue = cbwDataXferLgth - dSize;                            /*                             * init Data In ERP on Bulk-In pipe and submit                             * to TCD                              */                            if (usbMsBulkInErpInit(pData,dSize,                                                   erpCallback,NULL) != OK)                                goto EXIT_ERROR;                            }                        else                            {                            /* set CSW Status 0x2 (phase error) */                            pCsw->status = USB_CSW_PHASE_ERROR;                            pData = (UINT8 *)pCsw;                            dSize = sizeof(USB_BULK_CSW);                            erpCallback = bulkInErpCallbackCSW;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久一区二区| 日韩欧美不卡在线观看视频| 日韩理论电影院| aaa亚洲精品| 亚洲自拍另类综合| 在线精品视频一区二区| 亚洲国产wwwccc36天堂| 欧美久久一二三四区| 美女国产一区二区三区| 精品av久久707| 成年人午夜久久久| 亚洲第一福利视频在线| 精品欧美一区二区三区精品久久| 国内精品久久久久影院一蜜桃| 国产欧美一区二区精品性| 99麻豆久久久国产精品免费优播| 一区二区三区国产精华| 欧美一区二区三区播放老司机 | 亚洲三级电影全部在线观看高清| 91毛片在线观看| 日韩福利视频网| 国产亚洲福利社区一区| 色婷婷激情综合| 激情综合五月天| 一区二区三区.www| 精品国产免费久久| 色欧美乱欧美15图片| 蜜臀久久99精品久久久画质超高清 | 91视频观看视频| 热久久一区二区| 国产精品久久久久久久久免费樱桃 | 国产区在线观看成人精品| 91官网在线观看| 国产成人在线视频网站| 亚洲图片一区二区| 国产日韩欧美综合一区| 欧美偷拍一区二区| 成人黄页毛片网站| 美国av一区二区| 亚洲不卡av一区二区三区| 国产丝袜欧美中文另类| 5566中文字幕一区二区电影| 99久久99精品久久久久久| 久久精品理论片| 亚洲高清三级视频| 亚洲欧美在线观看| 国产日本一区二区| 欧美一级xxx| 欧美午夜在线一二页| 成人午夜激情在线| 久久精品国产精品亚洲精品| 亚洲国产欧美日韩另类综合| 国产精品每日更新在线播放网址 | 粉嫩av一区二区三区粉嫩| 青青草精品视频| 五月天久久比比资源色| 亚洲精品欧美专区| 亚洲欧美视频在线观看视频| 国产视频不卡一区| 精品国产伦一区二区三区观看方式 | 欧美精品在欧美一区二区少妇| 成人免费高清在线观看| 国产精品456露脸| 蜜桃视频在线观看一区| 五月天一区二区三区| 一区二区三区中文免费| 国产精品亲子伦对白| 久久久亚洲高清| 久久丝袜美腿综合| 欧美精品一区二区三区在线 | 国产亚洲成年网址在线观看| 欧美一区二区三区男人的天堂| 欧美精品亚洲二区| 欧美日韩成人在线| 777亚洲妇女| 91麻豆精品国产无毒不卡在线观看| 精品视频1区2区3区| 欧美性生活久久| 欧美日韩国产综合视频在线观看| 欧美在线观看你懂的| 欧美色图第一页| 欧美精品v国产精品v日韩精品 | 国产福利精品导航| 成人免费av在线| 色综合夜色一区| 在线免费av一区| 欧美巨大另类极品videosbest | 婷婷综合久久一区二区三区| 首页综合国产亚洲丝袜| 九色|91porny| 国产91精品一区二区麻豆网站| 成人av在线资源网| 91极品视觉盛宴| 欧美日免费三级在线| 日韩午夜电影av| 国产欧美一区二区在线| 依依成人精品视频| 午夜精品123| 久久99精品一区二区三区三区| 国产一区二区三区黄视频| av不卡一区二区三区| 欧美日韩国产大片| 久久久久久97三级| 亚洲精品成a人| 日韩av网站免费在线| 在线看日本不卡| 日韩精品在线网站| 中日韩免费视频中文字幕| 亚洲一区av在线| 国产在线麻豆精品观看| 97se亚洲国产综合自在线 | 成人丝袜高跟foot| 欧美午夜一区二区| 精品国产sm最大网站免费看| 国产精品久久久久久久久免费相片 | 91麻豆精品国产综合久久久久久| 欧美精品一区二区三区蜜桃视频| 国产精品欧美经典| 日韩激情一区二区| caoporm超碰国产精品| 欧美日韩极品在线观看一区| 久久精品亚洲精品国产欧美| 亚洲一二三四区| 国产精品自拍三区| 在线观看日韩电影| 久久亚洲欧美国产精品乐播| 亚洲一区二区三区中文字幕在线| 精品一区二区三区视频| 欧美亚洲一区三区| 国产区在线观看成人精品| 日韩精品一区第一页| 99久久国产综合精品色伊| 欧美一级久久久久久久大片| 亚洲欧洲日韩av| 国产美女一区二区| 69堂国产成人免费视频| 亚洲欧美国产毛片在线| 国产91对白在线观看九色| 欧美日韩国产高清一区二区 | 久久无码av三级| 日韩av一级电影| 国产欧美精品日韩区二区麻豆天美| 亚洲国产日韩精品| 99re热这里只有精品免费视频| 精品国产91洋老外米糕| 蜜乳av一区二区| 91精品国产91久久久久久一区二区| 亚洲人妖av一区二区| 成人精品亚洲人成在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲一区二区视频| 在线观看一区日韩| 亚洲三级在线观看| 波多野结衣欧美| 国产欧美精品一区二区色综合| 国产在线麻豆精品观看| 欧美成人艳星乳罩| 日本不卡一区二区三区| 欧美视频日韩视频在线观看| 亚洲人精品午夜| 91热门视频在线观看| 中文久久乱码一区二区| 国产成人小视频| 国产精品天天看| 成人激情黄色小说| 国产精品家庭影院| 99久久国产综合色|国产精品| 日本一区二区成人| 波多野结衣在线一区| 亚洲视频在线一区观看| 91亚洲男人天堂| 一区二区三区日韩精品| 欧美日韩中文国产| 视频在线观看国产精品| 日韩一区二区三区高清免费看看| 日韩国产精品91| 精品免费国产二区三区 | 成人爽a毛片一区二区免费| 久久久久亚洲蜜桃| 成人国产在线观看| 一区二区三区鲁丝不卡| 欧美剧情片在线观看| 久久se精品一区精品二区| 久久亚洲一区二区三区明星换脸 | 精品国产欧美一区二区| 国产一区二区三区高清播放| 国产精品青草久久| 欧美在线一二三| 麻豆成人在线观看| 国产午夜三级一区二区三| 99久久久精品| 日韩国产欧美三级| 国产亚洲一区二区三区在线观看 | 亚洲一区二区欧美激情| 91精品欧美福利在线观看| 国产麻豆精品95视频| 亚洲精品成a人| 精品久久久久久最新网址| 成人美女视频在线观看| 午夜精品一区二区三区免费视频 |