⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rbc.c

📁 smartARM2400 USB OTG例程
💻 C
📖 第 1 页 / 共 4 页
字号:
    ,__DEFAULT_VPD_SERIAL_PAGE
#endif
#if __MAXLUN > 11
    ,__DEFAULT_VPD_SERIAL_PAGE
#endif
#if __MAXLUN > 12
    ,__DEFAULT_VPD_SERIAL_PAGE
#endif
#if __MAXLUN > 13
    ,__DEFAULT_VPD_SERIAL_PAGE
#endif
#if __MAXLUN > 14
    ,__DEFAULT_VPD_SERIAL_PAGE
#endif
};

#define __DEFAULT_VPD_DEVICE_ID_PAGE    \
 {\
	__RBC_DEVICE,\
    0x00,\
\
    __VPDPAGE_DEVICE_IDENTITY,\
\
    0x00,\
\
    sizeof(__ASCII_ID_DESCRIPTOR),                                      /*  36                         */\
    {\
        0x02,\
        0x00,\
\
        0x01,\
        0x00,\
		0x00,\
\
        0x00,\
\
        sizeof(__ASCII_ID_STRING),                                      /*  32                          */\
\
		{                                                               /*  ASCII_ID_STRING             */\
			'P','h','i','l',\
            'i','p','s',' ',\
            'S','u','p','e',\
			'r',' ','D','i',\
            's','k',' '\
        }\
    }\
  }
  
#define __GdeviceIDPage     __GdeviceIDPages[__GbCurLun]
static const __VPD_DEVICE_ID_PAGE __GdeviceIDPages[__MAXLUN+1] =
{
    __DEFAULT_VPD_DEVICE_ID_PAGE
#if __MAXLUN > 0
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 1
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 2
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 3
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 4
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 5
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 6
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 7
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 8
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 9
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 10
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 11
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 12
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 13
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
#if __MAXLUN > 14
    ,__DEFAULT_VPD_DEVICE_ID_PAGE
#endif
};

#define __DEFAULT_STD_INQUIRYDATA   \
  {\
    0x00,                                                               /*  DEVICE TYPE: 5;            */\
                                                                        /*  direct-access device       */\
    0,                                                                  /*  INT8 Reserved0 : 3;        */\
\
    0,                                                                  /*  INT8 Reserved1 : 7;         */\
    1,                                                                  /*  INT8 RemovableMedia : 1;    */\
\
    2,                                                                  /*  INT8 Version;               */\
\
    2,                                                                  /*  INT8 Reserved3 : 5;         */\
    0,                                                                  /*  INT8 NormACA : 1;           */\
    0,                                                                  /*  INT8 Obsolete0 : 1;         */\
    0,                                                                  /*  INT8 AERC : 1;              */\
\
    {\
        0x1F,0,0                                                        /*  INT8 Reserved4[3];          */\
    },\
\
    0,                                                                  /*  INT8 SoftReset : 1;         */\
    0,                                                                  /*  INT8 CommandQueue : 1;      */\
	0,                                                                  /*  INT8 Reserved5 : 1;         */\
	0,                                                                  /*  INT8 LinkedCommands : 1;    */\
	0,                                                                  /*  INT8 Synchronous : 1;       */\
	0,                                                                  /*  INT8 Wide16Bit : 1;         */\
	0,                                                                  /*  INT8 Wide32Bit : 1;         */\
	0,                                                                  /*  INT8 RelativeAddressing : 1;*/\
\
                                                                        /*  INT8 VendorId[8];           */\
    {\
        'Z','L','G','-',\
        'M','C','U',' '\
    },\
\
	                                                                    /*  INT8 ProductId[16];         */\
    {\
        'U','S','B','-',\
    	'M','a','s','s',\
    	' ','S','t','o',\
    	'r','a','g','e'\
    },\
\
	/*  \
	 *  INT8 ProductRevisionLevel[4];\
	 */\
    {\
        '0','.','0','0'\
    },\
\
    /*  \
     *  Above is 36 bytes can be tranmitted by Bulk\
     */\
\
    /*\
     *  INT8 VendorSpecific[20]; out[64 bytes] within one packet only.\
     */\
    {\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0\
    },\
\
\
    0,                                                                  /*  INT8 InfoUnitSupport : 1;   */\
    0,                                                                  /*  INT8 QuickArbitSupport : 1; */\
    0,                                                                  /*  INT8 Clocking : 2;          */\
    0,                                                                  /*  INT8 Reserved1 : 4;         */\
    0,                                                                  /*  INT8  Reserved2 ;           */\
\
    /*\
     *   USHORT VersionDescriptor[8] ;\
     */\
    {\
        0, 0, 0, 0,\
        0, 0, 0, 0\
    },\
    \
    {                                                                   /*  INT8 Reserved3[22];         */\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0, 0, 0,\
        0, 0\
    }\
  }
  
