more msc driver improve
This commit is contained in:
parent
0fec2e5cc0
commit
0cb1604686
|
@ -161,16 +161,6 @@ tusb_error_t mscd_control_request_st(uint8_t port, tusb_control_request_t const
|
|||
//--------------------------------------------------------------------+
|
||||
// MSCD APPLICATION CALLBACK
|
||||
//--------------------------------------------------------------------+
|
||||
static bool send_status(uint8_t port, mscd_interface_t* p_msc)
|
||||
{
|
||||
TU_ASSERT( tusb_dcd_edpt_xfer(port, p_msc->ep_in , (uint8_t*) &p_msc->csw, sizeof(msc_csw_t), false) );
|
||||
|
||||
//------------- Queue the next CBW -------------//
|
||||
TU_ASSERT( tusb_dcd_edpt_xfer(port, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t), true) );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
tusb_error_t mscd_xfer_cb(uint8_t port, uint8_t ep_addr, tusb_event_t event, uint32_t xferred_bytes)
|
||||
{
|
||||
mscd_interface_t* const p_msc = &mscd_data;
|
||||
|
@ -183,10 +173,11 @@ tusb_error_t mscd_xfer_cb(uint8_t port, uint8_t ep_addr, tusb_event_t event, uin
|
|||
{
|
||||
//------------- new CBW received -------------//
|
||||
case MSC_STAGE_CMD:
|
||||
TU_ASSERT( (ep_addr == p_msc->ep_out) &&
|
||||
event == TUSB_EVENT_XFER_COMPLETE &&
|
||||
xferred_bytes == sizeof(msc_cbw_t) &&
|
||||
p_cbw->signature == MSC_CBW_SIGNATURE, TUSB_ERROR_INVALID_PARA );
|
||||
// Complete IN while waiting for CMD is usually Status of previous SCSI op, ignore it
|
||||
if(ep_addr != p_msc->ep_out) return TUSB_ERROR_NONE;
|
||||
|
||||
TU_ASSERT( event == TUSB_EVENT_XFER_COMPLETE &&
|
||||
xferred_bytes == sizeof(msc_cbw_t) && p_cbw->signature == MSC_CBW_SIGNATURE, TUSB_ERROR_INVALID_PARA );
|
||||
|
||||
p_csw->signature = MSC_CSW_SIGNATURE;
|
||||
p_csw->tag = p_cbw->tag;
|
||||
|
@ -260,7 +251,7 @@ tusb_error_t mscd_xfer_cb(uint8_t port, uint8_t ep_addr, tusb_event_t event, uin
|
|||
// Move to default CMD stage after sending status
|
||||
p_msc->stage = MSC_STAGE_CMD;
|
||||
|
||||
TU_ASSERT( tusb_dcd_edpt_xfer(port, p_msc->ep_in , (uint8_t*) &p_msc->csw, sizeof(msc_csw_t), false) );
|
||||
TU_ASSERT( tusb_dcd_edpt_xfer(port, p_msc->ep_in , (uint8_t*) &p_msc->csw, sizeof(msc_csw_t), true) );
|
||||
|
||||
//------------- Queue the next CBW -------------//
|
||||
TU_ASSERT( tusb_dcd_edpt_xfer(port, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t), true) );
|
||||
|
|
Loading…
Reference in New Issue