📄 scsicmd.h
字号:
/*
**********************************************************************************************
* File: scsicmd.h
* Contents:
*
*
* $Date: 08/23/06 Derek v1.0
* $Date: 08/28/06 Derek v1.2
* $Date: 09/01/06 Derek v1.21
* $Date: 09/04/06 Derek v1.22
*
* Copyright (c) 2006 Fameg, Inc. All rights reserved
***********************************************************************************************
*/
#ifndef _ScsiCmd_H_
#define _ScsiCmd_H_
#include "BulkCmd.h"
#define FLASH_LOGIC_BLOCK_ADDRESS 0x00008000L
#define SET_MEDIUM_ERROR(Lun) SenseKey = MEDIUM_ERROR; \
AddSenseCode = 0;
#define SET_ILLEGAL_REQUEST(Lun) SenseKey = ILLEGAL_REQUEST;\
AddSenseCode = 0;\
AddSenseCodeQ = 0;
#define SENSE_KEY_INDEX 2
#define ADD_SENSE_CODE_INDEX 12
#define ADD_SENSE_CODEQ_INDEX 13
#define SCSI_INFO_START_OFFSET 8
#define SCSI_VENDOR_LEN 8
#define SCSI_PRODUCT_LEN 16
#define SCSI_LOAD_STATUS_MASK 0x01
#define SCSI_LAST_QUERY_MASK 0x02
// SCSI control byte field
#define SCSI_CTRL_LINK_BIT 0x01
#define SCSI_CTRL_OBSOLETE_BIT 0x02
#define SCSI_CTRL_NACA_BIT 0x04
// Scsi Command Operation Code List.
#define TEST_UNIT_READY_OPCODE 0x00
#define REQUEST_SENSE_OPCODE 0x03
#define MODE_SELECT6_OPCODE 0x15
#define MODE_SENSE6_OPCODE 0x1A
#define INQUIRY_OPCODE 0x12
#define START_STOP_UNIT_OPCODE 0x1B
#define PREVENT_REMOVAL_OPCODE 0x1E
#define _23_OPCODE 0x23
#define READ_CAPACITY10_OPCODE 0x25
#define READ10_OPCODE 0x28
#define WRITE10_OPCODE 0x2A
#define VERIFY10_OPCODE 0x2F
#define MODE_SENSE10_OPCODE 0x5A
#define READ_BUFFER 0X3C //derek 2007.08.16
// Sense Key Definition.
#define NO_SENSE 0x00
#define RECOVERED_ERROR 0x01
#define NOT_READY 0x02
#define MEDIUM_ERROR 0x03
#define HW_ERROR 0x04
#define ILLEGAL_REQUEST 0x05
#define UNIT_ATTENTION 0x06
#define DATA_PROTECT 0x07
#define BLANK_CHECK 0x08
#define VENDOR_SPEC 0x09
#define COPY_ABORTED 0x0A
#define ABORTED_COMMAND 0x0B
#define VOLUME_OVERFLOW 0x0D
#define MISCOMPARE 0x0E
// Addition Sense Code Definition.
#define INVALID_COMMAND_OPCODE 0x20
#define INVALID_FIELD_IN_CDB 0x24
#define HW_WRITE_PROTECT 0x27
#define LOGIC_UNIT_NOT_SUPPORT 0x25
#define MEDIUM_CHANGED 0x28
#define MEDIUM_NOT_PRESNET 0x3A
// SCSI Command Length.
#define STANDARD_INQUIRY_DATA_LEN 0x24
#define CAPACITY10_DATA_LEN 0x08
#define FORMAT_CAPACITY_DATA_LEN 0x0C
#define REQUEST_SENSE_DATA_LEN 0x12
#define MODE_PARAM_HEADER_LEN 0x04
#define BLOCK_DESC_LEN 0x08
extern xdata PCMD_BLOCK_WRAPPER BlockWrapper;
extern BYTE CmdStatus;
extern BYTE BulkState;
extern BYTE ScsiLun;
extern xdata UINT32 WrapperTag;
extern xdata BYTE SenseKey;
extern xdata BYTE AddSenseCode;
extern xdata BYTE AddSenseCodeQ;
extern xdata UINT32 UsbDmaTotalLength;
extern xdata char ScsiMediaChange[MAX_DEVICE_NUM];
// INTERRPUT
extern bit FirstWrite;
void ScsiInit();
void ScsiCheckCmd();
bool ScsiDetectWriteProtect(BYTE Lun);
void SetSenseDataWr(BYTE Status);
void SetSenseDataRd(BYTE Status);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -