22#ifdef USE_USBD_COMPOSITE
23#include "usbd_composite_builder.h"
100#if (USBD_DEBUG_LEVEL > 1U)
106#ifdef USE_USBD_COMPOSITE
115 pdev->tclasslist[i].Active = 0;
159#ifdef USE_USBD_COMPOSITE
164 if ((pdev->tclasslist[i].Active) == 1U)
208#if (USBD_DEBUG_LEVEL > 1U)
236#ifdef USE_USBD_COMPOSITE
247 USBD_CompositeClassTypeDef classtype, uint8_t *EpAddr)
254 if ((uint32_t)pclass != 0U)
260 pdev->tclasslist[pdev->
classId].EpAdd = EpAddr;
263 (void)USBD_CMPSIT_AddClass(pdev, pclass, classtype, 0);
271#if (USBD_DEBUG_LEVEL > 1U)
282 pdev->
pConfDesc = USBD_CMPSIT.GetHSConfigDescriptor(&len);
284 pdev->
pConfDesc = USBD_CMPSIT.GetFSConfigDescriptor(&len);
304 for (idx1 = 0; idx1 < pdev->
NumClasses; idx1++)
307 if (pdev->tclasslist[idx1].Active == 1U)
318#if (USBD_DEBUG_LEVEL > 1U)
319 USBD_ErrLog(
"Class DeInit didn't succeed!, can't unregister selected class");
330 pdev->tclasslist[pdev->
classId].ClassType = CLASS_TYPE_NONE;
331 pdev->tclasslist[pdev->
classId].ClassId = 0U;
332 pdev->tclasslist[pdev->
classId].Active = 0U;
333 pdev->tclasslist[pdev->
classId].NumEps = 0U;
334 pdev->tclasslist[pdev->
classId].NumIf = 0U;
335 pdev->tclasslist[pdev->
classId].CurrPcktSze = 0U;
339 pdev->tclasslist[pdev->
classId].Eps[idx2].add = 0U;
340 pdev->tclasslist[pdev->
classId].Eps[idx2].type = 0U;
341 pdev->tclasslist[pdev->
classId].Eps[idx2].size = 0U;
342 pdev->tclasslist[pdev->
classId].Eps[idx2].is_used = 0U;
347 pdev->tclasslist[pdev->
classId].Ifs[idx2] = 0U;
353 (void)USBD_CMPST_ClearConfDesc(pdev);
363#if (USBD_USER_REGISTER_CALLBACK == 1U)
372 pdev->DevStateCallback = pUserCallback;
386#ifdef USE_USBD_COMPOSITE
406#ifdef USE_USBD_COMPOSITE
411 if ((pdev->tclasslist[i].Active) == 1U)
442#ifdef USBD_HS_TESTMODE_ENABLE
469#ifdef USE_USBD_COMPOSITE
474 if ((pdev->tclasslist[i].Active) == 1U)
480 if (pdev->
pClass[i]->
Init(pdev, cfgidx) != 0U)
509#ifdef USE_USBD_COMPOSITE
514 if ((pdev->tclasslist[i].Active) == 1U)
587 uint8_t epnum, uint8_t *pdata)
685 uint8_t epnum, uint8_t *pdata)
695 pep = &pdev->
ep_in[0];
788#ifdef USE_USBD_COMPOSITE
793 if ((pdev->tclasslist[i].Active) == 1U)
898#ifdef USE_USBD_COMPOSITE
903 if ((pdev->tclasslist[i].Active) == 1U)
1008#ifdef USE_USBD_COMPOSITE
1013 if ((pdev->tclasslist[i].Active) == 1U)
1048#ifdef USE_USBD_COMPOSITE
1053 if ((pdev->tclasslist[i].Active) == 1U)
1056 for (uint32_t j = 0U; j < pdev->tclasslist[i].NumIf; j++)
1059 if (pdev->tclasslist[i].Ifs[j] == index)
1088#ifdef USE_USBD_COMPOSITE
1093 if ((pdev->tclasslist[i].Active) == 1U)
1096 for (uint32_t j = 0U; j < pdev->tclasslist[i].NumEps; j++)
1099 if (pdev->tclasslist[i].Eps[j].add == index)
1119#ifdef USE_USBD_COMPOSITE
1129uint8_t USBD_CoreGetEPAdd(
USBD_HandleTypeDef *pdev, uint8_t ep_dir, uint8_t ep_type, uint8_t ClassId)
1134 for (idx = 0;
idx < pdev->tclasslist[ClassId].NumEps;
idx++)
1136 if (((pdev->tclasslist[ClassId].Eps[idx].add & USBD_EP_IN) == ep_dir) && \
1137 (pdev->tclasslist[ClassId].Eps[idx].type == ep_type) && \
1138 (pdev->tclasslist[ClassId].Eps[idx].is_used != 0U))
1140 return (pdev->tclasslist[ClassId].Eps[idx].add);
1160 USBD_ConfigDescTypeDef *desc = (USBD_ConfigDescTypeDef *)(
void *)pConfDesc;
1161 USBD_EpDescTypeDef *pEpDesc =
NULL;
1164 if (desc->wTotalLength > desc->bLength)
1166 ptr = desc->bLength;
1174 pEpDesc = (USBD_EpDescTypeDef *)(
void *)pdesc;
1176 if (pEpDesc->bEndpointAddress == EpAddr)
1188 return (
void *)pEpDesc;
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
Initializes the low level portion of the device driver.
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
Starts the low level portion of the device driver.
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
Prepares an endpoint for reception.
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
De-Initializes the low level portion of the device driver.
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Sets a Stall condition on an endpoint of the Low Level Driver.
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
Stops the low level portion of the device driver.
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
Opens an endpoint of the low level driver.
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
USBD_LL_DevDisconnected Handle device disconnection event.
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_LL_DataInStage Handle data in stage.
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
USBD_ClrClassConfig Clear current configuration.
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
USBD_SetClassConfig Configure device and start the interface.
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_LL_DataOutStage Handle data OUT stage.
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_LL_IsoOUTIncomplete Handle iso out incomplete event.
USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev)
USBD_RunTestMode Launch test mode process.
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass)
USBD_RegisterClass Link class driver to Device Core.
USBD_DescHeaderTypeDef * USBD_GetNextDesc(uint8_t *pbuf, uint16_t *ptr)
USBD_GetNextDesc This function return the next descriptor header.
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev)
USBD_Start Start the USB Device Core.
uint8_t USBD_CoreFindEP(USBD_HandleTypeDef *pdev, uint8_t index)
USBD_CoreFindEP return the class index relative to the selected endpoint.
USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev)
USBD_Stop Stop the USB Device Core.
uint8_t USBD_CoreFindIF(USBD_HandleTypeDef *pdev, uint8_t index)
USBD_CoreFindIF return the class index relative to the selected interface.
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_LL_IsoINIncomplete Handle iso in incomplete event.
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
USBD_LL_Suspend Handle Suspend event.
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
USBD_LL_Reset Handle Reset event.
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
USBD_DeInit De-Initialize the device library.
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed)
USBD_LL_SetSpeed Handle Reset event.
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
USBD_LL_DevConnected Handle device connection event.
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
USBD_LL_SetupStage Handle the setup stage.
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
USBD_LL_SOF Handle SOF event.
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
USBD_LL_Resume Handle Resume event.
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id)
USBD_Init Initialize the device stack and load the class driver.
void * USBD_GetEpDesc(uint8_t *pConfDesc, uint8_t EpAddr)
USBD_GetEpDesc This function return the Endpoint descriptor.
struct _USBD_HandleTypeDef USBD_HandleTypeDef
struct _Device_cb USBD_ClassTypeDef
USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev)
USBD_CtlSendStatus send zero lzngth packet on the ctl pipe.
USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, uint8_t *pbuf, uint32_t len)
USBD_CtlContinueSendData continue sending data on the ctl pipe.
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, uint8_t *pbuf, uint32_t len)
USBD_CtlContinueRx continue receive data on the ctl pipe.
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev)
USBD_CtlReceiveStatus receive zero lzngth packet on the ctl pipe.
USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
USBD_StdEPReq Handle standard usb endpoint requests.
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
USBD_ParseSetupRequest Copy buffer into setup structure.
USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
USBD_StdItfReq Handle standard usb interface requests.
USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
USBD_StdDevReq Handle standard usb device requests.
#define USBD_STATE_DEFAULT
#define USBD_EP_TYPE_CTRL
#define USBD_STATE_CONFIGURED
#define USBD_EP0_DATA_OUT
#define USB_REQ_RECIPIENT_DEVICE
#define USB_DESC_TYPE_ENDPOINT
#define USBD_MAX_SUPPORTED_CLASS
#define USBD_MAX_CLASS_ENDPOINTS
#define USBD_STATE_SUSPENDED
#define USB_REQ_RECIPIENT_ENDPOINT
#define USBD_MAX_CLASS_INTERFACES
#define USB_REQ_RECIPIENT_INTERFACE
*brief write string representation of the JSON pointer to stream *sa const json_pointer & ptr
uint8_t(* IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum)
uint8_t *(* GetFSConfigDescriptor)(uint16_t *length)
uint8_t(* EP0_RxReady)(struct _USBD_HandleTypeDef *pdev)
uint8_t *(* GetHSConfigDescriptor)(uint16_t *length)
uint8_t(* DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum)
uint8_t(* Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx)
uint8_t(* IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum)
uint8_t(* DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx)
uint8_t(* Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
uint8_t(* DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum)
uint8_t(* EP0_TxSent)(struct _USBD_HandleTypeDef *pdev)
uint8_t(* SOF)(struct _USBD_HandleTypeDef *pdev)
__IO uint8_t dev_old_state
USBD_EndpointTypeDef ep_in[16]
USBD_EndpointTypeDef ep_out[16]
uint32_t dev_remote_wakeup
USBD_DescriptorsTypeDef * pDesc
USBD_SpeedTypeDef dev_speed
USBD_ClassTypeDef * pClass[USBD_MAX_SUPPORTED_CLASS]
USBD_SetupReqTypedef request
void * pUserData[USBD_MAX_SUPPORTED_CLASS]
Header file for usbd_core.c file.