diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/class/cdc/cdc_device.c | 2 | ||||
| -rw-r--r-- | src/class/cdc/cdc_device.h | 2 | ||||
| -rw-r--r-- | src/class/custom/custom_device.c | 2 | ||||
| -rw-r--r-- | src/class/custom/custom_device.h | 2 | ||||
| -rw-r--r-- | src/class/hid/hid_device.c | 2 | ||||
| -rw-r--r-- | src/class/hid/hid_device.h | 2 | ||||
| -rw-r--r-- | src/class/msc/msc_device.c | 2 | ||||
| -rw-r--r-- | src/class/msc/msc_device.h | 2 | ||||
| -rw-r--r-- | src/device/usbd.c | 18 |
9 files changed, 20 insertions, 14 deletions
diff --git a/src/class/cdc/cdc_device.c b/src/class/cdc/cdc_device.c index 9c991b5ab..643706269 100644 --- a/src/class/cdc/cdc_device.c +++ b/src/class/cdc/cdc_device.c @@ -232,7 +232,7 @@ tusb_error_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface return TUSB_ERROR_NONE;
}
-void cdcd_close(uint8_t rhport)
+void cdcd_reset(uint8_t rhport)
{
// no need to close opened pipe, dcd bus reset will put controller's endpoints to default state
(void) rhport;
diff --git a/src/class/cdc/cdc_device.h b/src/class/cdc/cdc_device.h index a754669df..bdce0f86e 100644 --- a/src/class/cdc/cdc_device.h +++ b/src/class/cdc/cdc_device.h @@ -99,7 +99,7 @@ void cdcd_init (void); tusb_error_t cdcd_open (uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
tusb_error_t cdcd_control_request_st (uint8_t rhport, tusb_control_request_t const * p_request);
tusb_error_t cdcd_xfer_cb (uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes);
-void cdcd_close (uint8_t rhport);
+void cdcd_reset (uint8_t rhport);
#if CFG_TUD_CDC_FLUSH_ON_SOF
void cdcd_sof(uint8_t rhport);
diff --git a/src/class/custom/custom_device.c b/src/class/custom/custom_device.c index 3d0453001..e4dc1a839 100644 --- a/src/class/custom/custom_device.c +++ b/src/class/custom/custom_device.c @@ -97,7 +97,7 @@ tusb_error_t cusd_xfer_cb(uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, return TUSB_ERROR_NONE; } -void cusd_close(uint8_t rhport) +void cusd_reset(uint8_t rhport) { } diff --git a/src/class/custom/custom_device.h b/src/class/custom/custom_device.h index 08f4f7f4a..3e46c06a7 100644 --- a/src/class/custom/custom_device.h +++ b/src/class/custom/custom_device.h @@ -64,7 +64,7 @@ void cusd_init(void); tusb_error_t cusd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length); tusb_error_t cusd_control_request_st(uint8_t rhport, tusb_control_request_t const * p_request); tusb_error_t cusd_xfer_cb(uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes); -void cusd_close(uint8_t rhport); +void cusd_reset(uint8_t rhport); #endif diff --git a/src/class/hid/hid_device.c b/src/class/hid/hid_device.c index a6080e69d..bc2ee8c64 100644 --- a/src/class/hid/hid_device.c +++ b/src/class/hid/hid_device.c @@ -168,7 +168,7 @@ void hidd_init(void) }
}
-void hidd_close(uint8_t rhport)
+void hidd_reset(uint8_t rhport)
{
for(uint8_t i=0; i<HIDD_NUMBER_OF_SUBCLASS; i++)
{
diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h index b211731e0..855421eca 100644 --- a/src/class/hid/hid_device.h +++ b/src/class/hid/hid_device.h @@ -204,7 +204,7 @@ void hidd_init(void); tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
tusb_error_t hidd_control_request_st(uint8_t rhport, tusb_control_request_t const * p_request);
tusb_error_t hidd_xfer_cb(uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes);
-void hidd_close(uint8_t rhport);
+void hidd_reset(uint8_t rhport);
#endif
diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c index 5a92d2470..71987addf 100644 --- a/src/class/msc/msc_device.c +++ b/src/class/msc/msc_device.c @@ -153,7 +153,7 @@ void mscd_init(void) memclr_(&_mscd_itf, sizeof(mscd_interface_t));
}
-void mscd_close(uint8_t rhport)
+void mscd_reset(uint8_t rhport)
{
memclr_(&_mscd_itf, sizeof(mscd_interface_t));
}
diff --git a/src/class/msc/msc_device.h b/src/class/msc/msc_device.h index 104e46414..994e71c36 100644 --- a/src/class/msc/msc_device.h +++ b/src/class/msc/msc_device.h @@ -146,7 +146,7 @@ void mscd_init(void); tusb_error_t mscd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
tusb_error_t mscd_control_request_st(uint8_t rhport, tusb_control_request_t const * p_request);
tusb_error_t mscd_xfer_cb(uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes);
-void mscd_close(uint8_t rhport);
+void mscd_reset(uint8_t rhport);
#endif
diff --git a/src/device/usbd.c b/src/device/usbd.c index 018b94150..450f8b485 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -81,7 +81,7 @@ typedef struct { tusb_error_t (* control_req_st ) (uint8_t rhport, tusb_control_request_t const *);
tusb_error_t (* xfer_cb ) (uint8_t rhport, uint8_t ep_addr, tusb_event_t, uint32_t);
void (* sof ) (uint8_t rhport);
- void (* close ) (uint8_t);
+ void (* reset ) (uint8_t);
} usbd_class_driver_t;
static usbd_class_driver_t const usbd_class_drivers[] =
@@ -94,7 +94,7 @@ static usbd_class_driver_t const usbd_class_drivers[] = .control_req_st = cdcd_control_request_st,
.xfer_cb = cdcd_xfer_cb,
.sof = cdcd_sof,
- .close = cdcd_close
+ .reset = cdcd_reset
},
#endif
@@ -106,7 +106,7 @@ static usbd_class_driver_t const usbd_class_drivers[] = .control_req_st = hidd_control_request_st,
.xfer_cb = hidd_xfer_cb,
.sof = NULL,
- .close = hidd_close
+ .reset = hidd_reset
},
#endif
@@ -118,7 +118,7 @@ static usbd_class_driver_t const usbd_class_drivers[] = .control_req_st = mscd_control_request_st,
.xfer_cb = mscd_xfer_cb,
.sof = NULL,
- .close = mscd_close
+ .reset = mscd_reset
},
#endif
@@ -130,7 +130,7 @@ static usbd_class_driver_t const usbd_class_drivers[] = .control_req_st = cusd_control_request_st,
.xfer_cb = cusd_xfer_cb,
.sof = NULL,
- .close = cusd_close
+ .reset = cusd_reset
},
#endif
};
@@ -525,6 +525,12 @@ void dcd_bus_event(uint8_t rhport, usbd_bus_event_type_t bus_event) switch(bus_event)
{
case USBD_BUS_EVENT_RESET:
+ varclr_(&_usbd_dev);
+ for (uint8_t i = 0; i < USBD_CLASS_DRIVER_COUNT; i++)
+ {
+ if ( usbd_class_drivers[i].reset ) usbd_class_drivers[i].reset( rhport );
+ }
+
osal_queue_flush(_usbd_q);
osal_semaphore_reset_isr(_usbd_ctrl_sem);
break;
@@ -546,7 +552,7 @@ void dcd_bus_event(uint8_t rhport, usbd_bus_event_type_t bus_event) varclr_(&_usbd_dev);
for (uint8_t i = 0; i < USBD_CLASS_DRIVER_COUNT; i++)
{
- if ( usbd_class_drivers[i].close ) usbd_class_drivers[i].close( rhport );
+ if ( usbd_class_drivers[i].reset ) usbd_class_drivers[i].reset( rhport );
}
tud_umount_cb(); // invoke callback
|
