Browse Source

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
pull/959/merge
David Lamparter 7 years ago
committed by Karl Palsson
parent
commit
ebcf197810
  1. 7
      include/libopencm3/usb/usbd.h
  2. 3
      lib/usb/usb.c

7
include/libopencm3/usb/usbd.h

@ -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

3
lib/usb/usb.c

@ -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) {

Loading…
Cancel
Save