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

📄 scsi.h

📁 台湾凌阳方案300万数码相机源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*++

Copyright (c) 2001 Sunplus Technology Co., Ltd.

Module Name:

        scsi.h

Abstract:

        Header file related to SCSI command

Environment:

        Keil C51 Compiler

Revision History:

        08/28/2001      Chi-Yeh Tsai    created                 

--*/

//------------------------------------------------------------------------------
//Constant
//------------------------------------------------------------------------------
//---- SCSI-2 Commands ----------------
#define K_SCSICMD_TEST_UNIT_READY                 0x00
#define K_SCSICMD_REZERO_UNIT                     0x01
//#define K_SCSICMD_VENDOR_SPECIFIC               0x02
#define K_SCSICMD_REQUEST_SENSE                   0x03
#define K_SCSICMD_FORMAT_UNIT                     0x04
#define K_SCSICMD_READ_BLOCK_LIMITS               0x05
//#define K_SCSICMD_VENDOR_SPECIFIC               0x06
#define K_SCSICMD_REASSIGN_BLOCKS                 0x07
#define K_SCSICMD_READ_06                         0x08
//#define K_SCSICMD_VENDOR_SPECIFIC               0x09
#define K_SCSICMD_WRITE_06                        0x0a
#define K_SCSICMD_SEEK_06                         0x0b
//#define K_SCSICMD_VENDOR_SPECIFIC               0x0c
//#define K_SCSICMD_VENDOR_SPECIFIC               0x0d
//#define K_SCSICMD_VENDOR_SPECIFIC               0x0e
#define K_SCSICMD_READ_REVERSE                    0x0f
#define K_SCSICMD_WRITE_FILEMARKS                 0x10
#define K_SCSICMD_SPACE                           0x11
#define K_SCSICMD_INQUIRY                         0x12
#define K_SCSICMD_VERIF06                         0x13
#define K_SCSICMD_RECOVER_BUFFERED_DATA           0x14
#define K_SCSICMD_MODE_SELECT_06                  0x15
#define K_SCSICMD_RESERVE                         0x16
#define K_SCSICMD_RELEASE                         0x17
#define K_SCSICMD_COPY                            0x18
#define K_SCSICMD_ERASE                           0x19
#define K_SCSICMD_MODE_SENSE_06                   0x1a
#define K_SCSICMD_START_STOP_UNIT                 0x1b
#define K_SCSICMD_RECEIVE_DIAGNOSTIC_RESULTS      0x1c
#define K_SCSICMD_SEND_DIAGNOSTIC                 0x1d
#define K_SCSICMD_PREVENT_ALLOW_MEDIUM_REMOVAL    0x1e
//#define K_SCSICMD_VENDOR_SPECIFIC               0x1f
//#define K_SCSICMD_VENDOR_SPECIFIC               0x20
//#define K_SCSICMD_VENDOR_SPECIFIC               0x21
//#define K_SCSICMD_VENDOR_SPECIFIC               0x22
#define K_SCSICMD_READ_FORMAT_CAPACITIES          0x23
#define K_SCSICMD_SET_WINDOW                      0x24
#define K_SCSICMD_READ_CAPACITY                   0x25
//#define K_SCSICMD_VENDOR_SPECIFIC               0x26
//#define K_SCSICMD_VENDOR_SPECIFIC               0x27
#define K_SCSICMD_READ_10                         0x28
#define K_SCSICMD_READ_GENERATION                 0x29
#define K_SCSICMD_WRITE_10                        0x2a
#define K_SCSICMD_SEEK_10                         0x2b
#define K_SCSICMD_ERASE_10                        0x2c
#define K_SCSICMD_READ_UPDATED_BLOCK              0x2d
#define K_SCSICMD_WRITE_AND_VERIFY_10             0x2e
#define K_SCSICMD_VERIFY_10                       0x2f
#define K_SCSICMD_SEARCH_DATA_HIGH_10             0x30
#define K_SCSICMD_SEARCH_DATA_EQUAL_10            0x31
#define K_SCSICMD_SEARCH_DATA_LOW_10              0x32
#define K_SCSICMD_SET_LIMITS                      0x33
#define K_SCSICMD_PREFETCH                        0x34
#define K_SCSICMD_SYNCHRONIZE_CACHE               0x35
#define K_SCSICMD_LOCK_UNLOCK_CACHE               0x36
#define K_SCSICMD_READ_DEFECT_DATA_10             0x37
#define K_SCSICMD_MEDIUM_SCAN                     0x38
#define K_SCSICMD_COMPARE                         0x39
#define K_SCSICMD_COPAND_VERIFY                   0x3a
#define K_SCSICMD_WRITE_BUFFER                    0x3b
#define K_SCSICMD_READ_BUFFER                     0x3c
#define K_SCSICMD_UPDATE_BLOCK                    0x3d
#define K_SCSICMD_READ_LONG                       0x3e
#define K_SCSICMD_WRITE_LONG                      0x3f
#define K_SCSICMD_CHANGE_DEFINITION               0x40
#define K_SCSICMD_WRITE_SAME                      0x41
#define K_SCSICMD_READ_SUBCHANNEL                 0x42
#define K_SCSICMD_READ_TOC                        0x43
#define K_SCSICMD_READ_HEADER                     0x44
#define K_SCSICMD_PLAY_AUDIO_10                   0x45
//#define K_SCSICMD_VENDOR_SPECIFIC               0x46
#define K_SCSICMD_PLAY_AUDIO_MSF                  0x47
#define K_SCSICMD_PLAY_AUDIO_TRACK_INDEX          0x48
#define K_SCSICMD_PLAY_TRACK_RELATIVE             0x49
//#define K_SCSICMD_VENDOR_SPECIFIC               0x4a
#define K_SCSICMD_PAUSE_RESUME                    0x4b
#define K_SCSICMD_LOG_SELECT                      0x4c
#define K_SCSICMD_LOG_SENSE                       0x4d
//#define K_SCSICMD_VENDOR_SPECIFIC               0x4e        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x4f        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x50        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x51        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x52        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x53        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x54        
#define K_SCSICMD_MODE_SELECT_10                  0x55        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x56        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x57        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x58        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x59        
#define K_SCSICMD_MODE_SENSE_10                   0x5a        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x5b        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x5c        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x5d        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x5e        
//#define K_SCSICMD_VENDOR_SPECIFIC               0x5f        
#define K_SCSICMD_READ_12                         0xa8
#define K_SCSICMD_WRITE_12                        0xaa

