Преглед изворни кода

Remove transfer queue filtering. May need to be revisited later.

Nathan Conrad пре 6 година
родитељ
комит
2994d100cd
1 измењених фајлова са 2 додато и 45 уклоњено
  1. 2 45
      src/device/usbd.c

+ 2 - 45
src/device/usbd.c

@@ -1064,50 +1064,10 @@ bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr)
 }
 }
 
 
 /**
 /**
- * Remove queued xfer complete messages from event queue,
- * for a particular ep.
+ * usbd_edpt_close will disable an endpoint.
  * 
  * 
- * Must be called with interrupts enabled.
- */
-static void usbd_abort_transfers(uint8_t rhport, uint8_t ep_addr)
-{
-  dcd_event_t ev_sentinal = 
-  {
-    .event_id = DCD_EVENT_COUNT, ///< This is an invalid event ID.
-  };
-  dcd_event_t event;
-  uint8_t const epnum   = tu_edpt_number(ep_addr);
-  uint8_t const ep_dir  = tu_edpt_dir(ep_addr);
-  
-  dcd_int_disable(rhport);
-  // Queue sentinal element
-  TU_ASSERT(osal_queue_send(_usbd_q, &ev_sentinal, true), /**/);
-
-  TU_ASSERT(osal_queue_receive(_usbd_q, &event), /**/);
-
-  while(event.event_id != DCD_EVENT_COUNT)
-  {    
-    if((event.rhport == rhport) && (event.event_id == DCD_EVENT_XFER_COMPLETE)
-      && (event.xfer_complete.ep_addr == ep_addr))
-    {
-      _usbd_dev.ep_status[epnum][ep_dir].busy = false;
-    }
-    else
-    {
-      TU_ASSERT(osal_queue_send(_usbd_q, &event, true), /**/);
-    }
-    TU_ASSERT(osal_queue_receive(_usbd_q, &event), /**/);
-  }
-  
-  dcd_int_enable(rhport);
-}
-
-/**
- * usbd_edpt_close will disable an endpoint, and clear all pending transfers
- * through the particular endpoint.
+ * In progress transfers on this EP may be delivered after this call.
  * 
  * 
- * It must be called from the usb task (e.g. from the control request
- * handler while handling SET_ALTERNATE), with interrupts enabled.
  */
  */
 void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
 void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
 {
 {
@@ -1116,9 +1076,6 @@ void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
 
 
   dcd_edpt_close(rhport, ep_addr);
   dcd_edpt_close(rhport, ep_addr);
 
 
-  /* Now, in progress transfers have to be expunged */
-  usbd_abort_transfers(rhport, ep_addr);
-
   return;
   return;
 }
 }