Browse Source

migrate dfu runtime device to new control xfer cb

hathach 5 years ago
parent
commit
3cc1979adb
3 changed files with 8 additions and 13 deletions
  1. 6 9
      src/class/dfu/dfu_rt_device.c
  2. 1 2
      src/class/dfu/dfu_rt_device.h
  3. 1 2
      src/device/usbd.c

+ 6 - 9
src/class/dfu/dfu_rt_device.c

@@ -85,17 +85,14 @@ uint16_t dfu_rtd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, ui
   return drv_len;
 }
 
-bool dfu_rtd_control_complete(uint8_t rhport, tusb_control_request_t const * request)
+// Invoked when a control transfer occurred on an interface of this class
+// Driver response accordingly to the request and the transfer stage (setup/data/ack)
+// return false to stall control endpoint (e.g unsupported request)
+bool dfu_rtd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request)
 {
-  (void) rhport;
-  (void) request;
+  // nothing to do with DATA and ACK stage
+  if ( stage != CONTROL_STAGE_SETUP ) return true;
 
-  // nothing to do
-  return true;
-}
-
-bool dfu_rtd_control_request(uint8_t rhport, tusb_control_request_t const * request)
-{
   TU_VERIFY(request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_INTERFACE);
 
   // dfu-util will try to claim the interface with SET_INTERFACE request before sending DFU request

+ 1 - 2
src/class/dfu/dfu_rt_device.h

@@ -66,8 +66,7 @@ TU_ATTR_WEAK void tud_dfu_rt_reboot_to_dfu(void); // TODO rename to _cb conventi
 void     dfu_rtd_init(void);
 void     dfu_rtd_reset(uint8_t rhport);
 uint16_t dfu_rtd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t max_len);
-bool     dfu_rtd_control_request(uint8_t rhport, tusb_control_request_t const * request);
-bool     dfu_rtd_control_complete(uint8_t rhport, tusb_control_request_t const * request);
+bool     dfu_rtd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
 bool     dfu_rtd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
 
 #ifdef __cplusplus

+ 1 - 2
src/device/usbd.c

@@ -183,8 +183,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .init             = dfu_rtd_init,
     .reset            = dfu_rtd_reset,
     .open             = dfu_rtd_open,
-    .control_xfer_cb  = dfu_rtd_control_request,
-    .control_complete = dfu_rtd_control_complete,
+    .control_xfer_cb  = dfu_rtd_control_xfer_cb,
     .xfer_cb          = dfu_rtd_xfer_cb,
     .sof              = NULL
   },