Browse Source

stm32/usbdev: Optionally pass through vendor requests to Setup function.

Signed-off-by: Damien George <damien@micropython.org>
pull/12808/head
Damien George 1 year ago
parent
commit
7cf1118831
  1. 5
      ports/stm32/usbd_conf.h
  2. 8
      ports/stm32/usbdev/core/src/usbd_ctlreq.c

5
ports/stm32/usbd_conf.h

@ -49,6 +49,11 @@
#endif
#define USBD_DEBUG_LEVEL 0
// Whether the core USBD driver passes through vendor device requests to the class implementation.
#ifndef USBD_ENABLE_VENDOR_DEVICE_REQUESTS
#define USBD_ENABLE_VENDOR_DEVICE_REQUESTS (0)
#endif
// For MCUs with a device-only USB peripheral
#define USBD_PMA_RESERVE (64)
#define USBD_PMA_NUM_FIFO (16) // Maximum 8 endpoints, 2 FIFOs each

8
ports/stm32/usbdev/core/src/usbd_ctlreq.c

@ -120,6 +120,14 @@ USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
{
USBD_StatusTypeDef ret = USBD_OK;
#if USBD_ENABLE_VENDOR_DEVICE_REQUESTS
// Pass through vendor device requests directly to the implementation.
// It must call `USBD_CtlError(pdev, req);` if it does not respond to the request.
if ((req->bmRequest & 0xe0) == 0xc0) {
return pdev->pClass->Setup (pdev, req);
}
#endif
switch (req->bRequest)
{
case USB_REQ_GET_DESCRIPTOR:

Loading…
Cancel
Save