//------------------------------------------------------------------------------
//Type Definition
//------------------------------------------------------------------------------
//---- SCSI-2 Commands ----------------
//6-byte Command
typedef struct _SCSICMD_06BYTE
{
        UCHAR   operationCode;
        UCHAR   serviceAction;
        USHORT  logicalBlockAddress;
        UCHAR   dataLength;
        UCHAR   controlByte;
} SCSICMD_06BYTE, *PSCSICMD_06BYTE;

//10-byte Command
typedef struct _SCSICMD_10BYTE
{
        UCHAR   operationCode;
        UCHAR   serviceAction;
        ULONG   logicalBlockAddress;
        UCHAR   reserved;
        USHORT  dataLength;
        UCHAR   controlByte;
} SCSICMD_10BYTE, *PSCSICMD_10BYTE;

//12-byte Command
typedef struct _SCSICMD_12BYTE
{
        UCHAR   operationCode;
        UCHAR   serviceAction;
        ULONG   logicalBlockAddress;
        ULONG   dataLength;
        UCHAR   reserved;
        UCHAR   controlByte;
} SCSICMD_12BYTE, *PSCSICMD_12BYTE;

//16-byte Command
typedef struct _SCSICMD_16BYTE
{
        UCHAR   operationCode;
        UCHAR   serviceAction;
        ULONG   logicalBlockAddress;
        ULONG   addtionalCdbData;
        ULONG   dataLength;
        UCHAR   reserved;
        UCHAR   controlByte;
} SCSICMD_16BYTE, *PSCSICMD_16BYTE;

#define SCSICMD_MODE_CURRENT_VALUE      0x00
#define SCSICMD_MODE_CHANGEABLE_VALUE   0x40
#define SCSICMD_MODE_DEFAULT_VALUE      0x80
#define SCSICMD_MODE_SAVED_VALUE        0xc0

//---- SCSI-2 Data (actaully SFF-8070i) ----
//REQUEST SENSE
#define SCSIDATA_REQUEST_SENSE_SIZE                     0x12
typedef struct _SCSIDATA_REQUEST_SENSE
{
        struct
        {
		//richie switch order
                UCHAR   errorCode:7;
                UCHAR   valid:1;                     
        } BYTE0;

        UCHAR   reserved0;

        struct
        {
		//richie switch order
                UCHAR   senseKey:4;
                UCHAR   reserved:4;
        } BYTE2;

        ULONG   information;
        UCHAR   additionalSenseLength; //0x0a                              
        UCHAR   reserved1[4];
        UCHAR   additionalSenseCode;
        UCHAR   additionalSenseCodeQualifier;
        UCHAR   reserved2[4];
} SCSIDATA_REQUEST_SENSE, *PSCSIDATA_REQUEST_SENSE;

//FORMAT UNIT  
#define SCSIDATA_FORMAT_UNIT_SIZE                       0x0c
typedef struct _SCSIDATA_FORMAT_UNIT  
{
        struct
        {
                UCHAR   reserved;
                struct
                {
						//richie switch order
                        UCHAR   side:1;                     
                        UCHAR   immediate:1;                     
                        UCHAR   reserved:2;                     
                        UCHAR   singleTrack:1;                     
                        UCHAR   DCRT:1;
                        UCHAR   extend:1;                     
                        UCHAR   FOV:1;                     
                } BYTE1;
                USHORT  defectListLength;
        } defectListHeader;

        struct
        {
                ULONG   numberOfBlocks;
                UCHAR   reserved;
                UCHAR   blockLengthHi;
                USHORT  blockLengthLo;
        } formatDescriptor;
} SCSIDATA_FORMAT_UNIT, *PSCSIDATA_FORMAT_UNIT;

//INQUIRY
#define SCSIDATA_INQUIRY_SIZE                           0x24
typedef struct _SCSIDATA_INQUIRY
{
        struct
        {
				//richie switch order
                UCHAR   peripheralDeviceType:5;
                UCHAR   reserved:3;                     
        } BYTE0;

        struct
        {
				//richie switch order
                UCHAR   reserved:7;
                UCHAR   RMB:1;
        } BYTE1;

        struct
        {
				//richie switch order
                UCHAR   ansiVersion:3;
                UCHAR   emcaVersion:3;
                UCHAR   isoVersion:2;

⌨️ 快捷键说明

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