📄 mass_storage.h
字号:
//定义了USB Mass Storage 类的一些命令及数据结构
#ifndef __USB_MASS_STORAGE__
#define __USB_MASS_STORAGE__
#define SUCCESS 0x00
#define FAIL 0x01
#define ERROR 0x02
//UFI子类命令
#define Test_Unit_Ready 0x00 //测试单元准备
#define Rezero_Unit 0x01//归0
#define Request_Sense 0x03 //请求判断
#define Format_Unit 0x04 //格式化单元
#define Inquiry 0x12 //查询
#define Mode_Sence_06 0x1a
#define Star_Stop 0x1B //启动/停止
#define Send_Diagnostic 0x1D //发送诊断
#define Mode_Select 0x55 //模式选择
#define Mode_Sense 0x5A //模式判别
#define Medium_Removal 0x1E //禁止/允许介质移除
#define Read_10 0x28 //读10
#define Read_12 0xA8 //读12
#define Read_Capacity 0x25 //读容量
#define Read_Format_capacity 0x23 //读格式化容量
#define Seek_10 0x2B //寻道10
#define Verify 0x2F //验证
#define Write_10 0x2A //写10
#define Write_12 0xAA //写12
#define Write_and_Verify 0x2E //写并验证
unsigned char DISK_CAPACITY[8]= //磁盘容量
{
0x00,0x3c,0x93,0xff,
0x00,0x00,0x02,0x00
};
unsigned char SENSE[0x12]= //模式探测返回数据
{
0x70,
0x00,
0x05,
0x00,
0x00,
0x00,
0x00,
0x0a,
0x00,
0x00,
0x00,
0x00,
0x20,
0x00,
0x00,
0x00,
0x00,
0x00,
};
unsigned char REQUEST_1A[0x04]= //模式探测返回数据
{
0x03, 0x00, 0x00, 0x00
};
unsigned char REQUEST_23[0x14/*12*/]= //模式探测返回数据
{
0x00, 0x00, 0x00, 0x10, 0x00, 0x1e, 0x46, 0x00,
0x02, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00
};
///*
unsigned char DISK_INF[36]
= //磁盘信息
{
0x00,
0x00,
0x02,
0x02,
0x1F,
0x00,0x00,0x00,
0x49,0x44,0x45,0xA1,0xFA,0x55,0x53,0x42,
0xC1,0xF5,0xC8,0xD9,0xD7,0xD4,0xBC,0xBA,0xD7,0xF6,0xB5,0xC4,0x4D,0x50,0x33,0x20,
0x31,0x2E,0x30,0x31
};//*/
//定义命令块封包(CBW)
typedef struct _CBW
{
unsigned long dCBWSignature; //CBW标志
unsigned long dCBWTag; //命令块标签
unsigned long int dCBWDataTransgerLength; //数据包大小
unsigned char bmCBWFlags; //D7位表示数据方向,0=out,1=in,其它位保留为0
unsigned char bCBWLUN; //接收该命令的逻辑单元号LUN
unsigned char bCBWCBLength; //表示CBWCB的长度
unsigned char CBWCB[16]; //子类命令
}
CBW, * pCBW;
//定义命令状态封包(CSW)
typedef struct _CSW
{
unsigned long dCSWSignature; //CSW的标志
unsigned long dCSWTag; //命令状态标志
unsigned long dCSWDataResidue; //表示dCBWDataTransferLenhth字段中主机希望的数据长度与实际发送的数据长度的差额
unsigned char bCSWStatus; //该命令执行的情况
}
CSW, * pCSW;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -