hathach 8 лет назад
Родитель
Сommit
47c125d025

+ 2 - 2
tinyusb/class/cdc/cdc_device.c

@@ -258,11 +258,11 @@ tusb_error_t cdcd_control_request_st(uint8_t rhport, tusb_control_request_t cons
       p_cdc->connected = false;
     }
 
-    usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+    dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
   }
   else
   {
-    usbd_control_stall(rhport); // stall unsupported request
+    dcd_control_stall(rhport); // stall unsupported request
   }
 
   OSAL_SUBTASK_END

+ 4 - 4
tinyusb/class/hid/hid_device.c

@@ -212,7 +212,7 @@ tusb_error_t hidd_control_request_st(uint8_t rhport, tusb_control_request_t cons
       STASK_INVOKE( usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, m_hid_buffer, p_hid->report_length), err );
     }else
     {
-      usbd_control_stall(rhport);
+      dcd_control_stall(rhport);
     }
   }
   //------------- Class Specific Request -------------//
@@ -241,17 +241,17 @@ tusb_error_t hidd_control_request_st(uint8_t rhport, tusb_control_request_t cons
     else if (HID_REQUEST_CONTROL_SET_IDLE == p_request->bRequest)
     {
       // uint8_t idle_rate = u16_high_u8(p_request->wValue);
-      usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+      dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
     }else
     {
 //      HID_REQUEST_CONTROL_GET_IDLE:
 //      HID_REQUEST_CONTROL_GET_PROTOCOL:
 //      HID_REQUEST_CONTROL_SET_PROTOCOL:
-      usbd_control_stall(rhport);
+      dcd_control_stall(rhport);
     }
   }else
   {
-    usbd_control_stall(rhport);
+    dcd_control_stall(rhport);
   }
 
   OSAL_SUBTASK_END

+ 2 - 2
tinyusb/class/msc/msc_device.c

@@ -147,7 +147,7 @@ tusb_error_t mscd_control_request_st(uint8_t rhport, tusb_control_request_t cons
 
   if(MSC_REQUEST_RESET == p_request->bRequest)
   {
-    usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+    dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
   }
   else if (MSC_REQUEST_GET_MAX_LUN == p_request->bRequest)
   {
@@ -156,7 +156,7 @@ tusb_error_t mscd_control_request_st(uint8_t rhport, tusb_control_request_t cons
     STASK_INVOKE( usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, p_msc->scsi_data, 1), err);
   }else
   {
-    usbd_control_stall(rhport); // stall unsupported request
+    dcd_control_stall(rhport); // stall unsupported request
   }
 
   OSAL_SUBTASK_END

+ 17 - 4
tinyusb/device/dcd.h

@@ -77,17 +77,15 @@ void dcd_xfer_complete    (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_byt
 
 static inline void dcd_control_complete(uint8_t rhport)
 {
-  // TODO all control complete is successful !!
+  // all control complete is successful !!
   dcd_xfer_complete(rhport, 0, 0, true);
 }
 
 /*------------------------------------------------------------------*/
 /* Endpoint API
  *------------------------------------------------------------------*/
-//------------- Control Endpoint -------------//
-bool dcd_control_xfer     (uint8_t rhport, tusb_dir_t dir, uint8_t * buffer, uint16_t length);
 
-//------------- Other Endpoints -------------//
+//------------- Non-control Endpoints -------------//
 bool dcd_edpt_open        (uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc);
 bool dcd_edpt_xfer        (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes);
 bool dcd_edpt_busy        (uint8_t rhport, uint8_t ep_addr);
@@ -95,6 +93,21 @@ bool dcd_edpt_busy        (uint8_t rhport, uint8_t ep_addr);
 void dcd_edpt_stall       (uint8_t rhport, uint8_t ep_addr);
 void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr);
 
+//------------- Control Endpoint -------------//
+bool dcd_control_xfer     (uint8_t rhport, tusb_dir_t dir, uint8_t * buffer, uint16_t length);
+
+// Note input dir is value of direction bit in setup packet (i.e DATA stage direction)
+static inline bool dcd_control_status(uint8_t rhport, tusb_dir_t dir)
+{
+  // status direction is reversed to one in the setup packet
+  return dcd_control_xfer(rhport, 1-dir, NULL, 0);
+}
+
+static inline void dcd_control_stall(uint8_t rhport)
+{
+  dcd_edpt_stall(rhport, 0);
+}
+
 #ifdef __cplusplus
  }
 #endif

