master
Ondřej Hruška 9 years ago
parent 73065ffca0
commit f1abfedd1c
  1. 128
      Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c
  2. 167
      Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h.orig
  3. 4
      Src/usbd_desc.c

@ -94,20 +94,20 @@
*/ */
static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_Init(USBD_HandleTypeDef *pdev,
uint8_t cfgidx); uint8_t cfgidx);
static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_DeInit(USBD_HandleTypeDef *pdev,
uint8_t cfgidx); uint8_t cfgidx);
static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_Setup(USBD_HandleTypeDef *pdev,
USBD_SetupReqTypedef *req); USBD_SetupReqTypedef *req);
static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length); static uint8_t *USBD_HID_GetCfgDesc(uint16_t *length);
static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length); static uint8_t *USBD_HID_GetDeviceQualifierDesc(uint16_t *length);
static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum); static uint8_t USBD_HID_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum);
/** /**
* @} * @}
*/ */
@ -117,7 +117,7 @@ static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
*/ */
USBD_ClassTypeDef USBD_HID = USBD_ClassTypeDef USBD_HID =
{ {
USBD_HID_Init, USBD_HID_Init,
USBD_HID_DeInit, USBD_HID_DeInit,
USBD_HID_Setup, USBD_HID_Setup,
@ -132,11 +132,11 @@ USBD_ClassTypeDef USBD_HID =
USBD_HID_GetCfgDesc, USBD_HID_GetCfgDesc,
USBD_HID_GetCfgDesc, USBD_HID_GetCfgDesc,
USBD_HID_GetDeviceQualifierDesc, USBD_HID_GetDeviceQualifierDesc,
}; };
/* USB HID device Configuration Descriptor */ /* USB HID device Configuration Descriptor */
__ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END = __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END =
{ {
0x09, /* bLength: Configuration Descriptor size */ 0x09, /* bLength: Configuration Descriptor size */
USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
USB_HID_CONFIG_DESC_SIZ, USB_HID_CONFIG_DESC_SIZ,
@ -182,11 +182,11 @@ __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_
0x00, 0x00,
HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/ HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/
/* 34 */ /* 34 */
} ; };
/* USB HID device Configuration Descriptor */ /* USB HID device Configuration Descriptor */
__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END = __ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END =
{ {
/* 18 */ /* 18 */
0x09, /*bLength: HID Descriptor size*/ 0x09, /*bLength: HID Descriptor size*/
HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/ HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
@ -197,11 +197,11 @@ __ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END =
0x22, /*bDescriptorType*/ 0x22, /*bDescriptorType*/
HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/ HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
0x00, 0x00,
}; };
/* USB Standard Device Descriptor */ /* USB Standard Device Descriptor */
__ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = __ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
{ {
USB_LEN_DEV_QUALIFIER_DESC, USB_LEN_DEV_QUALIFIER_DESC,
USB_DESC_TYPE_DEVICE_QUALIFIER, USB_DESC_TYPE_DEVICE_QUALIFIER,
0x00, 0x00,
@ -212,10 +212,10 @@ __ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_
0x40, 0x40,
0x01, 0x01,
0x00, 0x00,
}; };
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END = __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{ {
0x05, 0x01, 0x05, 0x01,
0x09, 0x02, 0x09, 0x02,
0xA1, 0x01, 0xA1, 0x01,
@ -262,7 +262,7 @@ __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] _
0x01, 0xb1, 0x01, 0xb1,
0x01, 0xc0 0x01, 0xc0
}; };
/** /**
* @} * @}
@ -279,7 +279,7 @@ __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] _
* @param cfgidx: Configuration index * @param cfgidx: Configuration index
* @retval status * @retval status
*/ */
static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_Init(USBD_HandleTypeDef *pdev,
uint8_t cfgidx) uint8_t cfgidx)
{ {
uint8_t ret = 0; uint8_t ret = 0;
@ -290,15 +290,13 @@ static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
USBD_EP_TYPE_INTR, USBD_EP_TYPE_INTR,
HID_EPIN_SIZE); HID_EPIN_SIZE);
pdev->pClassData = USBD_malloc(sizeof (USBD_HID_HandleTypeDef)); pdev->pClassData = USBD_malloc(sizeof(USBD_HID_HandleTypeDef));
if(pdev->pClassData == NULL) if (pdev->pClassData == NULL) {
{
ret = 1; ret = 1;
} }
else else {
{ ((USBD_HID_HandleTypeDef *) pdev->pClassData)->state = HID_IDLE;
((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE;
} }
return ret; return ret;
} }
@ -310,7 +308,7 @@ static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
* @param cfgidx: Configuration index * @param cfgidx: Configuration index
* @retval status * @retval status
*/ */
static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_DeInit(USBD_HandleTypeDef *pdev,
uint8_t cfgidx) uint8_t cfgidx)
{ {
/* Close HID EPs */ /* Close HID EPs */
@ -318,8 +316,7 @@ static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
HID_EPIN_ADDR); HID_EPIN_ADDR);
/* FRee allocated memory */ /* FRee allocated memory */
if(pdev->pClassData != NULL) if (pdev->pClassData != NULL) {
{
USBD_free(pdev->pClassData); USBD_free(pdev->pClassData);
pdev->pClassData = NULL; pdev->pClassData = NULL;
} }
@ -334,75 +331,70 @@ static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
* @param req: usb requests * @param req: usb requests
* @retval status * @retval status
*/ */
static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_Setup(USBD_HandleTypeDef *pdev,
USBD_SetupReqTypedef *req) USBD_SetupReqTypedef *req)
{ {
uint16_t len = 0; uint16_t len = 0;
uint8_t *pbuf = NULL; uint8_t *pbuf = NULL;
USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*) pdev->pClassData; USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef *) pdev->pClassData;
switch (req->bmRequest & USB_REQ_TYPE_MASK) switch (req->bmRequest & USB_REQ_TYPE_MASK) {
{
case USB_REQ_TYPE_CLASS : case USB_REQ_TYPE_CLASS :
switch (req->bRequest) switch (req->bRequest) {
{
case HID_REQ_SET_PROTOCOL: case HID_REQ_SET_PROTOCOL:
hhid->Protocol = (uint8_t)(req->wValue); hhid->Protocol = (uint8_t) (req->wValue);
break; break;
case HID_REQ_GET_PROTOCOL: case HID_REQ_GET_PROTOCOL:
USBD_CtlSendData (pdev, USBD_CtlSendData(pdev,
(uint8_t *)&hhid->Protocol, (uint8_t *) &hhid->Protocol,
1); 1);
break; break;
case HID_REQ_SET_IDLE: case HID_REQ_SET_IDLE:
hhid->IdleState = (uint8_t)(req->wValue >> 8); hhid->IdleState = (uint8_t) (req->wValue >> 8);
break; break;
case HID_REQ_GET_IDLE: case HID_REQ_GET_IDLE:
USBD_CtlSendData (pdev, USBD_CtlSendData(pdev,
(uint8_t *)&hhid->IdleState, (uint8_t *) &hhid->IdleState,
1); 1);
break; break;
default: default:
USBD_CtlError (pdev, req); USBD_CtlError(pdev, req);
return USBD_FAIL; return USBD_FAIL;
} }
break; break;
case USB_REQ_TYPE_STANDARD: case USB_REQ_TYPE_STANDARD:
switch (req->bRequest) switch (req->bRequest) {
{
case USB_REQ_GET_DESCRIPTOR: case USB_REQ_GET_DESCRIPTOR:
if( req->wValue >> 8 == HID_REPORT_DESC) if (req->wValue >> 8 == HID_REPORT_DESC) {
{ len = MIN(HID_MOUSE_REPORT_DESC_SIZE, req->wLength);
len = MIN(HID_MOUSE_REPORT_DESC_SIZE , req->wLength);
pbuf = HID_MOUSE_ReportDesc; pbuf = HID_MOUSE_ReportDesc;
} }
else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE) else if (req->wValue >> 8 == HID_DESCRIPTOR_TYPE) {
{
pbuf = USBD_HID_Desc; pbuf = USBD_HID_Desc;
len = MIN(USB_HID_DESC_SIZ , req->wLength); len = MIN(USB_HID_DESC_SIZ, req->wLength);
} }
USBD_CtlSendData (pdev, USBD_CtlSendData(pdev,
pbuf, pbuf,
len); len);
break; break;
case USB_REQ_GET_INTERFACE : case USB_REQ_GET_INTERFACE :
USBD_CtlSendData (pdev, USBD_CtlSendData(pdev,
(uint8_t *)&hhid->AltSetting, (uint8_t *) &hhid->AltSetting,
1); 1);
break; break;
case USB_REQ_SET_INTERFACE : case USB_REQ_SET_INTERFACE :
hhid->AltSetting = (uint8_t)(req->wValue); hhid->AltSetting = (uint8_t) (req->wValue);
break; break;
} }
} }
@ -416,18 +408,16 @@ static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev,
* @param buff: pointer to report * @param buff: pointer to report
* @retval status * @retval status
*/ */
uint8_t USBD_HID_SendReport (USBD_HandleTypeDef *pdev, uint8_t USBD_HID_SendReport(USBD_HandleTypeDef *pdev,
uint8_t *report, uint8_t *report,
uint16_t len) uint16_t len)
{ {
USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*)pdev->pClassData; USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef *) pdev->pClassData;
if (pdev->dev_state == USBD_STATE_CONFIGURED ) if (pdev->dev_state == USBD_STATE_CONFIGURED) {
{ if (hhid->state == HID_IDLE) {
if(hhid->state == HID_IDLE)
{
hhid->state = HID_BUSY; hhid->state = HID_BUSY;
USBD_LL_Transmit (pdev, USBD_LL_Transmit(pdev,
HID_EPIN_ADDR, HID_EPIN_ADDR,
report, report,
len); len);
@ -442,17 +432,16 @@ uint8_t USBD_HID_SendReport (USBD_HandleTypeDef *pdev,
* @param pdev: device instance * @param pdev: device instance
* @retval polling interval * @retval polling interval
*/ */
uint32_t USBD_HID_GetPollingInterval (USBD_HandleTypeDef *pdev) uint32_t USBD_HID_GetPollingInterval(USBD_HandleTypeDef *pdev)
{ {
uint32_t polling_interval = 0; uint32_t polling_interval = 0;
/* HIGH-speed endpoints */ /* HIGH-speed endpoints */
if(pdev->dev_speed == USBD_SPEED_HIGH) if (pdev->dev_speed == USBD_SPEED_HIGH) {
{
/* Sets the data transfer polling interval for high speed transfers. /* Sets the data transfer polling interval for high speed transfers.
Values between 1..16 are allowed. Values correspond to interval Values between 1..16 are allowed. Values correspond to interval
of 2 ^ (bInterval-1). This option (8 ms, corresponds to HID_HS_BINTERVAL */ of 2 ^ (bInterval-1). This option (8 ms, corresponds to HID_HS_BINTERVAL */
polling_interval = (((1 <<(HID_HS_BINTERVAL - 1)))/8); polling_interval = (((1 << (HID_HS_BINTERVAL - 1))) / 8);
} }
else /* LOW and FULL-speed endpoints */ else /* LOW and FULL-speed endpoints */
{ {
@ -461,7 +450,7 @@ uint32_t USBD_HID_GetPollingInterval (USBD_HandleTypeDef *pdev)
polling_interval = HID_FS_BINTERVAL; polling_interval = HID_FS_BINTERVAL;
} }
return ((uint32_t)(polling_interval)); return ((uint32_t) (polling_interval));
} }
/** /**
@ -471,9 +460,9 @@ uint32_t USBD_HID_GetPollingInterval (USBD_HandleTypeDef *pdev)
* @param length : pointer data length * @param length : pointer data length
* @retval pointer to descriptor buffer * @retval pointer to descriptor buffer
*/ */
static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length) static uint8_t *USBD_HID_GetCfgDesc(uint16_t *length)
{ {
*length = sizeof (USBD_HID_CfgDesc); *length = sizeof(USBD_HID_CfgDesc);
return USBD_HID_CfgDesc; return USBD_HID_CfgDesc;
} }
@ -485,13 +474,14 @@ static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length)
* @param epnum: endpoint index * @param epnum: endpoint index
* @retval status * @retval status
*/ */
static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev, static uint8_t USBD_HID_DataIn(USBD_HandleTypeDef *pdev,
uint8_t epnum) uint8_t epnum)
{ {
/* Ensure that the FIFO is empty before a new transfer, this condition could /* Ensure that the FIFO is empty before a new transfer, this condition could
be caused by a new transfer before the end of the previous transfer */ be caused by a new transfer before the end of the previous transfer */
((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE; ((USBD_HID_HandleTypeDef *) pdev->pClassData)->state = HID_IDLE;
return USBD_OK; return USBD_OK;
} }
@ -502,9 +492,9 @@ static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev,
* @param length : pointer data length * @param length : pointer data length
* @retval pointer to descriptor buffer * @retval pointer to descriptor buffer
*/ */
static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length) static uint8_t *USBD_HID_GetDeviceQualifierDesc(uint16_t *length)
{ {
*length = sizeof (USBD_HID_DeviceQualifierDesc); *length = sizeof(USBD_HID_DeviceQualifierDesc);
return USBD_HID_DeviceQualifierDesc; return USBD_HID_DeviceQualifierDesc;
} }

@ -1,167 +0,0 @@
/**
******************************************************************************
* @file usbd_core.h
* @author MCD Application Team
* @version V2.4.2
* @date 11-December-2015
* @brief Header file for usbd_core.c file
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2>
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USBD_CORE_H
#define __USBD_CORE_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "usbd_conf.h"
#include "usbd_def.h"
#include "usbd_ioreq.h"
#include "usbd_ctlreq.h"
/** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{
*/
/** @defgroup USBD_CORE
* @brief This file is the Header file for usbd_core.c file
* @{
*/
/** @defgroup USBD_CORE_Exported_Defines
* @{
*/
/**
* @}
*/
/** @defgroup USBD_CORE_Exported_TypesDefinitions
* @{
*/
/**
* @}
*/
/** @defgroup USBD_CORE_Exported_Macros
* @{
*/
/**
* @}
*/
/** @defgroup USBD_CORE_Exported_Variables
* @{
*/
#define USBD_SOF USBD_LL_SOF
/**
* @}
*/
/** @defgroup USBD_CORE_Exported_FunctionsPrototype
* @{
*/
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
/* USBD Low Level Driver */
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev,
uint8_t ep_addr,
uint8_t ep_type,
uint16_t ep_mps);
USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr);
USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev,
uint8_t ep_addr,
uint8_t *pbuf,
uint16_t size);
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
uint8_t ep_addr,
uint8_t *pbuf,
uint16_t size);
uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
void USBD_LL_Delay (uint32_t Delay);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __USBD_CORE_H */
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

@ -58,9 +58,9 @@
*/ */
#define USBD_VID 1155 #define USBD_VID 1155
#define USBD_LANGID_STRING 1033 #define USBD_LANGID_STRING 1033
#define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_MANUFACTURER_STRING "MightyPork"
#define USBD_PID_FS 22315 #define USBD_PID_FS 22315
#define USBD_PRODUCT_STRING_FS "STM32 Human interface" #define USBD_PRODUCT_STRING_FS "Screen Rotation Sensor"
#define USBD_SERIALNUMBER_STRING_FS "00000000001A" #define USBD_SERIALNUMBER_STRING_FS "00000000001A"
#define USBD_CONFIGURATION_STRING_FS "HID Config" #define USBD_CONFIGURATION_STRING_FS "HID Config"
#define USBD_INTERFACE_STRING_FS "HID Interface" #define USBD_INTERFACE_STRING_FS "HID Interface"

Loading…
Cancel
Save