83 static int8_t SCSI_TestUnitReady(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
85 static int8_t SCSI_ReadFormatCapacity(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
86 static int8_t SCSI_ReadCapacity10(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
87 static int8_t SCSI_RequestSense (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
88 static int8_t SCSI_StartStopUnit(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
89 static int8_t SCSI_ModeSense6 (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
90 static int8_t SCSI_ModeSense10 (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
129 return SCSI_TestUnitReady(pdev, lun, params);
132 return SCSI_RequestSense (pdev, lun, params);
134 return SCSI_Inquiry(pdev, lun, params);
137 return SCSI_StartStopUnit(pdev, lun, params);
140 return SCSI_StartStopUnit(pdev, lun, params);
143 return SCSI_ModeSense6 (pdev, lun, params);
146 return SCSI_ModeSense10 (pdev, lun, params);
149 return SCSI_ReadFormatCapacity(pdev, lun, params);
152 return SCSI_ReadCapacity10(pdev, lun, params);
155 return SCSI_Read10(pdev, lun, params);
158 return SCSI_Write10(pdev, lun, params);
161 return SCSI_Verify10(pdev, lun, params);
180 static int8_t SCSI_TestUnitReady(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
221 if (params[1] & 0x01)
232 if (params[4] <= len)
254 static int8_t SCSI_ReadCapacity10(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
290 static int8_t SCSI_ReadFormatCapacity(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
298 for(i=0 ; i < 12 ; i++)
314 hmsc->
bot_data[4] = (uint8_t)((blk_nbr - 1) >> 24);
315 hmsc->
bot_data[5] = (uint8_t)((blk_nbr - 1) >> 16);
316 hmsc->
bot_data[6] = (uint8_t)((blk_nbr - 1) >> 8);
317 hmsc->
bot_data[7] = (uint8_t)(blk_nbr - 1);
320 hmsc->
bot_data[9] = (uint8_t)(blk_size >> 16);
321 hmsc->
bot_data[10] = (uint8_t)(blk_size >> 8);
322 hmsc->
bot_data[11] = (uint8_t)(blk_size);
335 static int8_t SCSI_ModeSense6 (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
356 static int8_t SCSI_ModeSense10 (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
379 static int8_t SCSI_RequestSense (
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
441 static int8_t SCSI_StartStopUnit(
USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
483 (params[3] << 16) | \
513 return SCSI_ProcessRead(pdev, lun);
564 (params[3] << 16) | \
571 if(SCSI_CheckAddressRange(pdev,
601 return SCSI_ProcessWrite(pdev, lun);
619 if ((params[1]& 0x02) == 0x02)
628 if(SCSI_CheckAddressRange(pdev,
647 static int8_t SCSI_CheckAddressRange (
USBD_HandleTypeDef *pdev, uint8_t lun , uint32_t blk_offset , uint16_t blk_nbr)
uint8_t bot_data[MSC_MEDIA_PACKET]
const uint8_t MSC_Page00_Inquiry_Data[]
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
Transmits data over an endpoint.
#define MEDIUM_NOT_PRESENT
#define SCSI_READ_CAPACITY10
USBD_SCSI_SenseTypeDef scsi_sense[SENSE_LIST_DEEPTH]
const uint8_t MSC_Mode_Sense10_data[]
#define LENGTH_INQUIRY_PAGE00
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
Prepares an endpoint for reception.
#define USBD_BOT_LAST_DATA_IN
#define UNRECOVERED_READ_ERROR
const uint8_t MSC_Mode_Sense6_data[]
Header for the usbd_msc.c file.
#define SCSI_START_STOP_UNIT
#define SCSI_REQUEST_SENSE
#define INVALID_FIELED_IN_COMMAND
#define STANDARD_INQUIRY_DATA_LEN
Header for the usbd_msc_data.c file.
struct _SENSE_ITEM::@35::_ASCs b
int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
SCSI_ProcessCmd Process SCSI commands.
#define SCSI_READ_FORMAT_CAPACITIES
#define SCSI_ALLOW_MEDIUM_REMOVAL
Header for the usbd_msc_scsi.c file.
#define SENSE_LIST_DEEPTH
#define USBD_BOT_DATA_OUT
USBD_MSC_BOT_CBWTypeDef cbw
#define REQUEST_SENSE_DATA_LEN
#define SCSI_TEST_UNIT_READY
void MSC_BOT_SendCSW(USBD_HandleTypeDef *pdev, uint8_t CSW_Status)
MSC_BOT_SendCSW Send the Command Status Wrapper.
#define USBD_CSW_CMD_PASSED
USBD_MSC_BOT_CSWTypeDef csw
#define ADDRESS_OUT_OF_RANGE
#define SCSI_MODE_SENSE10
Header for the usbd_msc_bot.c file.
void SCSI_SenseCode(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t sKey, uint8_t ASC)
SCSI_SenseCode Load the last error code in the error list.