#ifndef __USBD_DESC__C__ #define __USBD_DESC__C__ #ifdef __cplusplus extern "C" { #endif #include "usbd_conf.h" #include "usbd_def.h" /** Descriptor for the Usb device. */ extern USBD_DescriptorsTypeDef USBD_COMMON_Desc; #if USBD_GETDESCRIPTORS_ALTMETHOD == 1 extern const uint8_t * USBD_COMMON_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_GetCfgDesc (USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_GetMsOsStringDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_GetExtCompatIdOsFeatureDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); extern const uint8_t * USBD_COMMON_GetExtPropertiesOsFeatureDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); // @USBD_GETDESCRIPTOR_DEFAULT_HANDLERS_SET // Allows to inherit the the handlers in the class-specific handlers set: // You should declare your own @USBD_DescriptorsTypeDef variable, and // the initialize the contents with your functions by filed names, but // insert this marco in the top: // const USBD_DescriptorsTypeDef CustomDescriptorHandlers = { // USBD_GETDESCRIPTOR_DEFAULT_HANDLERS_SET, // .GetDeviceDescriptor = MyCustomGetDeviceDescriptor // .GetInterfaceStrDescriptor = MyCustomGetInterfaceStrDescriptor, // }; // In the example above only @GetDeviceDescriptor and @GetInterfaceStrDescriptor // are implemeted in the class and overrided in the structure, all others // handlers are initialized by the default handler-functions. // // INTERNATIONAL STANDARD ISO/IEC 9899, Programming languages — C, Second edition 1999-12-01 // 6.7.8 Initialization, section 19: // The initialization shall occur in initializer list order, each initializer provided for a // particular subobject overriding any previously listed initializer for the same subobject; all // subobjects that are not initialized explicitly shall be initialized implicitly the same as // objects that have static storage duration. #define USBD_GETDESCRIPTOR_DEFAULT_HANDLERS_SET \ .GetDeviceDescriptor = USBD_COMMON_DeviceDescriptor\ , .GetLangIDStrDescriptor = USBD_COMMON_LangIDStrDescriptor\ , .GetManufacturerStrDescriptor = USBD_COMMON_ManufacturerStrDescriptor\ , .GetProductStrDescriptor = USBD_COMMON_ProductStrDescriptor\ , .GetSerialStrDescriptor = USBD_COMMON_SerialStrDescriptor\ , .GetConfigurationStrDescriptor = USBD_COMMON_ConfigStrDescriptor\ , .GetInterfaceStrDescriptor = USBD_COMMON_InterfaceStrDescriptor\ , .GetConfigDescriptor = USBD_COMMON_GetCfgDesc\ , .GetMsOsStringDescriptor = USBD_COMMON_GetMsOsStringDescriptor\ , .GetExtCompatIdOsFeatureDescriptor = USBD_COMMON_GetExtCompatIdOsFeatureDescriptor\ USBD_GETUSERSTR_INITIALIZER #if USBD_SUPPORT_USER_STRING #define USBD_GETUSERSTR_INITIALIZER ,.GetUsrStrDescriptor = NULL #else #define USBD_GETUSERSTR_INITIALIZER #endif #endif // USBD_GETDESCRIPTORS_ALTMETHOD #ifdef __cplusplus } #endif #endif /* __USBD_DESC__C__ */