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

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

?? usbtargrbccmd.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* 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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜伦理影院| 日本视频中文字幕一区二区三区| 国产精品资源网| 精品美女一区二区| 国产乱人伦精品一区二区在线观看| 日韩欧美成人午夜| 国产在线精品一区二区三区不卡| 久久九九久精品国产免费直播| 国产一区二区福利视频| 国产午夜一区二区三区| 成人激情免费视频| 亚洲国产美女搞黄色| 日韩一级视频免费观看在线| 精品一区二区三区在线播放视频 | 蜜臀av性久久久久av蜜臀妖精| 欧美剧情电影在线观看完整版免费励志电影| 石原莉奈在线亚洲三区| 日韩精品一区二区三区在线| 成人av在线看| 亚洲电影在线播放| www国产亚洲精品久久麻豆| 国产 日韩 欧美大片| 亚洲精品乱码久久久久久| 欧美一级片免费看| 成人性生交大片免费看中文 | 在线成人av影院| 国产一区二区h| 一区二区久久久| 2021久久国产精品不只是精品| 成人v精品蜜桃久久一区| 亚洲高清在线视频| xvideos.蜜桃一区二区| 欧美中文字幕不卡| 国产伦精品一区二区三区免费| 一区二区三区四区乱视频| 精品美女被调教视频大全网站| 一本大道久久a久久精品综合| 久久电影网电视剧免费观看| 亚洲欧美另类久久久精品2019| 欧美大肚乱孕交hd孕妇| 94色蜜桃网一区二区三区| 麻豆久久久久久久| 亚洲精品中文字幕在线观看| 久久亚区不卡日本| 精品视频1区2区3区| 成人动漫一区二区在线| 免费视频一区二区| 亚洲国产综合91精品麻豆| 亚洲国产精华液网站w| 欧美精品在线视频| 在线亚洲一区二区| 福利一区二区在线| 捆绑紧缚一区二区三区视频| 亚洲精品写真福利| 国产精品久久久久久久久免费相片 | 一本久久综合亚洲鲁鲁五月天 | 一区视频在线播放| 日韩女优av电影| 9191成人精品久久| 欧美影视一区在线| 色综合久久综合网97色综合| 丁香激情综合国产| 国产精品白丝jk黑袜喷水| 日韩精品一级二级 | 日韩欧美美女一区二区三区| 在线观看免费视频综合| 97se亚洲国产综合在线| www.欧美日韩国产在线| 成人动漫中文字幕| 不卡av在线免费观看| jiyouzz国产精品久久| 丁香天五香天堂综合| 国产一区二区毛片| 国产精品综合二区| 黄色日韩网站视频| 久久国产欧美日韩精品| 精品一区二区三区影院在线午夜| 日韩影院在线观看| 轻轻草成人在线| 日韩成人午夜精品| 麻豆精品视频在线| 国产乱子伦一区二区三区国色天香| 国产在线播放一区| 国产精品一区二区在线观看不卡| 狠狠色伊人亚洲综合成人| 国精产品一区一区三区mba桃花| 国产在线精品国自产拍免费| 国产成人在线观看免费网站| 国产91精品一区二区麻豆亚洲| 国产成人精品午夜视频免费| 成人午夜伦理影院| 91免费在线播放| 欧美图片一区二区三区| 制服丝袜激情欧洲亚洲| 日韩免费高清电影| 欧美激情一区二区在线| 亚洲天堂av老司机| 亚洲高清在线视频| 久久成人免费网站| 成人黄页毛片网站| 欧美日韩专区在线| 久久综合资源网| 亚洲国产成人在线| 一区二区三区小说| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品亚洲国内自在自线福利| 国产成人夜色高潮福利影视| 日本精品视频一区二区三区| 欧美精品久久久久久久多人混战| 日韩女优av电影| 国产精品传媒入口麻豆| 亚洲3atv精品一区二区三区| 激情五月激情综合网| 91同城在线观看| 91精品福利在线一区二区三区| 国产午夜三级一区二区三| 尤物av一区二区| 美腿丝袜亚洲一区| 94-欧美-setu| 精品嫩草影院久久| 亚洲欧洲精品一区二区三区| 日韩激情在线观看| 成人午夜免费av| 欧美一卡二卡在线| 亚洲视频在线一区| 经典三级一区二区| 在线观看一区不卡| 国产亚洲制服色| 午夜欧美2019年伦理| 成人亚洲一区二区一| 欧美一区二区三区视频免费播放| 中文字幕免费不卡在线| 五月天激情综合网| 色一区在线观看| 久久久精品免费网站| 秋霞影院一区二区| 欧美午夜影院一区| 日韩一区在线免费观看| 久久电影网站中文字幕| 欧美日韩免费高清一区色橹橹 | 国产精品国产自产拍高清av| 日本女人一区二区三区| 色网站国产精品| 久久精品在这里| 日本女优在线视频一区二区| 欧美日韩一区三区| 亚洲欧洲综合另类在线| 国产在线播放一区三区四| 欧美一级淫片007| 五月婷婷久久丁香| 日本道免费精品一区二区三区| 国产婷婷一区二区| 成人动漫一区二区三区| 26uuu欧美| 久久狠狠亚洲综合| 日韩欧美在线123| 日韩精品五月天| 欧美伦理影视网| 亚洲成人黄色小说| 欧美日韩一区二区三区视频 | 亚洲国产精品久久久男人的天堂| www.成人网.com| 国产精品久久精品日日| 成人一区二区三区在线观看| 国产欧美视频一区二区三区| 国产一区二区三区在线观看免费| 欧美大片拔萝卜| 久久99精品国产91久久来源| 精品日韩在线观看| 久久97超碰色| 久久你懂得1024| 国产成人在线视频免费播放| 中文文精品字幕一区二区| 成人午夜av影视| 国产精品人妖ts系列视频| 不卡大黄网站免费看| 亚洲卡通动漫在线| 欧美偷拍一区二区| 日本美女一区二区三区| 精品国产亚洲在线| 国产成人av电影在线| 国产精品久久久久久久岛一牛影视 | 亚洲一区二区三区四区在线观看 | 欧美激情一区二区三区全黄| 成人午夜免费电影| 中文字幕综合网| 欧美性生活大片视频| 蜜臀久久久久久久| 久久久久久久电影| 色综合天天在线| 亚洲午夜久久久久久久久久久 | 日韩免费视频一区| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品欧美一级免费| 久久综合999| 国产麻豆成人精品| 亚洲黄色免费网站| 日韩欧美二区三区| 91丝袜国产在线播放| 亚洲成a人v欧美综合天堂下载|