void hidd_kbd_class_reset(USBD* usbd, void* param) { HIDD_KBD* hidd = (HIDD_KBD*)param; usbd_usb_ep_close(usbd, USB_EP_IN | hidd->in_ep); usbd_unregister_endpoint(usbd, hidd->iface, hidd->in_ep); usbd_unregister_interface(usbd, hidd->iface, &__HIDD_KBD_CLASS); hidd_kbd_destroy(hidd); }
void mscd_class_reset(USBD* usbd, void* param) { MSCD* mscd = (MSCD*)param; mscd_flush(usbd, mscd); usbd_unregister_endpoint(usbd, mscd->iface_num, mscd->ep_num); usbd_unregister_interface(usbd, mscd->iface_num, &__MSCD_CLASS); usbd_usb_ep_close(usbd, mscd->ep_num); usbd_usb_ep_close(usbd, USB_EP_IN | mscd->ep_num); mscd_destroy(mscd); }
void cdc_acmd_class_reset(USBD* usbd, void* param) { CDC_ACMD* cdc_acmd = (CDC_ACMD*)param; #if (USBD_CDC_ACM_TX_STREAM_SIZE) stream_stop_listen(cdc_acmd->tx_stream); stream_flush(cdc_acmd->tx_stream); usbd_usb_ep_close(usbd, USB_EP_IN | cdc_acmd->data_ep); #endif //USBD_CDC_ACM_TX_STREAM_SIZE #if (USBD_CDC_ACM_RX_STREAM_SIZE) stream_flush(cdc_acmd->rx_stream); usbd_usb_ep_close(usbd, cdc_acmd->data_ep); #endif //USBD_CDC_ACM_RX_STREAM_SIZE usbd_unregister_endpoint(usbd, cdc_acmd->data_iface, cdc_acmd->data_ep); usbd_unregister_interface(usbd, cdc_acmd->data_iface, &__CDC_ACMD_CLASS); if (cdc_acmd->control_ep) { usbd_usb_ep_close(usbd, USB_EP_IN | cdc_acmd->control_ep); usbd_unregister_endpoint(usbd, cdc_acmd->control_iface, cdc_acmd->control_ep); usbd_unregister_interface(usbd, cdc_acmd->control_iface, &__CDC_ACMD_CLASS); } cdc_acmd_destroy(cdc_acmd); }