mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-25 10:43:44 +00:00
mscd: send scsi status before invoke read10/write10/scsi complete callback
This commit is contained in:
parent
6645be65f5
commit
f2d76a39eb
@ -284,8 +284,10 @@ typedef struct ATTR_PACKED
|
|||||||
{
|
{
|
||||||
uint8_t data_len;
|
uint8_t data_len;
|
||||||
uint8_t medium_type;
|
uint8_t medium_type;
|
||||||
|
|
||||||
uint8_t reserved : 7;
|
uint8_t reserved : 7;
|
||||||
bool write_protected : 1;
|
bool write_protected : 1;
|
||||||
|
|
||||||
uint8_t block_descriptor_len;
|
uint8_t block_descriptor_len;
|
||||||
} scsi_mode_sense6_resp_t;
|
} scsi_mode_sense6_resp_t;
|
||||||
|
|
||||||
|
@ -525,6 +525,12 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Move to default CMD stage when sending status
|
||||||
|
p_msc->stage = MSC_STAGE_CMD;
|
||||||
|
|
||||||
|
// Send SCSI Status
|
||||||
|
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_in , (uint8_t*) &p_msc->csw, sizeof(msc_csw_t)) );
|
||||||
|
|
||||||
// Invoke complete callback if defined
|
// Invoke complete callback if defined
|
||||||
if ( SCSI_CMD_READ_10 == p_cbw->command[0])
|
if ( SCSI_CMD_READ_10 == p_cbw->command[0])
|
||||||
{
|
{
|
||||||
@ -539,12 +545,7 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
|
|||||||
if ( tud_msc_scsi_complete_cb ) tud_msc_scsi_complete_cb(p_cbw->lun, p_cbw->command);
|
if ( tud_msc_scsi_complete_cb ) tud_msc_scsi_complete_cb(p_cbw->lun, p_cbw->command);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move to default CMD stage after sending status
|
// Queue for the next CBW
|
||||||
p_msc->stage = MSC_STAGE_CMD;
|
|
||||||
|
|
||||||
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_in , (uint8_t*) &p_msc->csw, sizeof(msc_csw_t)) );
|
|
||||||
|
|
||||||
//------------- Queue the next CBW -------------//
|
|
||||||
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t)) );
|
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t)) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user