110 #define USB_QUEUE_SIZE 4 136 #define SCSI_LOG_LEN 500 137 typedef struct SCSI_LOG {
149 static uint16_t scsi_log_ptr=0;
151 static SCSI_log *curr_log;
153 static SCSI_log scsi_log[SCSI_LOG_LEN+1];
175 uint32_t blk_offset ,
209 printf(
"\nSCSI cmd=%d ", params[0]);
211 SCSI_log *p = &scsi_log[scsi_log_ptr++];
212 if(scsi_log_ptr>=SCSI_LOG_LEN) scsi_log_ptr=0;
215 memmove(p->params,params+1,8);
326 if (params[1] & 0x01)
337 if (params[4] <= len)
400 for(i=0 ; i < 12 ; i++)
503 if (params[4] <= REQUEST_SENSE_DATA_LEN) {
568 (params[3] << 16) | \
618 uint32_t fifoemptymsk = 0x1 << (
MSC_IN_EP & 0x7F);
624 #else // as it was before 670 (params[3] << 16) | \
717 curr_log->alt =
true;
742 #else // as it was before 759 SCSI_log *l = &scsi_log[scsi_log_ptr++];
760 if(scsi_log_ptr>=SCSI_LOG_LEN) scsi_log_ptr=0;
782 uint32_t fifoemptymsk = 0x1 << (
MSC_IN_EP & 0x7F);
812 if ((params[1]& 0x02) == 0x02) {
static int8_t SCSI_ProcessRead(uint8_t lun)
SCSI_ProcessRead Handle Read Process.
int printf(const char *fmt,...)
static uint8_t usb_read_ptr
SCSI_Sense_TypeDef SCSI_Sense[SENSE_LIST_DEEPTH]
int8_t(* GetCapacity)(uint8_t lun, uint32_t *block_num, uint32_t *block_size)
static int8_t SCSI_StartStopUnit(uint8_t lun, uint8_t *params)
SCSI_StartStopUnit Process Start Stop Unit command.
void hal_set_task_priority(void *handle, uint8_t prio)
void * hal_register_task(voidFuncPtr task, uint32_t stack)
uint32_t DCD_EP_Tx(USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t buf_len)
Transmit data over USB.
header for the STORAGE DISK file file
static int8_t SCSI_Inquiry(uint8_t lun, uint8_t *params)
SCSI_Inquiry Process Inquiry command.
struct _SENSE_ITEM::@44::_ASCs b
int8_t(* IsReady)(uint8_t lun)
#define LENGTH_INQUIRY_PAGE00
void MSC_BOT_CBW_finish(USB_OTG_CORE_HANDLE *pdev)
static int8_t SCSI_ProcessWrite(uint8_t lun)
SCSI_ProcessWrite Handle Write Process.
void(* voidFuncPtr)(void)
const uint8_t MSC_Page00_Inquiry_Data[]
#define USBD_STD_INQUIRY_LENGTH
int8_t SCSI_ProcessCmd(USB_OTG_CORE_HANDLE *pdev, uint8_t lun, uint8_t *params)
SCSI_ProcessCmd Process SCSI commands.
static void * task_handle
header for the usbd_msc_data.c file
const USBD_STORAGE_cb_TypeDef *const USBD_STORAGE_fops
void hal_set_task_active(void *handle)
static int8_t SCSI_TestUnitReady(uint8_t lun, uint8_t *params)
SCSI_TestUnitReady Process SCSI Test Unit Ready Command.
header for the usbd_msc_scsi.c file
int8_t(* Write)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
void hal_context_switch_isr()
static uint8_t usb_write_ptr
static int8_t SCSI_RequestSense(uint8_t lun, uint8_t *params)
SCSI_RequestSense Process Request Sense command.
#define SENSE_LIST_DEEPTH
static int8_t SCSI_Write10(uint8_t lun, uint8_t *params)
SCSI_Write10 Process Write10 command.
static int8_t SCSI_Read10(uint8_t lun, uint8_t *params)
SCSI_Read10 Process Read10 command.
const uint8_t MSC_Mode_Sense10_data[]
MSC_BOT_CBW_TypeDef MSC_BOT_cbw
static USB_rec usb_queue[USB_QUEUE_SIZE+1]
static int8_t SCSI_ReadFormatCapacity(uint8_t lun, uint8_t *params)
SCSI_ReadFormatCapacity Process Read Format Capacity command.
int8_t(* IsWriteProtected)(uint8_t lun)
USB_OTG_CORE_HANDLE * cdev
void SCSI_SenseCode(uint8_t lun, uint8_t sKey, uint8_t ASC)
SCSI_SenseCode Load the last error code in the error list.
static int8_t SCSI_CheckAddressRange(uint8_t lun, uint32_t blk_offset, uint16_t blk_nbr)
SCSI_CheckAddressRange Check address range.
MSC_BOT_CSW_TypeDef MSC_BOT_csw
static int8_t SCSI_ModeSense6(uint8_t lun, uint8_t *params)
SCSI_ModeSense6 Process Mode Sense6 command.
void MSC_BOT_SendCSW(USB_OTG_CORE_HANDLE *pdev, uint8_t CSW_Status)
MSC_BOT_SendCSW Send the Command Status Wrapper.
header for the usbd_msc_bot.c file
int8_t(* Read)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
static int8_t SCSI_ReadCapacity10(uint8_t lun, uint8_t *params)
SCSI_ReadCapacity10 Process Read Capacity 10 command.
uint32_t DCD_EP_PrepareRx(USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t buf_len)
DCD_EP_PrepareRx.
static int8_t SCSI_Verify10(uint8_t lun, uint8_t *params)
SCSI_Verify10 Process Verify10 command.
#define USB_OTG_MODIFY_REG32(reg, clear_mask, set_mask)
static int8_t SCSI_ModeSense10(uint8_t lun, uint8_t *params)
SCSI_ModeSense10 Process Mode Sense10 command.
const uint8_t MSC_Mode_Sense6_data[]