/** * @brief USBD_SetupStage * Handle the setup stage * @param pdev: device instance * @retval status */ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) { USBD_ParseSetupRequest(&pdev->request, psetup); pdev->ep0_state = USBD_EP0_SETUP; pdev->ep0_data_len = pdev->request.wLength; switch (pdev->request.bmRequest & 0x1F) { case USB_REQ_RECIPIENT_DEVICE: USBD_StdDevReq (pdev, &pdev->request); break; case USB_REQ_RECIPIENT_INTERFACE: USBD_StdItfReq(pdev, &pdev->request); break; case USB_REQ_RECIPIENT_ENDPOINT: USBD_StdEPReq(pdev, &pdev->request); break; default: USBD_LL_StallEP(pdev , pdev->request.bmRequest & 0x80); break; } return USBD_OK; }
/** * @brief USBD_SetupStage * Handle the setup stage * @param pdev: device instance * @retval status */ static uint8_t USBD_SetupStage(USB_CORE_HANDLE *pdev) { USB_SETUP_REQ req; USBD_ParseSetupRequest(pdev , &req); switch (req.bmRequest & 0x1F) { case USB_REQ_RECIPIENT_DEVICE: USBD_StdDevReq (pdev, &req); break; case USB_REQ_RECIPIENT_INTERFACE: USBD_StdItfReq(pdev, &req); break; case USB_REQ_RECIPIENT_ENDPOINT: USBD_StdEPReq(pdev, &req); break; default: DCD_EP_Stall(pdev , req.bmRequest & 0x80); break; } return USBD_OK; }
/** * @brief USBD_SetupStage * Handle the setup stage * @param pdev: device instance * @retval status */ static uint8_t USBD_SetupStage(USB_OTG_CORE_HANDLE *pdev) { USB_SETUP_REQ req; USBD_ParseSetupRequest(pdev , &req); // this is a filter that passes all setup packets to the usb_passthrough code //* if (USBPT_Is_Active != 0) { USBD_Status s = USBPTD_SetupStage(pdev, &req); if (s == USBD_OK) { return USBD_OK; } } //*/ switch (req.bmRequest & 0x1F) { case USB_REQ_RECIPIENT_DEVICE: USBD_StdDevReq (pdev, &req); break; case USB_REQ_RECIPIENT_INTERFACE: USBD_StdItfReq(pdev, &req); break; case USB_REQ_RECIPIENT_ENDPOINT: USBD_StdEPReq(pdev, &req); break; default: //pdev->dev.cb->Setup (pdev, &req); dbg_printf(DBGMODE_ERR, "\r\n USBD_SetupStage Stall, unknown bmRequest 0x%02X, file " __FILE__ ":%d\r\n", req.bmRequest, __LINE__); DCD_EP_Stall(pdev , req.bmRequest & 0x80); break; } return USBD_OK; }