summaryrefslogtreecommitdiff
path: root/tinyusb/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-11-21 12:47:55 +0700
committerhathach <[email protected]>2013-11-21 12:47:55 +0700
commit6887e5e642c71666d622d28b52e1d32fea67982c (patch)
tree8bbb974398b88df45a16e1076c9d06ddb2814c3c /tinyusb/device/usbd.c
parentd94efa60d62a6b6b1beecaf823ab67648563ea52 (diff)
refractor usbd-dcd callback, add bus event isr
Diffstat (limited to 'tinyusb/device/usbd.c')
-rw-r--r--tinyusb/device/usbd.c42
1 files changed, 25 insertions, 17 deletions
diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c
index 328b881ea..aefdb78e1 100644
--- a/tinyusb/device/usbd.c
+++ b/tinyusb/device/usbd.c
@@ -71,7 +71,7 @@ static usbd_class_driver_t const usbd_class_drivers[TUSB_CLASS_MAPPED_INDEX_STAR
.open = hidd_open,
.control_request = hidd_control_request,
.isr = hidd_isr,
- .bus_reset = hidd_bus_reset
+ .close = hidd_close
},
#endif
@@ -82,7 +82,7 @@ static usbd_class_driver_t const usbd_class_drivers[TUSB_CLASS_MAPPED_INDEX_STAR
.open = mscd_open,
.control_request = mscd_control_request,
.isr = mscd_isr,
- .bus_reset = mscd_bus_reset
+ .close = mscd_close
},
#endif
@@ -93,7 +93,7 @@ static usbd_class_driver_t const usbd_class_drivers[TUSB_CLASS_MAPPED_INDEX_STAR
.open = cdcd_open,
.control_request = cdcd_control_request,
.isr = cdcd_isr,
- .bus_reset = cdcd_bus_reset
+ .close = cdcd_close
},
#endif
@@ -251,19 +251,6 @@ OSAL_TASK_FUNCTION(usbd_task) (void* p_task_para)
OSAL_TASK_LOOP_END
}
-void usbd_bus_reset(uint32_t coreid)
-{
- memclr_(&usbd_devices[coreid], sizeof(usbd_device_info_t));
-
- for (tusb_std_class_code_t class_code = TUSB_CLASS_AUDIO; class_code <= TUSB_CLASS_AUDIO_VIDEO; class_code++)
- {
- if ( usbd_class_drivers[class_code].bus_reset )
- {
- usbd_class_drivers[class_code].bus_reset( coreid );
- }
- }
-}
-
tusb_error_t usbd_init (void)
{
ASSERT_STATUS ( dcd_init() );
@@ -368,8 +355,29 @@ tusb_error_t get_descriptor_subtask(uint8_t coreid, tusb_control_request_t * p_r
//--------------------------------------------------------------------+
//--------------------------------------------------------------------+
-// DCD Callback API
+// USBD-DCD Callback API
//--------------------------------------------------------------------+
+void usbd_dcd_bus_event_isr(uint8_t coreid, usbd_bus_event_type_t bus_event)
+{
+ switch(bus_event)
+ {
+ case USBD_BUS_EVENT_RESET :
+ case USBD_BUS_EVENT_UNPLUGGED :
+ memclr_(&usbd_devices[coreid], sizeof(usbd_device_info_t));
+ for (tusb_std_class_code_t class_code = TUSB_CLASS_AUDIO; class_code <= TUSB_CLASS_AUDIO_VIDEO; class_code++)
+ {
+ if ( usbd_class_drivers[class_code].close ) usbd_class_drivers[class_code].close( coreid );
+ }
+ break;
+
+ case USBD_BUS_EVENT_SUSPENDED:
+ usbd_devices[coreid].state = TUSB_DEVICE_STATE_SUSPENDED;
+ break;
+
+ default: break;
+ }
+}
+
void usbd_setup_received_isr(uint8_t coreid, tusb_control_request_t * p_request)
{
usbd_devices[coreid].control_request = (*p_request);