replace dcd_xfer_complete by dcd_xfer_complete()

This commit is contained in:
hathach
2018-10-24 00:44:26 +07:00
parent e7a63324dd
commit 55427606ef
6 changed files with 61 additions and 64 deletions

View File

@@ -164,7 +164,7 @@ static osal_queue_t _usbd_q;
/*------------- control transfer semaphore -------------*/
static osal_semaphore_def_t _usbd_sem_def;
/*static*/ osal_semaphore_t _usbd_ctrl_sem;
osal_semaphore_t _usbd_ctrl_sem;
//--------------------------------------------------------------------+
// INTERNAL FUNCTION
@@ -532,34 +532,6 @@ static void mark_interface_endpoint(uint8_t const* p_desc, uint16_t desc_len, ui
//--------------------------------------------------------------------+
// USBD-DCD Callback API
//--------------------------------------------------------------------+
void dcd_xfer_complete(uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, bool succeeded)
{
if (ep_addr == 0 )
{
// Control Transfer
(void) rhport;
(void) succeeded;
// only signal data stage, skip status (zero byte)
if (xferred_bytes) osal_semaphore_post( _usbd_ctrl_sem, true);
}else
{
dcd_event_t event =
{
.rhport = rhport,
.event_id = DCD_EVENT_XFER_COMPLETE,
};
event.xfer_complete.ep_addr = ep_addr;
event.xfer_complete.len = xferred_bytes;
event.xfer_complete.result = succeeded ? TUSB_EVENT_XFER_COMPLETE : TUSB_EVENT_XFER_ERROR;
osal_queue_send(_usbd_q, &event, true);
}
TU_ASSERT(succeeded, );
}
void dcd_event_handler(dcd_event_t const * event, bool in_isr)
{
uint8_t const rhport = event->rhport;
@@ -603,6 +575,22 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
osal_queue_send(_usbd_q, event, in_isr);
break;
case DCD_EVENT_XFER_COMPLETE:
if (event->xfer_complete.ep_addr == 0)
{
// only signal data stage, skip status (zero byte)
if (event->xfer_complete.len)
{
(void) event->xfer_complete.result; // TODO handle control error/stalled
osal_semaphore_post( _usbd_ctrl_sem, true);
}
}else
{
osal_queue_send(_usbd_q, event, true);
}
TU_ASSERT(event->xfer_complete.result == DCD_XFER_SUCCESS,);
break;
default: break;
}
}