/**@file usb_storage.h * @brief usb_storage驱动头文件(做主机) * @details 结构体声明,功能函数声明 * @author jieli * @date 2021-8-1 * @version V1.0 * @copyright Copyright(c)2010-2021 珠海市杰理科技股份有限公司 ********************************************************* * @attention * 硬件平台:AC695N * SDK版本:AC695N_V1.0.0_SDK * @修改日志: * *
Date Version Author Description *
2021-8-1 1.0 jieli 创建初始版本 *
* ********************************************************* */ #ifndef __USB_STORAGE_H__ #define __USB_STORAGE_H__ #include "system/task.h" #include "device/device.h" #include "usb/scsi.h" #include "usb_bulk_transfer.h" #include "usb/host/usb_host.h" /* u盘预读功能配置, 二选一 * 当两种方式都不使能,则表示不开启预读 */ #define UDISK_READ_BIGBLOCK_ASYNC_ENABLE 0 //使能大扇区预读方式(不需要额外buf,速度比512预读慢10%) #define UDISK_READ_512_ASYNC_ENABLE 0 //使能512Byte预读方式(需要额外的512byte buffer,速度比大扇区预读快10%) /****************************/ #define UDISK_READ_ASYNC_BLOCK_NUM (16) //预读扇区数 //****************************youning***********************************-----> #define UDISK_READ_AHEAD_ENABLE 0 //使能U盘预读功能 #define UDISK_READ_AHEAD_BLOCK_NUM 16 //U盘预读扇区数量 #define check_usb_read_ahead(ret) \ if(ret < 0) {\ log_error("func:%s,line:%d,lba:%d,ret:%d\n", __func__, __LINE__, lba, ret);\ goto __exit;\ } //检查函数返回值,0:正确 非0:错误 //****************************youning***********************************<----- /**@enum usb_sta * @brief USB设备当前状态 */ typedef enum usb_sta { DEV_IDLE = 0, ///<空闲状态 DEV_INIT, ///<初始化 DEV_OPEN, ///<开启 DEV_READ, ///<读操作 DEV_WRITE, ///<写操作 DEV_CLOSE, ///<关闭 DEV_SUSPEND, ///<挂起 } USB_STA ; /**@struct udisk_end_desc * @brief U盘端点描述结构体 * */ struct udisk_end_desc { u8 host_epout; ///<主机端点输出 u8 target_epout; ///<目标端点输出 u8 host_epin; ///<主机端点输入 u8 target_epin; ///<目标端点输入 u16 rxmaxp; ///<接收最大端点号 u16 txmaxp; ///<发送最大端点号 u8 *epin_buf; u8 *epout_buf; }; #define ENABLE_DISK_HOTPLUG 0 /**@struct mass_storage * @brief mass_storage协议所使用的相关变量 */ struct mass_storage { OS_MUTEX mutex; ///<互斥量 struct usb_scsi_cbw cbw; ///