+ 9 - 9
tinyusb/device/usbd.c

@@ -328,7 +328,7 @@ tusb_error_t usbd_control_xfer_st(uint8_t rhport, tusb_dir_t dir, uint8_t * buff
   // Status opposite direction with Zero Length
   // No need to wait for status to complete therefore
   // status phase must not call dcd_control_complete/dcd_xfer_complete
-  usbd_control_status(rhport, dir);
+  dcd_control_status(rhport, dir);
 
   OSAL_SUBTASK_END
 }
@@ -354,7 +354,7 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
         STASK_INVOKE( usbd_control_xfer_st(rhport, p_request->bmRequestType_bit.direction, (uint8_t*) buffer, len ), error );
       }else
       {
-        usbd_control_stall(rhport); // stall unsupported descriptor
+        dcd_control_stall(rhport); // stall unsupported descriptor
       }
     }
     else if (TUSB_REQ_GET_CONFIGURATION == p_request->bRequest )
@@ -368,17 +368,17 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
       usbd_devices[rhport].state = TUSB_DEVICE_STATE_ADDRESSED;
 
       #ifndef NRF52840_XXAA // nrf52 auto handle set address, we must not return status
-      usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+      dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
       #endif
     }
     else if ( TUSB_REQ_SET_CONFIGURATION == p_request->bRequest )
     {
       proc_set_config_req(rhport, (uint8_t) p_request->wValue);
-      usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+      dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
     }
     else
     {
-      usbd_control_stall(rhport); // Stall unsupported request
+      dcd_control_stall(rhport); // Stall unsupported request
     }
   }
 
@@ -396,7 +396,7 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
       STASK_INVOKE( usbd_class_drivers[class_code].control_request_st(rhport, p_request), error );
     }else
     {
-      usbd_control_stall(rhport); // Stall unsupported request
+      dcd_control_stall(rhport); // Stall unsupported request
     }
   }
 
@@ -407,17 +407,17 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
     if (TUSB_REQ_CLEAR_FEATURE == p_request->bRequest )
     {
       dcd_edpt_clear_stall(rhport, u16_low_u8(p_request->wIndex) );
-      usbd_control_status(rhport, p_request->bmRequestType_bit.direction);
+      dcd_control_status(rhport, p_request->bmRequestType_bit.direction);
     } else
     {
-      usbd_control_stall(rhport); // Stall unsupported request
+      dcd_control_stall(rhport); // Stall unsupported request
     }
   }
 
   //------------- Unsupported Request -------------//
   else
   {
-    usbd_control_stall(rhport); // Stall unsupported request
+    dcd_control_stall(rhport); // Stall unsupported request
   }
 
   OSAL_SUBTASK_END

+ 0 - 11
tinyusb/device/usbd_pvt.h

@@ -52,18 +52,7 @@ void         usbd_task( void* param);
 // Carry out Data and Status stage of control transfer
 tusb_error_t usbd_control_xfer_st(uint8_t rhport, tusb_dir_t dir, uint8_t * buffer, uint16_t length);
 
-// Return Status of control transfer
-// Note dir is value of direction bit in setup packet (aka DATA stage direction)
-static inline bool usbd_control_status(uint8_t rhport, tusb_dir_t dir)
-{
-  // status direction is reversed to one in the setup packet
-  return dcd_control_xfer(rhport, 1-dir, NULL, 0);
-}
 
-static inline void usbd_control_stall(uint8_t rhport)
-{
-  dcd_edpt_stall(rhport, 0);
-}
 
 
 #ifdef __cplusplus