hathach 4 лет назад
Родитель
Сommit
deab8c276a
5 измененных файлов с 25 добавлено и 22 удалено
  1. 4 4
      src/class/hid/hid_host.c
  2. 2 2
      src/class/msc/msc_host.c
  3. 10 10
      src/host/hub.c
  4. 7 4
      src/host/usbh.c
  5. 2 2
      src/host/usbh.h

+ 4 - 4
src/class/hid/hid_host.c

@@ -103,7 +103,7 @@ uint8_t tuh_hid_get_protocol(uint8_t dev_addr, uint8_t instance)
   return hid_itf->protocol_mode;
 }
 
-static bool set_protocol_complete(uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool set_protocol_complete(uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   uint8_t const itf_num     = (uint8_t) xfer->setup->wIndex;
   uint8_t const instance    = get_instance_id_by_itfnum(dev_addr, itf_num);
@@ -159,7 +159,7 @@ bool tuh_hid_set_protocol(uint8_t dev_addr, uint8_t instance, uint8_t protocol)
   return _hidh_set_protocol(dev_addr, hid_itf->itf_num, protocol, set_protocol_complete, 0);
 }
 
-static bool set_report_complete(uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool set_report_complete(uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_LOG2("HID Set Report complete\r\n");
 
@@ -390,7 +390,7 @@ enum {
 };
 
 static void config_driver_mount_complete(uint8_t dev_addr, uint8_t instance, uint8_t const* desc_report, uint16_t desc_len);
-static bool process_set_config(uint8_t dev_addr, tuh_control_xfer_t const * xfer);
+static bool process_set_config(uint8_t dev_addr, tuh_control_xfer_t* xfer);
 
 bool hidh_set_config(uint8_t dev_addr, uint8_t itf_num)
 {
@@ -406,7 +406,7 @@ bool hidh_set_config(uint8_t dev_addr, uint8_t itf_num)
   return process_set_config(dev_addr, &xfer);
 }
 
-static bool process_set_config(uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool process_set_config(uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   // Stall is a valid response for SET_IDLE, therefore we could ignore its result
   if ( xfer->setup->bRequest != HID_REQ_CONTROL_SET_IDLE )

+ 2 - 2
src/class/msc/msc_host.c

@@ -358,7 +358,7 @@ bool msch_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32
 // MSC Enumeration
 //--------------------------------------------------------------------+
 
-static bool config_get_maxlun_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
+static bool config_get_maxlun_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer);
 static bool config_test_unit_ready_complete(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
 static bool config_request_sense_complete(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
 static bool config_read_capacity_complete(uint8_t dev_addr, msc_cbw_t const* cbw, msc_csw_t const* csw);
@@ -432,7 +432,7 @@ bool msch_set_config(uint8_t dev_addr, uint8_t itf_num)
   return true;
 }
 
-static bool config_get_maxlun_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool config_get_maxlun_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   msch_interface_t* p_msc = get_itf(dev_addr);
 

+ 10 - 10
src/host/hub.c

@@ -225,8 +225,8 @@ bool hub_edpt_status_xfer(uint8_t dev_addr)
 // Set Configure
 //--------------------------------------------------------------------+
 
-static bool config_set_port_power (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
-static bool config_port_power_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
+static bool config_set_port_power (uint8_t dev_addr, tuh_control_xfer_t* xfer);
+static bool config_port_power_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer);
 
 bool hub_set_config(uint8_t dev_addr, uint8_t itf_num)
 {
@@ -262,7 +262,7 @@ bool hub_set_config(uint8_t dev_addr, uint8_t itf_num)
   return true;
 }
 
-static bool config_set_port_power (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool config_set_port_power (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_ASSERT(XFER_RESULT_SUCCESS == xfer->result);
 
@@ -279,7 +279,7 @@ static bool config_set_port_power (uint8_t dev_addr, tuh_control_xfer_t const *
   return hub_port_set_feature(dev_addr, hub_port, HUB_FEATURE_PORT_POWER, config_port_power_complete, 0);
 }
 
-static bool config_port_power_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool config_port_power_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_ASSERT(XFER_RESULT_SUCCESS == xfer->result);
    hub_interface_t* p_hub = get_itf(dev_addr);
@@ -305,9 +305,9 @@ static bool config_port_power_complete (uint8_t dev_addr, tuh_control_xfer_t con
 // Connection Changes
 //--------------------------------------------------------------------+
 
-static bool connection_get_status_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
-static bool connection_clear_conn_change_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
-static bool connection_port_reset_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer);
+static bool connection_get_status_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer);
+static bool connection_clear_conn_change_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer);
+static bool connection_port_reset_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer);
 
 // callback as response of interrupt endpoint polling
 bool hub_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes)
@@ -335,7 +335,7 @@ bool hub_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32
   return true;
 }
 
-static bool connection_get_status_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool connection_get_status_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_ASSERT(xfer->result == XFER_RESULT_SUCCESS);
 
@@ -363,7 +363,7 @@ static bool connection_get_status_complete (uint8_t dev_addr, tuh_control_xfer_t
   return true;
 }
 
-static bool connection_clear_conn_change_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool connection_clear_conn_change_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_ASSERT(xfer->result == XFER_RESULT_SUCCESS);
 
@@ -394,7 +394,7 @@ static bool connection_clear_conn_change_complete (uint8_t dev_addr, tuh_control
   return true;
 }
 
-static bool connection_port_reset_complete (uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool connection_port_reset_complete (uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   TU_ASSERT(xfer->result == XFER_RESULT_SUCCESS);
 

+ 7 - 4
src/host/usbh.c

@@ -882,7 +882,7 @@ bool usbh_edpt_busy(uint8_t dev_addr, uint8_t ep_addr)
 // Control transfer
 //--------------------------------------------------------------------+
 
-static bool _control_blocking_complete_cb(uint8_t daddr, tuh_control_xfer_t const * xfer)
+static bool _control_blocking_complete_cb(uint8_t daddr, tuh_control_xfer_t* xfer)
 {
   (void) daddr;
 
@@ -943,12 +943,15 @@ bool tuh_control_xfer (uint8_t daddr, tuh_control_xfer_t const* xfer)
 
       // TODO probably some timeout to prevent hanged
     }
+
+    // update result
+    //xfer->result = result;
   }
 
   return true;
 }
 
-uint8_t tuh_control_xfer_sync(uint8_t daddr, tuh_control_xfer_t const* xfer, uint32_t timeout_ms)
+bool tuh_control_xfer_sync(uint8_t daddr, tuh_control_xfer_t* xfer, uint32_t timeout_ms)
 {
   (void) timeout_ms;
 
@@ -977,7 +980,7 @@ static void _xfer_complete(uint8_t dev_addr, xfer_result_t result)
 
   // duplicate xfer since user can execute control transfer within callback
   tusb_control_request_t const request = _ctrl_xfer.request;
-  tuh_control_xfer_t const xfer_temp =
+  tuh_control_xfer_t xfer_temp =
   {
     .ep_addr     = 0,
     .result      = result,
@@ -1119,7 +1122,7 @@ static bool parse_configuration_descriptor (uint8_t dev_addr, tusb_desc_configur
 static void enum_full_complete(void);
 
 // process device enumeration
-static bool process_enumeration(uint8_t dev_addr, tuh_control_xfer_t const * xfer)
+static bool process_enumeration(uint8_t dev_addr, tuh_control_xfer_t* xfer)
 {
   if (XFER_RESULT_SUCCESS != xfer->result)
   {

+ 2 - 2
src/host/usbh.h

@@ -42,7 +42,7 @@
 struct tuh_control_xfer_s;
 typedef struct tuh_control_xfer_s tuh_control_xfer_t;
 
-typedef bool (*tuh_control_xfer_cb_t)(uint8_t daddr, tuh_control_xfer_t const * xfer);
+typedef bool (*tuh_control_xfer_cb_t)(uint8_t daddr, tuh_control_xfer_t* xfer);
 
 struct tuh_control_xfer_s
 {
@@ -135,7 +135,7 @@ bool tuh_configuration_set(uint8_t daddr, uint8_t config_num,
 
 // Sync (blocking) version of tuh_control_xfer()
 // return transfer result
-uint8_t tuh_control_xfer_sync(uint8_t daddr, tuh_control_xfer_t const* xfer, uint32_t timeout_ms);
+bool tuh_control_xfer_sync(uint8_t daddr, tuh_control_xfer_t * xfer, uint32_t timeout_ms);
 
 //--------------------------------------------------------------------+
 // Descriptors Asynchronous (non-blocking)