Quellcode durchsuchen

clean up remove usbd_control_stall()

hathach vor 7 Jahren
Ursprung
Commit
f26fbaf404
4 geänderte Dateien mit 9 neuen und 18 gelöschten Zeilen
  1. 4 3
      src/device/usbd.c
  2. 2 2
      src/device/usbd.h
  3. 3 9
      src/device/usbd_control.c
  4. 0 4
      src/device/usbd_pvt.h

+ 4 - 3
src/device/usbd.c

@@ -104,7 +104,6 @@ static usbd_class_driver_t const usbd_class_drivers[] =
     },
     },
   #endif
   #endif
 
 
-
   #if CFG_TUD_HID
   #if CFG_TUD_HID
     {
     {
         .class_code      = TUSB_CLASS_HID,
         .class_code      = TUSB_CLASS_HID,
@@ -243,10 +242,12 @@ void tud_task (void)
     switch ( event.event_id )
     switch ( event.event_id )
     {
     {
       case DCD_EVENT_SETUP_RECEIVED:
       case DCD_EVENT_SETUP_RECEIVED:
-        // Process control request, if failed control endpoint is stalled
+        // Process control request
         if ( !process_control_request(event.rhport, &event.setup_received) )
         if ( !process_control_request(event.rhport, &event.setup_received) )
         {
         {
-          usbd_control_stall(event.rhport);
+          // Failed -> stall both control endpoint IN and OUT
+          dcd_edpt_stall(event.rhport, 0);
+          dcd_edpt_stall(event.rhport, 0 | TUSB_DIR_IN_MASK);
         }
         }
       break;
       break;
 
 

+ 2 - 2
src/device/usbd.h

@@ -74,10 +74,10 @@ void tud_task (void);
 // APPLICATION CALLBACK (WEAK is optional)
 // APPLICATION CALLBACK (WEAK is optional)
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 
 
-/** Callback invoked when device is mounted (configured) */
+// Callback invoked when device is mounted (configured)
 ATTR_WEAK void tud_mount_cb(void);
 ATTR_WEAK void tud_mount_cb(void);
 
 
-/** Callback invoked when device is unmounted (bus reset/unplugged) */
+// Callback invoked when device is unmounted (bus reset/unplugged)
 ATTR_WEAK void tud_umount_cb(void);
 ATTR_WEAK void tud_umount_cb(void);
 
 
 //void tud_device_suspended_cb(void);
 //void tud_device_suspended_cb(void);

+ 3 - 9
src/device/usbd_control.c

@@ -60,13 +60,6 @@ void usbd_control_reset (uint8_t rhport)
   tu_varclr(&_control_state);
   tu_varclr(&_control_state);
 }
 }
 
 
-void usbd_control_stall(uint8_t rhport)
-{
-  // when stalling control endpoint both IN and OUt will be stalled
-  dcd_edpt_stall(rhport, EDPT_CTRL_OUT);
-  dcd_edpt_stall(rhport, EDPT_CTRL_IN);
-}
-
 bool usbd_control_status(uint8_t rhport, tusb_control_request_t const * request)
 bool usbd_control_status(uint8_t rhport, tusb_control_request_t const * request)
 {
 {
   // status direction is reversed to one in the setup packet
   // status direction is reversed to one in the setup packet
@@ -147,8 +140,9 @@ bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result
       TU_ASSERT( usbd_control_status(rhport, &_control_state.request) );
       TU_ASSERT( usbd_control_status(rhport, &_control_state.request) );
     }else
     }else
     {
     {
-      // stall due to callback
-      usbd_control_stall(rhport);
+      // Stall both IN and OUT control endpoint
+      dcd_edpt_stall(rhport, EDPT_CTRL_OUT);
+      dcd_edpt_stall(rhport, EDPT_CTRL_IN);
     }
     }
   }
   }
   else
   else

+ 0 - 4
src/device/usbd_pvt.h

@@ -49,10 +49,6 @@ bool usbd_control_xfer(uint8_t rhport, tusb_control_request_t const * request, v
 // Send STATUS (zero length) packet
 // Send STATUS (zero length) packet
 bool usbd_control_status(uint8_t rhport, tusb_control_request_t const * request);
 bool usbd_control_status(uint8_t rhport, tusb_control_request_t const * request);
 
 
-// Stall control endpoint (both IN and OUT) until new setup packet arrived
-void usbd_control_stall(uint8_t rhport);
-
-
 void usbd_edpt_stall(uint8_t rhport, uint8_t ep_addr);
 void usbd_edpt_stall(uint8_t rhport, uint8_t ep_addr);
 void usbd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr);
 void usbd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr);
 bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr);
 bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr);