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

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

?? 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线电影欧美成精品| 欧美主播一区二区三区| 日韩av网站免费在线| 亚洲精品中文在线| 综合亚洲深深色噜噜狠狠网站| 91精品国产综合久久精品app| 毛片av一区二区三区| 亚洲成人av一区二区| 亚洲一卡二卡三卡四卡五卡| 亚洲一区二区偷拍精品| 成人夜色视频网站在线观看| 国内精品写真在线观看 | 欧美日韩日日摸| 在线看日韩精品电影| 国产精品人人做人人爽人人添| 国产精品理伦片| 亚洲综合在线视频| 日韩国产精品大片| 欧美日韩五月天| 亚洲午夜激情av| 国产一区二区精品在线观看| 成人开心网精品视频| 久久婷婷久久一区二区三区| 久久综合九色综合久久久精品综合 | 精品一区二区精品| 粉嫩高潮美女一区二区三区| 99re热这里只有精品免费视频| 色综合婷婷久久| 欧美另类变人与禽xxxxx| 亚洲永久免费视频| 日本久久一区二区三区| 欧美一区二区国产| 免费人成黄页网站在线一区二区 | 成人a区在线观看| 欧美美女激情18p| 亚洲一区二区三区四区在线观看| 91蜜桃免费观看视频| 日韩欧美视频在线| 中文字幕日本不卡| 免费观看在线综合| 日韩免费看的电影| 国产精品小仙女| 欧美人伦禁忌dvd放荡欲情| 久久久噜噜噜久噜久久综合| 亚洲精品国产无天堂网2021| 在线亚洲免费视频| 视频一区二区不卡| 欧美性生活久久| 1000部国产精品成人观看| 色综合久久综合| 中文字幕欧美激情| 日韩成人精品视频| 精品成a人在线观看| 亚洲第一狼人社区| 日韩精品一区二区三区视频| 国产一二三精品| 国产精品灌醉下药二区| 91激情五月电影| 美女看a上一区| 国产精品美女久久久久久久网站| 91精彩视频在线| 国模冰冰炮一区二区| 亚洲色图清纯唯美| 日韩欧美激情四射| 97久久精品人人澡人人爽| 亚洲高清不卡在线| 国产日产亚洲精品系列| 精品亚洲aⅴ乱码一区二区三区| 国产拍欧美日韩视频二区 | 国产精品18久久久久久久久久久久| 国产女主播一区| 欧美日韩日本视频| 国产精品一区二区不卡| 亚洲一区二区黄色| 国产视频一区二区三区在线观看| 久久精品免费观看| 日韩欧美一级二级| 91成人在线精品| 国产精品一区二区不卡| 亚洲电影中文字幕在线观看| 国产亚洲成年网址在线观看| 欧美视频在线一区二区三区| 国产精品一区二区久久精品爱涩 | 国产又粗又猛又爽又黄91精品| 亚洲欧美日韩国产中文在线| 91色婷婷久久久久合中文| 美女在线观看视频一区二区| 亚洲美腿欧美偷拍| 国产蜜臀av在线一区二区三区| 69av一区二区三区| 一本大道av一区二区在线播放| 久久av资源网| 五月天中文字幕一区二区| 欧美视频自拍偷拍| 91在线观看地址| 福利电影一区二区三区| 麻豆精品在线播放| 午夜不卡在线视频| 亚洲亚洲精品在线观看| 亚洲私人黄色宅男| 国产精品视频一二三| www欧美成人18+| 日韩欧美一级精品久久| 884aa四虎影成人精品一区| 欧美色图片你懂的| 色综合网色综合| 91亚洲国产成人精品一区二三| 国产黄人亚洲片| 亚洲电影第三页| 亚洲444eee在线观看| 亚洲电影一区二区| 婷婷亚洲久悠悠色悠在线播放| 一区二区国产盗摄色噜噜| 亚洲欧洲综合另类在线| 一区二区三区四区av| 一区二区三区不卡在线观看| 一区二区视频免费在线观看| 亚洲图片有声小说| 婷婷夜色潮精品综合在线| 奇米精品一区二区三区四区| 久久精品久久综合| 国产综合久久久久久久久久久久| 国产在线观看免费一区| 成熟亚洲日本毛茸茸凸凹| 9久草视频在线视频精品| 亚洲午夜私人影院| 日本成人在线看| 久久国产精品无码网站| 韩国三级中文字幕hd久久精品| 国产乱码字幕精品高清av| 成人午夜激情片| 色婷婷综合在线| 欧美日韩一区高清| 精品久久久久久久久久久久包黑料| 97国产一区二区| 欧美视频一区二区在线观看| 欧美色图第一页| 精品美女在线观看| 国产午夜精品福利| 一区二区三区四区蜜桃| 三级精品在线观看| 国产精品一区免费在线观看| 99精品欧美一区| 欧美久久久久久蜜桃| 久久精品人人做人人爽人人| 亚洲男女一区二区三区| 日韩—二三区免费观看av| 国产高清不卡一区二区| 91福利在线播放| 久久综合精品国产一区二区三区| 中文字幕字幕中文在线中不卡视频| 午夜天堂影视香蕉久久| 高清成人在线观看| 欧美精品电影在线播放| 国产精品视频在线看| 日韩成人伦理电影在线观看| 成人免费高清视频| 日韩欧美国产午夜精品| 亚洲免费看黄网站| 国产精品538一区二区在线| 欧美天堂亚洲电影院在线播放| 国产视频不卡一区| 日韩精品久久理论片| 91天堂素人约啪| 久久久久久电影| 日本亚洲视频在线| 欧美怡红院视频| 国产精品不卡视频| 国产成人在线影院| 精品国产一区二区三区久久影院| 一区二区三区四区五区视频在线观看| 国产乱色国产精品免费视频| 3d成人h动漫网站入口| 亚洲精品视频自拍| 成人网在线免费视频| 亚洲精品一区二区三区香蕉| 午夜久久久影院| 91久久精品一区二区三| 中文字幕不卡在线观看| 国产一区二区h| 精品日韩99亚洲| 日韩高清在线不卡| 在线综合视频播放| 夜夜嗨av一区二区三区网页| 99免费精品视频| 中文字幕一区三区| 国产91清纯白嫩初高中在线观看| 欧美大片国产精品| 麻豆精品国产传媒mv男同| 欧美日韩亚洲综合在线| 亚洲一级在线观看| 欧美影视一区在线| 亚洲国产wwwccc36天堂| 欧美色图片你懂的| 五月婷婷欧美视频| 777a∨成人精品桃花网| 免费高清成人在线| 欧美不卡一二三| 激情图片小说一区| 久久亚洲二区三区|