#define __GinquiryData  __GinquiryDatas[__GbCurLun]
static const __STD_INQUIRYDATA __GinquiryDatas[__MAXLUN+1] =
{
    __DEFAULT_STD_INQUIRYDATA
#if __MAXLUN > 0
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 1
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 2
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 3
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 4
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 5
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 6
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 7
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 8
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 9
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 10
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 11
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 12
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 13
    ,__DEFAULT_STD_INQUIRYDATA
#endif
#if __MAXLUN > 14
    ,__DEFAULT_STD_INQUIRYDATA
#endif
};


/*********************************************************************************************************
** Function name:           __rbcHandler
**
** Descriptions:            处理RBC命令
**
** input parameters:        无
** output parameters:       无
** Returned value:          ucRetStatus                                                               
**                          
*********************************************************************************************************/
__uint8 __rbcHandler (void)
{
#define __cdbGeneric __RBC_CDB
    __uint8 ucRetStatus = __MASS_FAIL;

	switch (__RBC_OPCODE){
	/*
	 *  required command  
	 */
	case __RBC_CMD_READ10:                                              /*  0x28                        */
		ucRetStatus = __rbcRead();
		break;
		
	case __RBC_CMD_READCAPACITY:                                        /*  0x25                        */ 
		ucRetStatus = __rbcReadCapacity();
		break;
#if 0		
	case __RBC_CMD_STARTSTOPUNIT:                                       /*  0x1b                        */
		ucRetStatus = __rbcOnOffUnit();
		break;
		
    case __RBC_CMD_SYNCCACHE:                                           /*  0x35                        */
        ucRetStatus = __rbcSyncCache();
		break;
#endif  		
    case __RBC_CMD_VERIFY10:                                            /*  0x2f                        */
        ucRetStatus = __rbcVerify();
        break;
      
    case __RBC_CMD_WRITE10:                                             /*  0x2a                        */
        ucRetStatus = __rbcWrite();
        break;
        
    case __SPC_CMD_INQUIRY:                                             /*  0x12                        */
        ucRetStatus = __spcInquiry();
        break;
#if 0        
    case __SPC_CMD_MODESELECT6:                                         /*  0x15                        */
        ucRetStatus = __spcModeSelect();
        break;
#endif        
    case __SPC_CMD_MODESENSE6:                                          /*  0x1A                        */
        ucRetStatus = __spcModeSense();
        break;
               
	case __SPC_CMD_PRVENTALLOWMEDIUMREMOVAL:                            /*  0x1E                        */        
		ucRetStatus = __spcLockMedia();
        break;
        
    case __SPC_CMD_TESTUNITREADY:                                       /*  0x00                        */
        ucRetStatus = __spcTestUnit();
        break;
        
    case __SPC_CMD_REQUESTSENSE:                                        /*  0x03                        */
        ucRetStatus = __spcRequestSense();
        break;
        
	/* 
	 *  optional commands 
	 */		
	case __SPC_CMD_READLONG:                                              

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -