?? scsicmd.h
字號:
/*
**********************************************************************************************
* Project: TK7821
* File: ScsiCmd.h
* Contents:
*
*
* $Date: 02/25/05 Jason v0.1
* 05/12/05 Mingo v0.2 www.fameg.com
*
* Copyright (c) 2005 Fameg, Inc. All rights reserved
***********************************************************************************************
*/
#ifndef ScsiCmdH
#define ScsiCmdH
#include "UsbDisk.h"
#include "CtrlRequest.h"
#include "BulkCmd.h"
#include "Storage.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
// 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 idata PCMD_BLOCK_WRAPPER BlockWrapper;
extern BYTE CmdStatus;
extern BYTE BulkState;
extern BYTE ScsiLun;
extern idata UINT32 WrapperTag;
extern idata BYTE SenseKey;
extern idata BYTE AddSenseCode;
extern idata BYTE AddSenseCodeQ;
extern idata UINT32 UsbDmaTotalLength;
extern idata BYTE MaxBlockNum[MAX_DEVICE_NUM];
extern BYTE BlockNum;
extern xdata bool ScsiMediaChange[MAX_DEVICE_NUM];
// INTERRPUT
extern UINT16 WriteAddress;
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 + -