usb: make usb_disconnect() weak

usb_disconnect() is board/platform specific for chips that don't have
built-in handling for this.  Allow the application to provide its own
version of usb_disconnect() to handle this.

See https://github.com/libopencm3/libopencm3/pull/924
This commit is contained in:
David Lamparter 2018-05-26 14:59:14 +02:00 committed by Karl Palsson
parent 343cff4675
commit ebcf197810
2 changed files with 8 additions and 2 deletions

View File

@ -160,7 +160,12 @@ extern void usbd_register_set_altsetting_callback(usbd_device *usbd_dev,
/* Functions to be provided by the hardware abstraction layer */
extern void usbd_poll(usbd_device *usbd_dev);
/** Disconnect, if supported by the driver */
/** Disconnect, if supported by the driver
*
* This function is implemented as weak function and can be replaced by an
* application specific version to handle chips that don't have built-in
* handling for this (e.g. STM32F1.)
*/
extern void usbd_disconnect(usbd_device *usbd_dev, bool disconnected);
/** Setup an endpoint

View File

@ -112,7 +112,8 @@ void usbd_poll(usbd_device *usbd_dev)
usbd_dev->driver->poll(usbd_dev);
}
void usbd_disconnect(usbd_device *usbd_dev, bool disconnected)
__attribute__((weak)) void usbd_disconnect(usbd_device *usbd_dev,
bool disconnected)
{
/* not all drivers support disconnection */
if (usbd_dev->driver->disconnect) {