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

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

?? usbtargrbccmd.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* usbTargRbcCmd.c - Reduced Block Command set routine library *//* Copyright 2004 Wind River Systems, Inc. *//*DESCRIPTIONThis module implements a framework based on the RBC (Reduced Block Command)set. These routines are invoked by the USB 2.0 mass storage driver basedon the contents of the USB CBW (command block wrapper).INCLUDES: vxWorks.h, disFsLib.h, dcacheCbio.h, ramDrv.h, usrFdiskPartLib.h,          usb/usbPlatform.h, usb/usb.h, usb/target/usbTargLib.h,           drv/usb/target/usbTargMsLib.h, drv/usb/target/usbTargRbcCmd.h*//*modification history--------------------01g,02aug04,mta  Merge from Integration Branch to development branch01f,29jul04,pdg  Diab warnings fixed01e,23jul04,hch  change vxworks.h to vxWorks.h01d,23jul04,ami  Coding Convention Changes01c,21jul04,pdg  Changes for windows host01b,19jul04,hch  created the file element01a,12mar04,jac  written.*//* includes */#include "vxWorks.h"#include "dosFsLib.h"#include "dcacheCbio.h"#include "ramDrv.h"#include "ramDiskCbio.h"#include "usrFdiskPartLib.h"#include "usb/usbPlatform.h"#include "usb/usb.h"#include "usb/usbLib.h"#include "usb/target/usbTargLib.h"#include "drv/usb/usbBulkDevLib.h"#include "drv/usb/target/usbTargMsLib.h"#include "drv/usb/target/usbTargRbcCmd.h"/* defines */#define DATA_BUFFER_LEN		BYTES_PER_BLOCK * NUM_BLOCKS /* data buffer */#define RBC_MODE_PARAMETER_PAGE	0x06		/* RBC Mode Page */		#define BLK_DEV_NAME		"/bd/0"		/* bulk device name */#ifdef USE_RBC_SUBCLASS    #define PERIPHERAL_DEVICE_TYPE	0xe  /* Simplified direct-access */                                              /* device (RBC) */#elif defined(USE_SCSI_SUBCLASS)    #define PERIPHERAL_DEVICE_TYPE      0x0  /* Direct-access device */#else    #error PERIPHERAL_DEVICE_TYPE undefined#endif#define PERIPHERAL_DEVICE_QUAL          0x0	/* device qualifier */	#define MIN_STD_INQUIRY_LGTH            36	/* inquiry length */#define VPD_SUPPORTED_PAGE_CODE         0x0	/* VPD page code */#define VPD_UNIT_SERIAL_NUM_PAGE_CODE   0x80	/* VPD serial page number */#define VPD_DEVICE_ID_PAGE_CODE         0x83	/* VPD device id page code */#define VENDOR_SPECIFIC_23_LENGTH	12	/* vendor specific length *//* locals */LOCAL VPD_SUPPORTED_PAGE g_vpdSupportedPage =    {    ((PERIPHERAL_DEVICE_QUAL & 0x7) << 5) |       PERIPHERAL_DEVICE_TYPE,       /* device qualifier and device type */    0x0,                            /* this page has page code = 0 */    0x0,                            /* reserved */    0x3,                            /* page length is three */    VPD_SUPPORTED_PAGE_CODE,        /* page zero is supported */    VPD_UNIT_SERIAL_NUM_PAGE_CODE,  /* serial num page */    VPD_DEVICE_ID_PAGE_CODE         /* device ID page */    };LOCAL VPD_DEVICE_ID_PAGE g_vpdDevIdPage =     {    ((PERIPHERAL_DEVICE_QUAL & 0x7) << 5) |       PERIPHERAL_DEVICE_TYPE,   /* device qualifier and device type */    VPD_DEVICE_ID_PAGE_CODE,    /* this page code */    0x0,                        /* reserved */    0x1,                        /* page length is one */        {        0x2,                    /* code set is ASCI */        0x1,                    /* association is zero, ID type is Vendor ID */        0x0,                    /* reserved */        DEVICE_ID_LGTH,         /* device ID length */        {DEVICE_ID}             /* the ASCI device ID */        }    };LOCAL VPD_UNIT_SERIAL_NUM_PAGE g_vpdSerialNumPage =     {    ((PERIPHERAL_DEVICE_QUAL & 0x7) << 5) |       PERIPHERAL_DEVICE_TYPE,       /* device qualifier and device type */    VPD_UNIT_SERIAL_NUM_PAGE_CODE,  /* this page code */    0x0,                            /* reserved */    24,                             /* this page length (n - 3) */        {        '0',0, 	                    /* SerialNumber */        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0,        '0',0        }    };LOCAL COMMAND_DATA g_cmdData =     {    ((PERIPHERAL_DEVICE_QUAL & 0x7) << 5) |       PERIPHERAL_DEVICE_TYPE,   /* device qualifier and device type */    0x1,        /* The device server does not support the tested SCSI */                /* operation code. All data after byte 1 is undefined */        {         0x0,    /* reserved fields */         0x0        },        0x2,        /* cdbSize */    0x0,        /* cdbOpCode */    0x0         /* cdbUsageMap */    };LOCAL STD_INQUIRY_DATA g_stdInquiryData =     {    ((PERIPHERAL_DEVICE_QUAL & 0x7) << 5) |       PERIPHERAL_DEVICE_TYPE,  /* device qualifier and device type */    0x80,   /* media is removable */    0x0,    /* The device does not claim conformance to any standard. */    0x2,    /* data format corresponds to this standard */    91,     /* n - 4 (95-4) */    0x0,    /* sccs = 0, no embedded storage ctrl */    0x0,    /* BQUE ENCSERV VS MULTIP MCHNGR Obsolete Obsolete ADDR16 */    0x0,    /* RELADR Obsolete WBUS16 SYNC LINKED Obsolete CMDQUE VS */        {        'W','R','S',' ',    /* vendorId[8] */        ' ',' ',' ',' '        },        {        'U','S','B',' ',    /* productId[16] */        'M','a','s','s',        ' ','S','t','o',        'r','a','g','e'        },        {        '1','.','0','0'     /* productRevisionLevel[4] */        },        {        0, 0, 0, 0,         /* vendorSpecific[20] */        0, 0, 0, 0,        0, 0, 0, 0,        0, 0, 0, 0,        0, 0, 0, 0        },    0x0,                    /* Reserved CLOCKING QAS IUS */    0x0,        {		    /* UINT16 VersionDescriptor[8] */        0x023C,             /* RBC ANSI NCITS.330:2000 */        0x0260,             /* SPC-2 (no version claimed) */        0, 0,                 0, 0, 0, 0        },        {        0, 0, 0, 0,         /* UINT8 Reserved3[22] */        0, 0, 0, 0,        0, 0, 0, 0,        0, 0, 0, 0,        0, 0, 0, 0,        0, 0        }    };LOCAL MODE_PARAMETER_HEADER g_deviceHdr =     {    sizeof(MODE_PARAMETER_LIST)-1,  /* data len */    0x0,                            /* reqd. by RBC */    0x0,                            /* reqd. by RBC */    0x0                             /* reqd. by RBC */    };LOCAL MODE_PARAMETER_LIST g_deviceParamList =     {    /* g_deviceHdr */    {    sizeof (MODE_PARAMETER_LIST)-1, /* data len */    0x0,                            /* reqd. by RBC */    0x0,                            /* reqd. by RBC */    0x0                             /* reqd. by RBC */    },    /* g_deviceParams */    {    0x80 | RBC_MODE_PARAMETER_PAGE, /* bit 7 is page save (always 1), */                                    /* page code is RBC (0x6) */    0xb,                            /* page length */    0x1,                            /* writeCacheDisable: return status */                                    /*after a WRITE */	{        /*Logical block Size = 512 Bytes (0x200) */        (BYTES_PER_BLOCK & 0xff00) >> 8,        BYTES_PER_BLOCK & 0xff	},	{	/*Number of logical blocks = 400 (0x190) */        (NUM_BLOCKS & 0xff000000) >> 24,        (NUM_BLOCKS & 0x00ff0000) >> 16,        (NUM_BLOCKS & 0x0000ff00) >> 8,        (NUM_BLOCKS & 0x000000ff),        },    0xFF,                           /* highest possible Power/Peformance */    0x3,                            /* read and write access, media cannot */                                    /*be formatted or locked */    0x0                             /* reserved */    }    };LOCAL MODE_PARAMETER_LIST g_deviceParamListMask = {    /* g_deviceHdr */    {    sizeof (MODE_PARAMETER_LIST)-1, /* data len */    0x0,                            /* reqd. by RBC */    0x0,                            /* reqd. by RBC */    0x0                             /* reqd. by RBC */    },    /* g_deviceParamsMask */    {    0x80 | RBC_MODE_PARAMETER_PAGE,  /* bit 7 is page save (always 1), */                                     /* page code is RBC (0x6) */    0x0,                             /* page length */    0x0,                             /* write cached disabled bit */        {	/* Logical block Size */        0x00,        0x00        },        {	        /* Number of logical blocks */        0x00,        0x00,        0x00,        0x00,        0x00        },    0x0,                             /* highest possible Power/Peformance */    0x0,                             /* READD WRITED FORMATD LOCKD */    0x0                              /* reserved */    }};LOCAL SENSE_DATA g_senseData =     {    0x70, 			/* VALID = 0, responseCode = current */				/*sense data */    0x0,  			/* obsolete */    SCSI_SENSE_NO_SENSE,	/* senseKey = NO SENSE */        {        0x0,    		/* info fields all zero */        0x0,        0x0,        0x0         },    0xa,    			/* additionalSenseLgth always 0xa */        {        0x0, 			/* cmdSpecificInfo[4] depends on command */        0x0,        0x0,        0x0        },    SCSI_ADSENSE_NO_SENSE,  	/* ASC = NO ADDITIONAL SENSE INFORMATION */    0x0,                    	/* ASCQ = NO ADDITIONAL SENSE INFORMATION */    0x0, 			/* fieldReplaceableUnitCode: 0 = no failures */				/* or no data avail */        {        0x0, 			/* bit 7 = 0 (invalid) => sense key specific */				/* data not defined */        0x0,        0x0        }    };LOCAL CAPACITY_DATA g_capacityData =     {    /* capacity data for the blocks */    ((NUM_BLOCKS - 1) & 0xff000000) >> 24,    ((NUM_BLOCKS - 1) & 0x00ff0000) >> 16,    ((NUM_BLOCKS - 1) & 0x0000ff00) >> 8,    (NUM_BLOCKS - 1) & 0x000000ff,    (BYTES_PER_BLOCK & 0xff000000) >> 24,    (BYTES_PER_BLOCK & 0x00ff0000) >> 16,    (BYTES_PER_BLOCK & 0x0000ff00) >> 8,    BYTES_PER_BLOCK & 0x000000ff    };LOCAL UINT8 g_VendorSpecificData[VENDOR_SPECIFIC_23_LENGTH] =       {      0,      0,      0,      0x08,      0x02,      0x54,      0x29,      0x7f,      0,      0,      0x02,      0      };LOCAL UINT8	g_dataInBfr[DATA_BUFFER_LEN];	/* Bulk In buffer */LOCAL UINT8	g_dataOutBfr[DATA_BUFFER_LEN];	/* Bulk Out buffer */LOCAL BOOL	g_mediaRemoved   = FALSE;	/* TRUE - if media removed */LOCAL BOOL	g_mediaReady     = TRUE;	/* TRUE - if media ready */LOCAL BOOL	g_mediaPrevent   = FALSE;	LOCAL UINT8	g_pwrConditions  = 0;		/* power conditions */pVOID g_rbcBlkDev = NULL;/********************************************************************************* usbTargRbcSenseDataSet - set sense data** This routine is used locally to set the sense key, additional sense code, * and additional sense code qualifier of the current sense data.** RETURNS: OK* * ERRNO:*  none.** \NOMANUAL*/LOCAL STATUS usbTargRbcSenseDataSet    (    UINT8	senseKey,	/* the SCSI sense key */    UINT8	asc,		/* additional sense code */    UINT8	ascq		/* additional sense code qualifier */    )    {    g_senseData.senseKey = senseKey;    g_senseData.asc = asc;    g_senseData.ascq = ascq;    return(OK);    }/********************************************************************************** usbTargRbcRead - read data from the RBC device** This routine reads data from the RBC block I/O device.** RETURNS: OK or ERROR* * ERRNO: none*  none*/STATUS usbTargRbcRead    (    UINT8	arg[10],	/* the RBC command */    UINT8	** ppData,	/* pointer to where data will be read by host */    UINT32	* pSize		/* size of data to be read */    )    {    UINT32      startBlk    = 0;	/* start block */    UINT16      numBlks     = 0;	/* number of blocks */    CBIO_DEV_ID cbio;			/* CBIO_DEV_ID */    STATUS      retVal;			/* status */    cookie_t    cookie;			/* cookie_t */    cbio = (CBIO_DEV_ID)usbTargRbcBlockDevGet ();    /* get starting blk number */    startBlk = (arg[2] << 24) | (arg[3] << 16)| (arg[4] << 8) | arg[5];    /* get number of blks */    numBlks = (arg[7] << 8) | arg[8];    /* perform blk read */    retVal = cbioBlkRW (cbio, startBlk, numBlks, (addr_t)&g_dataInBfr[0],                            CBIO_READ, &cookie);    *ppData = &g_dataInBfr[0];    *pSize  = BYTES_PER_BLOCK * numBlks;    if (retVal == ERROR)        {        usbDbgPrint ("usbTargRbcRead: cbioBlkRW returned ERROR\n");        return(ERROR);        }    /* set sense data to no sense */    usbTargRbcSenseDataSet(SCSI_SENSE_NO_SENSE,SCSI_ADSENSE_NO_SENSE,0x0);    return(OK);    }/******************************************************************************** usbTargRbcCapacityRead - read the capacity of the RBC device** This routine reads the capacity of the RBC block I/O device.** RETURNS: OK or ERROR* * ERRNO: *  none.*/STATUS usbTargRbcCapacityRead    (    UINT8	arg[10],	/* RBC command */    UINT8	**ppData,	/* point to capacity data */    UINT32	*pSize		/* size of capacity */    )    {    if (!g_mediaRemoved)        {        *ppData = (UINT8 *)&g_capacityData;        *pSize  = sizeof(CAPACITY_DATA);        /* set sense data to no sense */        usbTargRbcSenseDataSet(SCSI_SENSE_NO_SENSE,SCSI_ADSENSE_NO_SENSE,0x0);        }    else        {        *ppData = NULL;        *pSize = 0;        /*          * set sense key to NOT READY (02h), and an ASC of LOGICAL UNIT          * NOT READY (04h). set ASCQ to cause not reportable (0x0)           */        usbTargRbcSenseDataSet (SCSI_SENSE_NOT_READY,                                 SCSI_ADSENSE_LUN_NOT_READY, 0x0);        return(ERROR);        }    return(OK);    }/********************************************************************************* usbTargRbcStartStop - start or stop the RBC device** This routine starts or stops the RBC block I/O device.** RETURNS: OK or ERROR* * ERRNO:*  none*/STATUS usbTargRbcStartStop     (     UINT8	arg[6]		/* the RBC command */     )     {     UINT8	pwrConditions = arg[4] & 0xf0;	/* power conditions */     UINT8	loEj  = arg[4] & 0x2;		/* load eject */     UINT8	start = arg[4] & 0x1;		/* enable or disable media */						/* access operations */    if (pwrConditions != 0)        {        switch (pwrConditions)            {            case 1:                /* Place device in Active condition */                break;            case 2:                /* Place device in Idle condition */                break;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产自产拍高清av王其| 91成人在线精品| eeuss鲁片一区二区三区| 91美女在线视频| 欧美高清www午色夜在线视频| 精品久久久久久久久久久久久久久久久| 精品播放一区二区| 中文字幕在线观看一区| 亚洲图片欧美色图| 国产麻豆9l精品三级站| 色天天综合久久久久综合片| 91精品国产综合久久精品图片| 久久噜噜亚洲综合| 亚洲国产cao| 国产99精品视频| 欧美性大战xxxxx久久久| 精品国产一区二区三区不卡| 亚洲色图另类专区| 狠狠色丁香久久婷婷综| 在线视频你懂得一区二区三区| 欧美变态tickle挠乳网站| 最新欧美精品一区二区三区| 久久精品久久99精品久久| 91影院在线观看| 精品日韩av一区二区| 一区二区三区欧美视频| 国产精品伊人色| 欧美日韩精品久久久| 欧美国产日韩a欧美在线观看| 图片区小说区区亚洲影院| 高潮精品一区videoshd| 日韩一区二区在线看| 亚洲精品写真福利| 国产传媒欧美日韩成人| 欧美酷刑日本凌虐凌虐| 亚洲乱码国产乱码精品精可以看| 国产在线精品一区二区| 制服丝袜一区二区三区| 亚洲色图视频免费播放| 国产成人精品免费视频网站| 日韩小视频在线观看专区| 亚洲国产综合色| av电影天堂一区二区在线| 久久久久国产精品人| 午夜精品久久久久久久久| 99久久婷婷国产精品综合| 久久先锋影音av| 蜜臀a∨国产成人精品| 欧美天堂一区二区三区| 国产精品成人网| 高清免费成人av| 精品国产乱码久久久久久闺蜜| 亚洲不卡av一区二区三区| 色系网站成人免费| 亚洲欧美在线aaa| 成人性生交大片| 欧美极品另类videosde| 国产一二三精品| 日韩欧美你懂的| 人人超碰91尤物精品国产| 欧美福利视频导航| 午夜影视日本亚洲欧洲精品| 在线免费观看日本欧美| 亚洲精品精品亚洲| 色哟哟一区二区在线观看| 亚洲人成精品久久久久久| av一区二区三区黑人| 国产精品网友自拍| 成人在线综合网| 日本一区二区三区四区在线视频 | 欧美精品一区在线观看| 首页综合国产亚洲丝袜| 欧美系列日韩一区| 夜夜嗨av一区二区三区中文字幕 | 亚洲最新在线观看| 日本道精品一区二区三区 | 欧美艳星brazzers| 亚洲一级电影视频| 欧美日韩在线三级| 水蜜桃久久夜色精品一区的特点| 欧美日韩国产小视频| 日韩精品高清不卡| 精品久久一区二区三区| 国产一区二区三区精品视频 | 成人av影院在线| 综合激情网...| 在线视频亚洲一区| 五月婷婷综合在线| 日韩一区二区三区观看| 激情综合色播激情啊| 国产日韩欧美一区二区三区综合| 成人毛片老司机大片| 亚洲色图都市小说| 欧美午夜在线一二页| 视频在线在亚洲| 日韩视频在线永久播放| 韩日av一区二区| 国产精品成人一区二区三区夜夜夜| 色婷婷国产精品久久包臀| 亚洲r级在线视频| 欧美mv日韩mv国产网站app| 国产中文一区二区三区| 国产精品人成在线观看免费| 色狠狠av一区二区三区| 香蕉影视欧美成人| 久久免费精品国产久精品久久久久| 国产91在线看| 亚洲午夜免费电影| 精品国产一区二区三区av性色| 成人av中文字幕| 午夜精品久久久久久久99水蜜桃| www激情久久| 91丨porny丨国产入口| 丝袜美腿一区二区三区| 久久婷婷成人综合色| 91日韩一区二区三区| 日韩av成人高清| 日本一区二区动态图| 欧美日韩情趣电影| 国产精品88av| 亚洲成av人片在线观看无码| 国产亚洲视频系列| 欧美性videosxxxxx| 国产精品亚洲第一 | 欧美一区二区三区婷婷月色| 国产精品资源网站| 亚洲va欧美va国产va天堂影院| 精品福利一区二区三区免费视频| 91首页免费视频| 久久精品国产精品亚洲综合| 亚洲免费在线电影| 日韩欧美激情在线| 欧洲日韩一区二区三区| 狠狠色丁香九九婷婷综合五月| 亚洲精品国产精华液| 久久精品一区八戒影视| 欧美女孩性生活视频| 成人精品免费看| 蜜桃精品视频在线| 有坂深雪av一区二区精品| 久久久美女艺术照精彩视频福利播放| 欧美午夜在线观看| 99久久精品免费看| 国产剧情一区在线| 日韩av高清在线观看| 一区二区在线观看视频| 中日韩免费视频中文字幕| 欧美电影精品一区二区| 欧美日韩在线免费视频| 91在线精品一区二区三区| 激情综合亚洲精品| 丝袜亚洲另类丝袜在线| 一区二区三区欧美激情| 国产欧美精品一区aⅴ影院| 欧美一级黄色录像| 欧美精品一二三区| 精品视频一区 二区 三区| 色系网站成人免费| 91影院在线观看| 不卡视频一二三四| 成人小视频免费在线观看| 久久66热re国产| 免费在线观看成人| 一区二区不卡在线视频 午夜欧美不卡在| 精品福利一区二区三区| 欧美一区二区观看视频| 欧美日本一道本| 欧美丝袜自拍制服另类| 在线免费精品视频| 在线这里只有精品| 色域天天综合网| 一本到不卡免费一区二区| 99久久久国产精品| 99久精品国产| 91欧美一区二区| 91蜜桃免费观看视频| 91亚洲国产成人精品一区二区三| 成人中文字幕在线| 成人avav影音| 成人美女视频在线观看18| 不卡视频在线观看| 99精品国产91久久久久久 | 天天色图综合网| 香蕉久久夜色精品国产使用方法| 亚洲国产日韩a在线播放性色| 一区二区三区四区蜜桃| 艳妇臀荡乳欲伦亚洲一区| 亚洲午夜久久久久| 亚洲成人av电影| 日韩高清在线电影| 老司机一区二区| 国产精品一区二区黑丝| 国产成人av电影在线播放| 成人小视频免费在线观看| 91一区二区三区在线观看| 欧美亚洲综合色| 91精品国产一区二区人妖| 欧美va天堂va视频va在线| 久久男人中文字幕资源站| 国产精品免费网站在线观看|