summaryrefslogtreecommitdiff
path: root/hid-dials/build/usbd_hid.lst
diff options
context:
space:
mode:
Diffstat (limited to 'hid-dials/build/usbd_hid.lst')
-rw-r--r--hid-dials/build/usbd_hid.lst1578
1 files changed, 1578 insertions, 0 deletions
diff --git a/hid-dials/build/usbd_hid.lst b/hid-dials/build/usbd_hid.lst
new file mode 100644
index 0000000..fe51ad7
--- /dev/null
+++ b/hid-dials/build/usbd_hid.lst
@@ -0,0 +1,1578 @@
+ARM GAS /tmp/ccE5JjBw.s page 1
+
+
+ 1 .cpu cortex-m0
+ 2 .eabi_attribute 20, 1
+ 3 .eabi_attribute 21, 1
+ 4 .eabi_attribute 23, 3
+ 5 .eabi_attribute 24, 1
+ 6 .eabi_attribute 25, 1
+ 7 .eabi_attribute 26, 1
+ 8 .eabi_attribute 30, 1
+ 9 .eabi_attribute 34, 0
+ 10 .eabi_attribute 18, 4
+ 11 .file "usbd_hid.c"
+ 12 .text
+ 13 .Ltext0:
+ 14 .cfi_sections .debug_frame
+ 15 .section .text.USBD_HID_GetCfgDesc,"ax",%progbits
+ 16 .align 1
+ 17 .syntax unified
+ 18 .code 16
+ 19 .thumb_func
+ 20 .fpu softvfp
+ 22 USBD_HID_GetCfgDesc:
+ 23 .LFB48:
+ 24 .file 1 "Src/usbd_hid.c"
+ 1:Src/usbd_hid.c **** /**
+ 2:Src/usbd_hid.c **** ******************************************************************************
+ 3:Src/usbd_hid.c **** * @file usbd_hid.c
+ 4:Src/usbd_hid.c **** * @author MCD Application Team
+ 5:Src/usbd_hid.c **** * @version V2.4.2
+ 6:Src/usbd_hid.c **** * @date 11-December-2015
+ 7:Src/usbd_hid.c **** * @brief This file provides the HID core functions.
+ 8:Src/usbd_hid.c **** *
+ 9:Src/usbd_hid.c **** * @verbatim
+ 10:Src/usbd_hid.c **** *
+ 11:Src/usbd_hid.c **** * ===================================================================
+ 12:Src/usbd_hid.c **** * HID Class Description
+ 13:Src/usbd_hid.c **** * ===================================================================
+ 14:Src/usbd_hid.c **** * This module manages the HID class V1.11 following the "Device Class Definition
+ 15:Src/usbd_hid.c **** * for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
+ 16:Src/usbd_hid.c **** * This driver implements the following aspects of the specification:
+ 17:Src/usbd_hid.c **** * - The Boot Interface Subclass
+ 18:Src/usbd_hid.c **** * - The Mouse protocol
+ 19:Src/usbd_hid.c **** * - Usage Page : Generic Desktop
+ 20:Src/usbd_hid.c **** * - Usage : Joystick
+ 21:Src/usbd_hid.c **** * - Collection : Application
+ 22:Src/usbd_hid.c **** *
+ 23:Src/usbd_hid.c **** * @note In HS mode and when the DMA is used, all variables and data structures
+ 24:Src/usbd_hid.c **** * dealing with the DMA during the transaction process should be 32-bit aligned.
+ 25:Src/usbd_hid.c **** *
+ 26:Src/usbd_hid.c **** *
+ 27:Src/usbd_hid.c **** * @endverbatim
+ 28:Src/usbd_hid.c **** *
+ 29:Src/usbd_hid.c **** ******************************************************************************
+ 30:Src/usbd_hid.c **** * @attention
+ 31:Src/usbd_hid.c **** *
+ 32:Src/usbd_hid.c **** * <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2>
+ 33:Src/usbd_hid.c **** *
+ 34:Src/usbd_hid.c **** * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
+ ARM GAS /tmp/ccE5JjBw.s page 2
+
+
+ 35:Src/usbd_hid.c **** * You may not use this file except in compliance with the License.
+ 36:Src/usbd_hid.c **** * You may obtain a copy of the License at:
+ 37:Src/usbd_hid.c **** *
+ 38:Src/usbd_hid.c **** * http://www.st.com/software_license_agreement_liberty_v2
+ 39:Src/usbd_hid.c **** *
+ 40:Src/usbd_hid.c **** * Unless required by applicable law or agreed to in writing, software
+ 41:Src/usbd_hid.c **** * distributed under the License is distributed on an "AS IS" BASIS,
+ 42:Src/usbd_hid.c **** * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ 43:Src/usbd_hid.c **** * See the License for the specific language governing permissions and
+ 44:Src/usbd_hid.c **** * limitations under the License.
+ 45:Src/usbd_hid.c **** *
+ 46:Src/usbd_hid.c **** ******************************************************************************
+ 47:Src/usbd_hid.c **** */
+ 48:Src/usbd_hid.c ****
+ 49:Src/usbd_hid.c **** /* Includes ------------------------------------------------------------------*/
+ 50:Src/usbd_hid.c **** #include "usbd_hid.h"
+ 51:Src/usbd_hid.c **** #include "usbd_desc.h"
+ 52:Src/usbd_hid.c **** #include "usbd_ctlreq.h"
+ 53:Src/usbd_hid.c ****
+ 54:Src/usbd_hid.c ****
+ 55:Src/usbd_hid.c **** /** @addtogroup STM32_USB_DEVICE_LIBRARY
+ 56:Src/usbd_hid.c **** * @{
+ 57:Src/usbd_hid.c **** */
+ 58:Src/usbd_hid.c ****
+ 59:Src/usbd_hid.c ****
+ 60:Src/usbd_hid.c **** /** @defgroup USBD_HID
+ 61:Src/usbd_hid.c **** * @brief usbd core module
+ 62:Src/usbd_hid.c **** * @{
+ 63:Src/usbd_hid.c **** */
+ 64:Src/usbd_hid.c ****
+ 65:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_TypesDefinitions
+ 66:Src/usbd_hid.c **** * @{
+ 67:Src/usbd_hid.c **** */
+ 68:Src/usbd_hid.c **** /**
+ 69:Src/usbd_hid.c **** * @}
+ 70:Src/usbd_hid.c **** */
+ 71:Src/usbd_hid.c ****
+ 72:Src/usbd_hid.c ****
+ 73:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_Defines
+ 74:Src/usbd_hid.c **** * @{
+ 75:Src/usbd_hid.c **** */
+ 76:Src/usbd_hid.c ****
+ 77:Src/usbd_hid.c **** /**
+ 78:Src/usbd_hid.c **** * @}
+ 79:Src/usbd_hid.c **** */
+ 80:Src/usbd_hid.c ****
+ 81:Src/usbd_hid.c ****
+ 82:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_Macros
+ 83:Src/usbd_hid.c **** * @{
+ 84:Src/usbd_hid.c **** */
+ 85:Src/usbd_hid.c **** /**
+ 86:Src/usbd_hid.c **** * @}
+ 87:Src/usbd_hid.c **** */
+ 88:Src/usbd_hid.c ****
+ 89:Src/usbd_hid.c ****
+ 90:Src/usbd_hid.c ****
+ 91:Src/usbd_hid.c ****
+ ARM GAS /tmp/ccE5JjBw.s page 3
+
+
+ 92:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_FunctionPrototypes
+ 93:Src/usbd_hid.c **** * @{
+ 94:Src/usbd_hid.c **** */
+ 95:Src/usbd_hid.c ****
+ 96:Src/usbd_hid.c ****
+ 97:Src/usbd_hid.c **** static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
+ 98:Src/usbd_hid.c **** uint8_t cfgidx);
+ 99:Src/usbd_hid.c ****
+ 100:Src/usbd_hid.c **** static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
+ 101:Src/usbd_hid.c **** uint8_t cfgidx);
+ 102:Src/usbd_hid.c ****
+ 103:Src/usbd_hid.c **** static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev,
+ 104:Src/usbd_hid.c **** USBD_SetupReqTypedef *req);
+ 105:Src/usbd_hid.c ****
+ 106:Src/usbd_hid.c **** static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length);
+ 107:Src/usbd_hid.c ****
+ 108:Src/usbd_hid.c **** static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length);
+ 109:Src/usbd_hid.c ****
+ 110:Src/usbd_hid.c **** static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
+ 111:Src/usbd_hid.c ****
+ 112:Src/usbd_hid.c ****
+ 113:Src/usbd_hid.c **** static uint8_t USBD_HID_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum);
+ 114:Src/usbd_hid.c **** /**
+ 115:Src/usbd_hid.c **** * @}
+ 116:Src/usbd_hid.c **** */
+ 117:Src/usbd_hid.c ****
+ 118:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_Variables
+ 119:Src/usbd_hid.c **** * @{
+ 120:Src/usbd_hid.c **** */
+ 121:Src/usbd_hid.c ****
+ 122:Src/usbd_hid.c **** USBD_ClassTypeDef USBD_HID =
+ 123:Src/usbd_hid.c **** {
+ 124:Src/usbd_hid.c **** USBD_HID_Init,
+ 125:Src/usbd_hid.c **** USBD_HID_DeInit,
+ 126:Src/usbd_hid.c **** USBD_HID_Setup,
+ 127:Src/usbd_hid.c **** NULL, /*EP0_TxSent*/
+ 128:Src/usbd_hid.c **** NULL, /*EP0_RxReady*/
+ 129:Src/usbd_hid.c **** USBD_HID_DataIn, /*DataIn*/
+ 130:Src/usbd_hid.c **** USBD_HID_DataOut, /*DataOut*/
+ 131:Src/usbd_hid.c **** NULL, /*SOF */
+ 132:Src/usbd_hid.c **** NULL,
+ 133:Src/usbd_hid.c **** NULL,
+ 134:Src/usbd_hid.c **** USBD_HID_GetCfgDesc,
+ 135:Src/usbd_hid.c **** USBD_HID_GetCfgDesc,
+ 136:Src/usbd_hid.c **** USBD_HID_GetCfgDesc,
+ 137:Src/usbd_hid.c **** USBD_HID_GetDeviceQualifierDesc,
+ 138:Src/usbd_hid.c **** };
+ 139:Src/usbd_hid.c ****
+ 140:Src/usbd_hid.c **** /* USB HID device Configuration Descriptor */
+ 141:Src/usbd_hid.c **** __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END =
+ 142:Src/usbd_hid.c **** {
+ 143:Src/usbd_hid.c **** 0x09, /* bLength: Configuration Descriptor size */
+ 144:Src/usbd_hid.c **** USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
+ 145:Src/usbd_hid.c **** USB_HID_CONFIG_DESC_SIZ,
+ 146:Src/usbd_hid.c **** /* wTotalLength: Bytes returned */
+ 147:Src/usbd_hid.c **** 0x00,
+ 148:Src/usbd_hid.c **** 0x01, /*bNumInterfaces: 1 interface*/
+ ARM GAS /tmp/ccE5JjBw.s page 4
+
+
+ 149:Src/usbd_hid.c **** 0x01, /*bConfigurationValue: Configuration value*/
+ 150:Src/usbd_hid.c **** 0x00, /*iConfiguration: Index of string descriptor describing
+ 151:Src/usbd_hid.c **** the configuration*/
+ 152:Src/usbd_hid.c **** 0xE0, /*bmAttributes: bus powered and Support Remote Wake-up */
+ 153:Src/usbd_hid.c **** 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
+ 154:Src/usbd_hid.c ****
+ 155:Src/usbd_hid.c **** /************** Descriptor of Joystick Mouse interface ****************/
+ 156:Src/usbd_hid.c **** /* 09 */
+ 157:Src/usbd_hid.c **** 0x09, /*bLength: Interface Descriptor size*/
+ 158:Src/usbd_hid.c **** USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/
+ 159:Src/usbd_hid.c **** 0x00, /*bInterfaceNumber: Number of Interface*/
+ 160:Src/usbd_hid.c **** 0x00, /*bAlternateSetting: Alternate setting*/
+ 161:Src/usbd_hid.c **** HID_NUM_EP,
+ 162:Src/usbd_hid.c ****
+ 163:Src/usbd_hid.c **** 0x03, /*bInterfaceClass: HID*/
+ 164:Src/usbd_hid.c ****
+ 165:Src/usbd_hid.c **** 0x01, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
+ 166:Src/usbd_hid.c **** 0x01, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
+ 167:Src/usbd_hid.c **** 0, /*iInterface: Index of string descriptor*/
+ 168:Src/usbd_hid.c **** /******************** Descriptor of Joystick Mouse HID ********************/
+ 169:Src/usbd_hid.c **** /* 18 */
+ 170:Src/usbd_hid.c **** 0x09, /*bLength: HID Descriptor size*/
+ 171:Src/usbd_hid.c **** HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
+ 172:Src/usbd_hid.c **** 0x11, /*bcdHID: HID Class Spec release number*/
+ 173:Src/usbd_hid.c **** 0x01,
+ 174:Src/usbd_hid.c **** 0x00, /*bCountryCode: Hardware target country*/
+ 175:Src/usbd_hid.c **** 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/
+ 176:Src/usbd_hid.c **** 0x22, /*bDescriptorType*/
+ 177:Src/usbd_hid.c **** HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
+ 178:Src/usbd_hid.c **** 0x00,
+ 179:Src/usbd_hid.c **** /******************** Descriptor of Mouse endpoint ********************/
+ 180:Src/usbd_hid.c **** /* 27 */
+ 181:Src/usbd_hid.c **** 0x07, /*bLength: Endpoint Descriptor size*/
+ 182:Src/usbd_hid.c **** USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
+ 183:Src/usbd_hid.c ****
+ 184:Src/usbd_hid.c **** HID_EPIN_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/
+ 185:Src/usbd_hid.c **** 0x03, /*bmAttributes: Interrupt endpoint*/
+ 186:Src/usbd_hid.c **** HID_EPIN_SIZE, /*wMaxPacketSize: 4 Byte max */
+ 187:Src/usbd_hid.c **** 0x00,
+ 188:Src/usbd_hid.c **** HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/
+ 189:Src/usbd_hid.c **** /* 34 */
+ 190:Src/usbd_hid.c **** #if HID_LED_SUPPORT
+ 191:Src/usbd_hid.c **** 0x07, /*bLength: Endpoint Descriptor size*/
+ 192:Src/usbd_hid.c **** USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
+ 193:Src/usbd_hid.c ****
+ 194:Src/usbd_hid.c **** HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/
+ 195:Src/usbd_hid.c **** 0x03, /*bmAttributes: Interrupt endpoint*/
+ 196:Src/usbd_hid.c **** HID_EPOUT_SIZE, /*wMaxPacketSize: 4 Byte max */
+ 197:Src/usbd_hid.c **** 0x00,
+ 198:Src/usbd_hid.c **** HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/
+ 199:Src/usbd_hid.c **** #endif
+ 200:Src/usbd_hid.c **** /* 41 */
+ 201:Src/usbd_hid.c ****
+ 202:Src/usbd_hid.c **** } ;
+ 203:Src/usbd_hid.c ****
+ 204:Src/usbd_hid.c **** /* USB HID device Configuration Descriptor */
+ 205:Src/usbd_hid.c **** __ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END =
+ ARM GAS /tmp/ccE5JjBw.s page 5
+
+
+ 206:Src/usbd_hid.c **** {
+ 207:Src/usbd_hid.c **** /* 18 */
+ 208:Src/usbd_hid.c **** 0x09, /*bLength: HID Descriptor size*/
+ 209:Src/usbd_hid.c **** HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
+ 210:Src/usbd_hid.c **** 0x11, /*bcdHID: HID Class Spec release number*/
+ 211:Src/usbd_hid.c **** 0x01,
+ 212:Src/usbd_hid.c **** 0x00, /*bCountryCode: Hardware target country*/
+ 213:Src/usbd_hid.c **** 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/
+ 214:Src/usbd_hid.c **** 0x22, /*bDescriptorType*/
+ 215:Src/usbd_hid.c **** HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
+ 216:Src/usbd_hid.c **** 0x00,
+ 217:Src/usbd_hid.c **** };
+ 218:Src/usbd_hid.c ****
+ 219:Src/usbd_hid.c **** /* USB Standard Device Descriptor */
+ 220:Src/usbd_hid.c **** __ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END
+ 221:Src/usbd_hid.c **** {
+ 222:Src/usbd_hid.c **** USB_LEN_DEV_QUALIFIER_DESC,
+ 223:Src/usbd_hid.c **** USB_DESC_TYPE_DEVICE_QUALIFIER,
+ 224:Src/usbd_hid.c **** 0x00,
+ 225:Src/usbd_hid.c **** 0x02,
+ 226:Src/usbd_hid.c **** 0x00,
+ 227:Src/usbd_hid.c **** 0x00,
+ 228:Src/usbd_hid.c **** 0x00,
+ 229:Src/usbd_hid.c **** 0x40,
+ 230:Src/usbd_hid.c **** 0x01,
+ 231:Src/usbd_hid.c **** 0x00,
+ 232:Src/usbd_hid.c **** };
+ 233:Src/usbd_hid.c ****
+ 234:Src/usbd_hid.c **** __ALIGN_BEGIN static uint8_t HID_ReportDesc[HID_REPORT_DESC_SIZE] __ALIGN_END =
+ 235:Src/usbd_hid.c **** {
+ 236:Src/usbd_hid.c **** //copy from arduino code https://github.com/arduino-libraries/Keyboard/blob/master/src/Keyb
+ 237:Src/usbd_hid.c ****
+ 238:Src/usbd_hid.c **** 0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
+ 239:Src/usbd_hid.c **** 0x09, 0x06, // Usage (Keyboard)
+ 240:Src/usbd_hid.c **** 0xA1, 0x01, // Collection (Application)
+ 241:Src/usbd_hid.c ****
+ 242:Src/usbd_hid.c **** 0x85, 0x01, // Report ID (1)
+ 243:Src/usbd_hid.c ****
+ 244:Src/usbd_hid.c **** 0x05, 0x07, // Usage Page (Kbrd/Keypad)
+ 245:Src/usbd_hid.c **** 0x19, 0xE0, // Usage Minimum (0xE0)
+ 246:Src/usbd_hid.c **** 0x29, 0xE7, // Usage Maximum (0xE7)
+ 247:Src/usbd_hid.c ****
+ 248:Src/usbd_hid.c **** // it seam we missed the shit ctrl etc .. here
+ 249:Src/usbd_hid.c **** 0x15, 0x00, // Logical Minimum (0)
+ 250:Src/usbd_hid.c **** 0x25, 0x01, // Logical Maximum (1)
+ 251:Src/usbd_hid.c **** 0x75, 0x01, // Report Size (1)
+ 252:Src/usbd_hid.c **** 0x95, 0x08, // Report Count (8)
+ 253:Src/usbd_hid.c **** 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position
+ 254:Src/usbd_hid.c **** 0x95, 0x01, // Report Count (1)
+ 255:Src/usbd_hid.c **** 0x75, 0x08, // Report Size (8)
+ 256:Src/usbd_hid.c **** 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Positio
+ 257:Src/usbd_hid.c **** #if HID_LED_SUPPORT
+ 258:Src/usbd_hid.c **** // --------------------- output report for LED
+ 259:Src/usbd_hid.c **** 0x95, 0x05, // REPORT_COUNT (5)
+ 260:Src/usbd_hid.c **** 0x75, 0x01, // REPORT_SIZE (1)
+ 261:Src/usbd_hid.c **** 0x05, 0x08, // USAGE_PAGE (LEDs)
+ 262:Src/usbd_hid.c **** 0x19, 0x01, // USAGE_MINIMUM (Num Lock)
+ ARM GAS /tmp/ccE5JjBw.s page 6
+
+
+ 263:Src/usbd_hid.c **** 0x29, 0x05, // USAGE_MAXIMUM (Kana)
+ 264:Src/usbd_hid.c **** 0x91, 0x02, // OUTPUT (Data,Var,Abs)
+ 265:Src/usbd_hid.c **** 0x95, 0x01, // REPORT_COUNT (1)
+ 266:Src/usbd_hid.c **** 0x75, 0x03, // REPORT_SIZE (3)
+ 267:Src/usbd_hid.c **** 0x91, 0x03, // OUTPUT (Cnst,Var,Abs)
+ 268:Src/usbd_hid.c **** #endif
+ 269:Src/usbd_hid.c **** 0x95, 0x06, // Report Count (6)
+ 270:Src/usbd_hid.c **** 0x75, 0x08, // Report Size (8)
+ 271:Src/usbd_hid.c **** 0x15, 0x00, // Logical Minimum (0)
+ 272:Src/usbd_hid.c **** 0x25, 0x65, // Logical Maximum (101)
+ 273:Src/usbd_hid.c **** 0x05, 0x07, // Usage Page (Kbrd/Keypad)
+ 274:Src/usbd_hid.c **** 0x19, 0x00, // Usage Minimum (0x00)
+ 275:Src/usbd_hid.c **** 0x29, 0x65, // Usage Maximum (0x65)
+ 276:Src/usbd_hid.c **** 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Positi
+ 277:Src/usbd_hid.c **** 0xC0, // End Collection
+ 278:Src/usbd_hid.c ****
+ 279:Src/usbd_hid.c **** // 47 bytes
+ 280:Src/usbd_hid.c **** #if HID_MEDIA_REPORT
+ 281:Src/usbd_hid.c **** //help from http://www.microchip.com/forums/m618147.aspx
+ 282:Src/usbd_hid.c **** // this way of describing and sending media control is convenient
+ 283:Src/usbd_hid.c **** // short descriptor that permit all kidn meda by sending "usage" code
+ 284:Src/usbd_hid.c **** // see usb hid spec for full list
+ 285:Src/usbd_hid.c **** // it is possible to define one media key per bit it requires more space
+ 286:Src/usbd_hid.c **** // for descripotor and report ending is tighlyu couple to decriptor
+ 287:Src/usbd_hid.c **** // so it is not as convenient
+ 288:Src/usbd_hid.c **** // one such working code can be find here https://github.com/markwj/hidmedia/blob/master/hi
+ 289:Src/usbd_hid.c **** //
+ 290:Src/usbd_hid.c ****
+ 291:Src/usbd_hid.c **** 0x05, 0x0C, // Usage Page (Consumer)
+ 292:Src/usbd_hid.c **** 0x09, 0x01, // Usage (Consumer Control)
+ 293:Src/usbd_hid.c **** 0xA1, 0x01, // Collection (Application)
+ 294:Src/usbd_hid.c **** 0x85, HID_MEDIA_REPORT, // Report ID (VOLUME_REPORT )
+ 295:Src/usbd_hid.c **** 0x19, 0x00, // Usage Minimum (Unassigned)
+ 296:Src/usbd_hid.c **** 0x2A, 0x3C, 0x02, // Usage Maximum (AC Format)
+ 297:Src/usbd_hid.c **** 0x15, 0x00, // Logical Minimum (0)
+ 298:Src/usbd_hid.c **** 0x26, 0x3C, 0x02, // Logical Maximum (572)
+ 299:Src/usbd_hid.c **** 0x95, 0x01, // Report Count (1)
+ 300:Src/usbd_hid.c **** 0x75, 0x10, // Report Size (16)
+ 301:Src/usbd_hid.c **** 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Positi
+ 302:Src/usbd_hid.c **** 0xC0, // End Collection
+ 303:Src/usbd_hid.c ****
+ 304:Src/usbd_hid.c **** // how to format the 3 byte report
+ 305:Src/usbd_hid.c **** // byte 0 report ID = 0x02 (VOLUME_REPORT)
+ 306:Src/usbd_hid.c **** // byte 1 media code for ex VOL_UP 0xE9 , VOL_DONW 0xEA ... etc
+ 307:Src/usbd_hid.c **** // byte 2 0x00
+ 308:Src/usbd_hid.c **** // a second report with 0 code shal be send to avoid "key repaeat"
+ 309:Src/usbd_hid.c ****
+ 310:Src/usbd_hid.c **** // 25 bytes
+ 311:Src/usbd_hid.c **** #endif
+ 312:Src/usbd_hid.c **** };
+ 313:Src/usbd_hid.c ****
+ 314:Src/usbd_hid.c **** uint32_t nOutData;
+ 315:Src/usbd_hid.c **** uint8_t OutDataBuffer[HID_EPOUT_SIZE]; // local copy for user (usb fly at same time)
+ 316:Src/usbd_hid.c **** uint8_t OutData[HID_EPOUT_SIZE]; // live usb buffer
+ 317:Src/usbd_hid.c ****
+ 318:Src/usbd_hid.c **** #ifdef DEBUG
+ 319:Src/usbd_hid.c ****
+ ARM GAS /tmp/ccE5JjBw.s page 7
+
+
+ 320:Src/usbd_hid.c **** uint8_t OutDataLog[8*HID_EPOUT_SIZE];
+ 321:Src/usbd_hid.c **** #endif
+ 322:Src/usbd_hid.c **** /**
+ 323:Src/usbd_hid.c **** * @}
+ 324:Src/usbd_hid.c **** */
+ 325:Src/usbd_hid.c ****
+ 326:Src/usbd_hid.c **** /** @defgroup USBD_HID_Private_Functions
+ 327:Src/usbd_hid.c **** * @{
+ 328:Src/usbd_hid.c **** */
+ 329:Src/usbd_hid.c ****
+ 330:Src/usbd_hid.c **** /**
+ 331:Src/usbd_hid.c **** * @brief USBD_HID_Init
+ 332:Src/usbd_hid.c **** * Initialize the HID interface
+ 333:Src/usbd_hid.c **** * @param pdev: device instance
+ 334:Src/usbd_hid.c **** * @param cfgidx: Configuration index
+ 335:Src/usbd_hid.c **** * @retval status
+ 336:Src/usbd_hid.c **** */
+ 337:Src/usbd_hid.c **** static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
+ 338:Src/usbd_hid.c **** uint8_t cfgidx)
+ 339:Src/usbd_hid.c **** {
+ 340:Src/usbd_hid.c **** uint8_t ret = 0;
+ 341:Src/usbd_hid.c ****
+ 342:Src/usbd_hid.c **** /* Open EP IN */
+ 343:Src/usbd_hid.c **** USBD_LL_OpenEP(pdev,
+ 344:Src/usbd_hid.c **** HID_EPIN_ADDR,
+ 345:Src/usbd_hid.c **** USBD_EP_TYPE_INTR,
+ 346:Src/usbd_hid.c **** HID_EPIN_SIZE);
+ 347:Src/usbd_hid.c **** #if HID_LED_SUPPORT
+ 348:Src/usbd_hid.c **** USBD_LL_OpenEP(pdev,
+ 349:Src/usbd_hid.c **** HID_EPOUT_ADDR,
+ 350:Src/usbd_hid.c **** USBD_EP_TYPE_INTR,
+ 351:Src/usbd_hid.c **** HID_EPOUT_SIZE);
+ 352:Src/usbd_hid.c **** #endif
+ 353:Src/usbd_hid.c ****
+ 354:Src/usbd_hid.c **** pdev->pClassData = USBD_malloc(sizeof (USBD_HID_HandleTypeDef));
+ 355:Src/usbd_hid.c ****
+ 356:Src/usbd_hid.c **** if(pdev->pClassData == NULL)
+ 357:Src/usbd_hid.c **** {
+ 358:Src/usbd_hid.c **** ret = 1;
+ 359:Src/usbd_hid.c **** }
+ 360:Src/usbd_hid.c **** else
+ 361:Src/usbd_hid.c **** {
+ 362:Src/usbd_hid.c **** #if HID_LED_SUPPORT
+ 363:Src/usbd_hid.c **** USBD_LL_PrepareReceive(pdev, HID_EPOUT_ADDR, OutData, HID_EPOUT_SIZE);
+ 364:Src/usbd_hid.c **** #endif
+ 365:Src/usbd_hid.c **** ((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE;
+ 366:Src/usbd_hid.c ****
+ 367:Src/usbd_hid.c **** }
+ 368:Src/usbd_hid.c **** return ret;
+ 369:Src/usbd_hid.c **** }
+ 370:Src/usbd_hid.c ****
+ 371:Src/usbd_hid.c **** /**
+ 372:Src/usbd_hid.c **** * @brief USBD_HID_Init
+ 373:Src/usbd_hid.c **** * DeInitialize the HID layer
+ 374:Src/usbd_hid.c **** * @param pdev: device instance
+ 375:Src/usbd_hid.c **** * @param cfgidx: Configuration index
+ 376:Src/usbd_hid.c **** * @retval status
+ ARM GAS /tmp/ccE5JjBw.s page 8
+
+
+ 377:Src/usbd_hid.c **** */
+ 378:Src/usbd_hid.c **** static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
+ 379:Src/usbd_hid.c **** uint8_t cfgidx)
+ 380:Src/usbd_hid.c **** {
+ 381:Src/usbd_hid.c **** /* Close HID EPs */
+ 382:Src/usbd_hid.c **** USBD_LL_CloseEP(pdev,
+ 383:Src/usbd_hid.c **** HID_EPIN_ADDR);
+ 384:Src/usbd_hid.c ****
+ 385:Src/usbd_hid.c **** USBD_LL_CloseEP(pdev,
+ 386:Src/usbd_hid.c **** HID_EPOUT_ADDR);
+ 387:Src/usbd_hid.c ****
+ 388:Src/usbd_hid.c **** /* FRee allocated memory */
+ 389:Src/usbd_hid.c **** if(pdev->pClassData != NULL)
+ 390:Src/usbd_hid.c **** {
+ 391:Src/usbd_hid.c **** USBD_free(pdev->pClassData);
+ 392:Src/usbd_hid.c **** pdev->pClassData = NULL;
+ 393:Src/usbd_hid.c **** }
+ 394:Src/usbd_hid.c ****
+ 395:Src/usbd_hid.c **** return USBD_OK;
+ 396:Src/usbd_hid.c **** }
+ 397:Src/usbd_hid.c ****
+ 398:Src/usbd_hid.c **** /**
+ 399:Src/usbd_hid.c **** * @brief USBD_HID_Setup
+ 400:Src/usbd_hid.c **** * Handle the HID specific requests
+ 401:Src/usbd_hid.c **** * @param pdev: instance
+ 402:Src/usbd_hid.c **** * @param req: usb requests
+ 403:Src/usbd_hid.c **** * @retval status
+ 404:Src/usbd_hid.c **** */
+ 405:Src/usbd_hid.c **** static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev,
+ 406:Src/usbd_hid.c **** USBD_SetupReqTypedef *req)
+ 407:Src/usbd_hid.c **** {
+ 408:Src/usbd_hid.c **** uint16_t len = 0;
+ 409:Src/usbd_hid.c **** uint8_t *pbuf = NULL;
+ 410:Src/usbd_hid.c **** USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*) pdev->pClassData;
+ 411:Src/usbd_hid.c ****
+ 412:Src/usbd_hid.c **** switch (req->bmRequest & USB_REQ_TYPE_MASK)
+ 413:Src/usbd_hid.c **** {
+ 414:Src/usbd_hid.c **** case USB_REQ_TYPE_CLASS :
+ 415:Src/usbd_hid.c **** switch (req->bRequest)
+ 416:Src/usbd_hid.c **** {
+ 417:Src/usbd_hid.c ****
+ 418:Src/usbd_hid.c ****
+ 419:Src/usbd_hid.c **** case HID_REQ_SET_PROTOCOL:
+ 420:Src/usbd_hid.c **** hhid->Protocol = (uint8_t)(req->wValue);
+ 421:Src/usbd_hid.c **** break;
+ 422:Src/usbd_hid.c ****
+ 423:Src/usbd_hid.c **** case HID_REQ_GET_PROTOCOL:
+ 424:Src/usbd_hid.c **** USBD_CtlSendData (pdev,
+ 425:Src/usbd_hid.c **** (uint8_t *)&hhid->Protocol,
+ 426:Src/usbd_hid.c **** 1);
+ 427:Src/usbd_hid.c **** break;
+ 428:Src/usbd_hid.c ****
+ 429:Src/usbd_hid.c **** case HID_REQ_SET_IDLE:
+ 430:Src/usbd_hid.c **** hhid->IdleState = (uint8_t)(req->wValue >> 8);
+ 431:Src/usbd_hid.c **** break;
+ 432:Src/usbd_hid.c ****
+ 433:Src/usbd_hid.c **** case HID_REQ_GET_IDLE:
+ ARM GAS /tmp/ccE5JjBw.s page 9
+
+
+ 434:Src/usbd_hid.c **** USBD_CtlSendData (pdev,
+ 435:Src/usbd_hid.c **** (uint8_t *)&hhid->IdleState,
+ 436:Src/usbd_hid.c **** 1);
+ 437:Src/usbd_hid.c **** break;
+ 438:Src/usbd_hid.c ****
+ 439:Src/usbd_hid.c **** default:
+ 440:Src/usbd_hid.c **** USBD_CtlError (pdev, req);
+ 441:Src/usbd_hid.c **** return USBD_FAIL;
+ 442:Src/usbd_hid.c **** }
+ 443:Src/usbd_hid.c **** break;
+ 444:Src/usbd_hid.c ****
+ 445:Src/usbd_hid.c **** case USB_REQ_TYPE_STANDARD:
+ 446:Src/usbd_hid.c **** switch (req->bRequest)
+ 447:Src/usbd_hid.c **** {
+ 448:Src/usbd_hid.c **** case USB_REQ_GET_DESCRIPTOR:
+ 449:Src/usbd_hid.c **** if( req->wValue >> 8 == HID_REPORT_DESC)
+ 450:Src/usbd_hid.c **** {
+ 451:Src/usbd_hid.c **** len = MIN(HID_REPORT_DESC_SIZE , req->wLength);
+ 452:Src/usbd_hid.c **** pbuf = HID_ReportDesc;
+ 453:Src/usbd_hid.c **** }
+ 454:Src/usbd_hid.c **** else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE)
+ 455:Src/usbd_hid.c **** {
+ 456:Src/usbd_hid.c **** pbuf = USBD_HID_Desc;
+ 457:Src/usbd_hid.c **** len = MIN(USB_HID_DESC_SIZ , req->wLength);
+ 458:Src/usbd_hid.c **** }
+ 459:Src/usbd_hid.c ****
+ 460:Src/usbd_hid.c **** USBD_CtlSendData (pdev,
+ 461:Src/usbd_hid.c **** pbuf,
+ 462:Src/usbd_hid.c **** len);
+ 463:Src/usbd_hid.c ****
+ 464:Src/usbd_hid.c **** break;
+ 465:Src/usbd_hid.c ****
+ 466:Src/usbd_hid.c **** case USB_REQ_GET_INTERFACE :
+ 467:Src/usbd_hid.c **** USBD_CtlSendData (pdev,
+ 468:Src/usbd_hid.c **** (uint8_t *)&hhid->AltSetting,
+ 469:Src/usbd_hid.c **** 1);
+ 470:Src/usbd_hid.c **** break;
+ 471:Src/usbd_hid.c ****
+ 472:Src/usbd_hid.c **** case USB_REQ_SET_INTERFACE :
+ 473:Src/usbd_hid.c **** hhid->AltSetting = (uint8_t)(req->wValue);
+ 474:Src/usbd_hid.c **** break;
+ 475:Src/usbd_hid.c **** }
+ 476:Src/usbd_hid.c **** }
+ 477:Src/usbd_hid.c **** return USBD_OK;
+ 478:Src/usbd_hid.c **** }
+ 479:Src/usbd_hid.c ****
+ 480:Src/usbd_hid.c **** /**
+ 481:Src/usbd_hid.c **** * @brief USBD_HID_SendReport
+ 482:Src/usbd_hid.c **** * Send HID Report
+ 483:Src/usbd_hid.c **** * @param pdev: device instance
+ 484:Src/usbd_hid.c **** * @param buff: pointer to report
+ 485:Src/usbd_hid.c **** * @retval status
+ 486:Src/usbd_hid.c **** */
+ 487:Src/usbd_hid.c **** uint8_t USBD_HID_SendReport (USBD_HandleTypeDef *pdev,
+ 488:Src/usbd_hid.c **** uint8_t *report,
+ 489:Src/usbd_hid.c **** uint16_t len)
+ 490:Src/usbd_hid.c **** {
+ ARM GAS /tmp/ccE5JjBw.s page 10
+
+
+ 491:Src/usbd_hid.c **** USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*)pdev->pClassData;
+ 492:Src/usbd_hid.c ****
+ 493:Src/usbd_hid.c **** if (pdev->dev_state == USBD_STATE_CONFIGURED )
+ 494:Src/usbd_hid.c **** {
+ 495:Src/usbd_hid.c **** if(hhid->state == HID_IDLE)
+ 496:Src/usbd_hid.c **** {
+ 497:Src/usbd_hid.c **** hhid->state = HID_BUSY;
+ 498:Src/usbd_hid.c **** USBD_LL_Transmit (pdev,
+ 499:Src/usbd_hid.c **** HID_EPIN_ADDR,
+ 500:Src/usbd_hid.c **** report,
+ 501:Src/usbd_hid.c **** len);
+ 502:Src/usbd_hid.c **** }
+ 503:Src/usbd_hid.c **** }
+ 504:Src/usbd_hid.c **** return USBD_OK;
+ 505:Src/usbd_hid.c **** }
+ 506:Src/usbd_hid.c ****
+ 507:Src/usbd_hid.c **** /**
+ 508:Src/usbd_hid.c **** * @brief USBD_HID_GetPollingInterval
+ 509:Src/usbd_hid.c **** * return polling interval from endpoint descriptor
+ 510:Src/usbd_hid.c **** * @param pdev: device instance
+ 511:Src/usbd_hid.c **** * @retval polling interval
+ 512:Src/usbd_hid.c **** */
+ 513:Src/usbd_hid.c **** uint32_t USBD_HID_GetPollingInterval (USBD_HandleTypeDef *pdev)
+ 514:Src/usbd_hid.c **** {
+ 515:Src/usbd_hid.c **** uint32_t polling_interval = 0;
+ 516:Src/usbd_hid.c ****
+ 517:Src/usbd_hid.c **** /* HIGH-speed endpoints */
+ 518:Src/usbd_hid.c **** if(pdev->dev_speed == USBD_SPEED_HIGH)
+ 519:Src/usbd_hid.c **** {
+ 520:Src/usbd_hid.c **** /* Sets the data transfer polling interval for high speed transfers.
+ 521:Src/usbd_hid.c **** Values between 1..16 are allowed. Values correspond to interval
+ 522:Src/usbd_hid.c **** of 2 ^ (bInterval-1). This option (8 ms, corresponds to HID_HS_BINTERVAL */
+ 523:Src/usbd_hid.c **** polling_interval = (((1 <<(HID_HS_BINTERVAL - 1)))/8);
+ 524:Src/usbd_hid.c **** }
+ 525:Src/usbd_hid.c **** else /* LOW and FULL-speed endpoints */
+ 526:Src/usbd_hid.c **** {
+ 527:Src/usbd_hid.c **** /* Sets the data transfer polling interval for low and full
+ 528:Src/usbd_hid.c **** speed transfers */
+ 529:Src/usbd_hid.c **** polling_interval = HID_FS_BINTERVAL;
+ 530:Src/usbd_hid.c **** }
+ 531:Src/usbd_hid.c ****
+ 532:Src/usbd_hid.c **** return ((uint32_t)(polling_interval));
+ 533:Src/usbd_hid.c **** }
+ 534:Src/usbd_hid.c ****
+ 535:Src/usbd_hid.c **** /**
+ 536:Src/usbd_hid.c **** * @brief USBD_HID_GetCfgDesc
+ 537:Src/usbd_hid.c **** * return configuration descriptor
+ 538:Src/usbd_hid.c **** * @param speed : current device speed
+ 539:Src/usbd_hid.c **** * @param length : pointer data length
+ 540:Src/usbd_hid.c **** * @retval pointer to descriptor buffer
+ 541:Src/usbd_hid.c **** */
+ 542:Src/usbd_hid.c **** static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length)
+ 543:Src/usbd_hid.c **** {
+ 25 .loc 1 543 0
+ 26 .cfi_startproc
+ 27 @ args = 0, pretend = 0, frame = 0
+ 28 @ frame_needed = 0, uses_anonymous_args = 0
+ ARM GAS /tmp/ccE5JjBw.s page 11
+
+
+ 29 @ link register save eliminated.
+ 30 .LVL0:
+ 544:Src/usbd_hid.c **** *length = sizeof (USBD_HID_CfgDesc);
+ 31 .loc 1 544 0
+ 32 0000 2223 movs r3, #34
+ 33 0002 0380 strh r3, [r0]
+ 545:Src/usbd_hid.c **** return USBD_HID_CfgDesc;
+ 546:Src/usbd_hid.c **** }
+ 34 .loc 1 546 0
+ 35 0004 0048 ldr r0, .L2
+ 36 .LVL1:
+ 37 @ sp needed
+ 38 0006 7047 bx lr
+ 39 .L3:
+ 40 .align 2
+ 41 .L2:
+ 42 0008 00000000 .word .LANCHOR0
+ 43 .cfi_endproc
+ 44 .LFE48:
+ 46 .section .text.USBD_HID_DataIn,"ax",%progbits
+ 47 .align 1
+ 48 .syntax unified
+ 49 .code 16
+ 50 .thumb_func
+ 51 .fpu softvfp
+ 53 USBD_HID_DataIn:
+ 54 .LFB49:
+ 547:Src/usbd_hid.c ****
+ 548:Src/usbd_hid.c ****
+ 549:Src/usbd_hid.c **** /**
+ 550:Src/usbd_hid.c **** * @brief USBD_HID_DataIn
+ 551:Src/usbd_hid.c **** * handle data IN Stage
+ 552:Src/usbd_hid.c **** * @param pdev: device instance
+ 553:Src/usbd_hid.c **** * @param epnum: endpoint index
+ 554:Src/usbd_hid.c **** * @retval status
+ 555:Src/usbd_hid.c **** */
+ 556:Src/usbd_hid.c **** static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev,
+ 557:Src/usbd_hid.c **** uint8_t epnum)
+ 558:Src/usbd_hid.c **** {
+ 55 .loc 1 558 0
+ 56 .cfi_startproc
+ 57 @ args = 0, pretend = 0, frame = 0
+ 58 @ frame_needed = 0, uses_anonymous_args = 0
+ 59 @ link register save eliminated.
+ 60 .LVL2:
+ 559:Src/usbd_hid.c ****
+ 560:Src/usbd_hid.c **** /* Ensure that the FIFO is empty before a new transfer, this condition could
+ 561:Src/usbd_hid.c **** be caused by a new transfer before the end of the previous transfer */
+ 562:Src/usbd_hid.c **** ((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE;
+ 61 .loc 1 562 0
+ 62 0000 8623 movs r3, #134
+ 63 0002 9B00 lsls r3, r3, #2
+ 64 0004 C358 ldr r3, [r0, r3]
+ 65 0006 0022 movs r2, #0
+ 66 0008 1A73 strb r2, [r3, #12]
+ 563:Src/usbd_hid.c **** return USBD_OK;
+ 564:Src/usbd_hid.c **** }
+ ARM GAS /tmp/ccE5JjBw.s page 12
+
+
+ 67 .loc 1 564 0
+ 68 000a 0020 movs r0, #0
+ 69 .LVL3:
+ 70 @ sp needed
+ 71 000c 7047 bx lr
+ 72 .cfi_endproc
+ 73 .LFE49:
+ 75 .section .text.USBD_HID_GetDeviceQualifierDesc,"ax",%progbits
+ 76 .align 1
+ 77 .syntax unified
+ 78 .code 16
+ 79 .thumb_func
+ 80 .fpu softvfp
+ 82 USBD_HID_GetDeviceQualifierDesc:
+ 83 .LFB52:
+ 565:Src/usbd_hid.c ****
+ 566:Src/usbd_hid.c ****
+ 567:Src/usbd_hid.c **** __weak void USBD_HID_GetReport(uint8_t * OutData, int len){
+ 568:Src/usbd_hid.c **** /** default do ntohing */
+ 569:Src/usbd_hid.c **** }
+ 570:Src/usbd_hid.c ****
+ 571:Src/usbd_hid.c **** static uint8_t USBD_HID_DataOut (USBD_HandleTypeDef *pdev,
+ 572:Src/usbd_hid.c **** uint8_t epnum)
+ 573:Src/usbd_hid.c **** {
+ 574:Src/usbd_hid.c **** int len;
+ 575:Src/usbd_hid.c ****
+ 576:Src/usbd_hid.c **** #ifdef DEBUG
+ 577:Src/usbd_hid.c **** memcpy(OutDataLog+((nOutData)%8)*8,OutData,8);
+ 578:Src/usbd_hid.c **** #endif
+ 579:Src/usbd_hid.c **** nOutData++;
+ 580:Src/usbd_hid.c **** // data cpy so we can be ready for next usb out and used received data safely
+ 581:Src/usbd_hid.c **** len = USBD_LL_GetRxDataSize (pdev, epnum);
+ 582:Src/usbd_hid.c **** memcpy(OutDataBuffer,OutData, len);
+ 583:Src/usbd_hid.c **** USBD_LL_PrepareReceive(pdev, HID_EPOUT_ADDR, OutData, HID_EPOUT_SIZE);
+ 584:Src/usbd_hid.c **** USBD_HID_GetReport(OutDataBuffer, len);
+ 585:Src/usbd_hid.c **** return USBD_OK;
+ 586:Src/usbd_hid.c **** }
+ 587:Src/usbd_hid.c ****
+ 588:Src/usbd_hid.c ****
+ 589:Src/usbd_hid.c **** /**
+ 590:Src/usbd_hid.c **** * @brief DeviceQualifierDescriptor
+ 591:Src/usbd_hid.c **** * return Device Qualifier descriptor
+ 592:Src/usbd_hid.c **** * @param length : pointer data length
+ 593:Src/usbd_hid.c **** * @retval pointer to descriptor buffer
+ 594:Src/usbd_hid.c **** */
+ 595:Src/usbd_hid.c **** static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length)
+ 596:Src/usbd_hid.c **** {
+ 84 .loc 1 596 0
+ 85 .cfi_startproc
+ 86 @ args = 0, pretend = 0, frame = 0
+ 87 @ frame_needed = 0, uses_anonymous_args = 0
+ 88 @ link register save eliminated.
+ 89 .LVL4:
+ 597:Src/usbd_hid.c **** *length = sizeof (USBD_HID_DeviceQualifierDesc);
+ 90 .loc 1 597 0
+ 91 0000 0A23 movs r3, #10
+ 92 0002 0380 strh r3, [r0]
+ ARM GAS /tmp/ccE5JjBw.s page 13
+
+
+ 598:Src/usbd_hid.c **** return USBD_HID_DeviceQualifierDesc;
+ 599:Src/usbd_hid.c **** }
+ 93 .loc 1 599 0
+ 94 0004 0048 ldr r0, .L6
+ 95 .LVL5:
+ 96 @ sp needed
+ 97 0006 7047 bx lr
+ 98 .L7:
+ 99 .align 2
+ 100 .L6:
+ 101 0008 00000000 .word .LANCHOR1
+ 102 .cfi_endproc
+ 103 .LFE52:
+ 105 .section .text.USBD_HID_Setup,"ax",%progbits
+ 106 .align 1
+ 107 .syntax unified
+ 108 .code 16
+ 109 .thumb_func
+ 110 .fpu softvfp
+ 112 USBD_HID_Setup:
+ 113 .LFB45:
+ 407:Src/usbd_hid.c **** uint16_t len = 0;
+ 114 .loc 1 407 0
+ 115 .cfi_startproc
+ 116 @ args = 0, pretend = 0, frame = 0
+ 117 @ frame_needed = 0, uses_anonymous_args = 0
+ 118 .LVL6:
+ 119 0000 10B5 push {r4, lr}
+ 120 .LCFI0:
+ 121 .cfi_def_cfa_offset 8
+ 122 .cfi_offset 4, -8
+ 123 .cfi_offset 14, -4
+ 124 .LVL7:
+ 410:Src/usbd_hid.c ****
+ 125 .loc 1 410 0
+ 126 0002 8623 movs r3, #134
+ 127 0004 9B00 lsls r3, r3, #2
+ 128 0006 C458 ldr r4, [r0, r3]
+ 129 .LVL8:
+ 412:Src/usbd_hid.c **** {
+ 130 .loc 1 412 0
+ 131 0008 0A78 ldrb r2, [r1]
+ 132 000a B93B subs r3, r3, #185
+ 133 000c FF3B subs r3, r3, #255
+ 134 000e 1340 ands r3, r2
+ 135 0010 24D0 beq .L10
+ 136 0012 202B cmp r3, #32
+ 137 0014 52D1 bne .L28
+ 415:Src/usbd_hid.c **** {
+ 138 .loc 1 415 0
+ 139 0016 4B78 ldrb r3, [r1, #1]
+ 140 0018 032B cmp r3, #3
+ 141 001a 10D0 beq .L13
+ 142 001c 07D9 bls .L30
+ 143 001e 0A2B cmp r3, #10
+ 144 0020 13D0 beq .L16
+ 145 0022 0B2B cmp r3, #11
+ ARM GAS /tmp/ccE5JjBw.s page 14
+
+
+ 146 0024 16D1 bne .L12
+ 420:Src/usbd_hid.c **** break;
+ 147 .loc 1 420 0
+ 148 0026 8B78 ldrb r3, [r1, #2]
+ 149 0028 2360 str r3, [r4]
+ 477:Src/usbd_hid.c **** }
+ 150 .loc 1 477 0
+ 151 002a 0020 movs r0, #0
+ 152 .LVL9:
+ 421:Src/usbd_hid.c ****
+ 153 .loc 1 421 0
+ 154 002c 47E0 b .L9
+ 155 .LVL10:
+ 156 .L30:
+ 415:Src/usbd_hid.c **** {
+ 157 .loc 1 415 0
+ 158 002e 022B cmp r3, #2
+ 159 0030 10D1 bne .L12
+ 435:Src/usbd_hid.c **** 1);
+ 160 .loc 1 435 0
+ 161 0032 211D adds r1, r4, #4
+ 162 .LVL11:
+ 434:Src/usbd_hid.c **** (uint8_t *)&hhid->IdleState,
+ 163 .loc 1 434 0
+ 164 0034 0122 movs r2, #1
+ 165 0036 FFF7FEFF bl USBD_CtlSendData
+ 166 .LVL12:
+ 477:Src/usbd_hid.c **** }
+ 167 .loc 1 477 0
+ 168 003a 0020 movs r0, #0
+ 437:Src/usbd_hid.c ****
+ 169 .loc 1 437 0
+ 170 003c 3FE0 b .L9
+ 171 .LVL13:
+ 172 .L13:
+ 424:Src/usbd_hid.c **** (uint8_t *)&hhid->Protocol,
+ 173 .loc 1 424 0
+ 174 003e 0122 movs r2, #1
+ 175 0040 2100 movs r1, r4
+ 176 .LVL14:
+ 177 0042 FFF7FEFF bl USBD_CtlSendData
+ 178 .LVL15:
+ 477:Src/usbd_hid.c **** }
+ 179 .loc 1 477 0
+ 180 0046 0020 movs r0, #0
+ 427:Src/usbd_hid.c ****
+ 181 .loc 1 427 0
+ 182 0048 39E0 b .L9
+ 183 .LVL16:
+ 184 .L16:
+ 430:Src/usbd_hid.c **** break;
+ 185 .loc 1 430 0
+ 186 004a 4B88 ldrh r3, [r1, #2]
+ 187 004c 1B0A lsrs r3, r3, #8
+ 188 004e 6360 str r3, [r4, #4]
+ 477:Src/usbd_hid.c **** }
+ 189 .loc 1 477 0
+ ARM GAS /tmp/ccE5JjBw.s page 15
+
+
+ 190 0050 0020 movs r0, #0
+ 191 .LVL17:
+ 431:Src/usbd_hid.c ****
+ 192 .loc 1 431 0
+ 193 0052 34E0 b .L9
+ 194 .LVL18:
+ 195 .L12:
+ 440:Src/usbd_hid.c **** return USBD_FAIL;
+ 196 .loc 1 440 0
+ 197 0054 FFF7FEFF bl USBD_CtlError
+ 198 .LVL19:
+ 441:Src/usbd_hid.c **** }
+ 199 .loc 1 441 0
+ 200 0058 0220 movs r0, #2
+ 201 005a 30E0 b .L9
+ 202 .LVL20:
+ 203 .L10:
+ 446:Src/usbd_hid.c **** {
+ 204 .loc 1 446 0
+ 205 005c 4B78 ldrb r3, [r1, #1]
+ 206 005e 0A2B cmp r3, #10
+ 207 0060 21D0 beq .L18
+ 208 0062 0B2B cmp r3, #11
+ 209 0064 26D0 beq .L19
+ 210 0066 062B cmp r3, #6
+ 211 0068 01D0 beq .L31
+ 477:Src/usbd_hid.c **** }
+ 212 .loc 1 477 0
+ 213 006a 0020 movs r0, #0
+ 214 .LVL21:
+ 215 006c 27E0 b .L9
+ 216 .LVL22:
+ 217 .L31:
+ 449:Src/usbd_hid.c **** {
+ 218 .loc 1 449 0
+ 219 006e 4B88 ldrh r3, [r1, #2]
+ 220 0070 1B0A lsrs r3, r3, #8
+ 221 0072 222B cmp r3, #34
+ 222 0074 07D0 beq .L32
+ 454:Src/usbd_hid.c **** {
+ 223 .loc 1 454 0
+ 224 0076 212B cmp r3, #33
+ 225 0078 0DD0 beq .L33
+ 409:Src/usbd_hid.c **** USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*) pdev->pClassData;
+ 226 .loc 1 409 0
+ 227 007a 0021 movs r1, #0
+ 228 .LVL23:
+ 408:Src/usbd_hid.c **** uint8_t *pbuf = NULL;
+ 229 .loc 1 408 0
+ 230 007c 0022 movs r2, #0
+ 231 .LVL24:
+ 232 .L23:
+ 460:Src/usbd_hid.c **** pbuf,
+ 233 .loc 1 460 0
+ 234 007e FFF7FEFF bl USBD_CtlSendData
+ 235 .LVL25:
+ 477:Src/usbd_hid.c **** }
+ ARM GAS /tmp/ccE5JjBw.s page 16
+
+
+ 236 .loc 1 477 0
+ 237 0082 0020 movs r0, #0
+ 464:Src/usbd_hid.c ****
+ 238 .loc 1 464 0
+ 239 0084 1BE0 b .L9
+ 240 .LVL26:
+ 241 .L32:
+ 451:Src/usbd_hid.c **** pbuf = HID_ReportDesc;
+ 242 .loc 1 451 0
+ 243 0086 CB88 ldrh r3, [r1, #6]
+ 244 0088 1A1C adds r2, r3, #0
+ 245 008a 482B cmp r3, #72
+ 246 008c 00D9 bls .L22
+ 247 008e 4822 movs r2, #72
+ 248 .L22:
+ 249 0090 92B2 uxth r2, r2
+ 250 .LVL27:
+ 452:Src/usbd_hid.c **** }
+ 251 .loc 1 452 0
+ 252 0092 0B49 ldr r1, .L34
+ 253 .LVL28:
+ 254 0094 F3E7 b .L23
+ 255 .LVL29:
+ 256 .L33:
+ 457:Src/usbd_hid.c **** }
+ 257 .loc 1 457 0
+ 258 0096 CB88 ldrh r3, [r1, #6]
+ 259 0098 1A1C adds r2, r3, #0
+ 260 009a 092B cmp r3, #9
+ 261 009c 00D9 bls .L24
+ 262 009e 0922 movs r2, #9
+ 263 .L24:
+ 264 00a0 92B2 uxth r2, r2
+ 265 .LVL30:
+ 456:Src/usbd_hid.c **** len = MIN(USB_HID_DESC_SIZ , req->wLength);
+ 266 .loc 1 456 0
+ 267 00a2 0849 ldr r1, .L34+4
+ 268 .LVL31:
+ 269 00a4 EBE7 b .L23
+ 270 .LVL32:
+ 271 .L18:
+ 468:Src/usbd_hid.c **** 1);
+ 272 .loc 1 468 0
+ 273 00a6 2100 movs r1, r4
+ 274 .LVL33:
+ 275 00a8 0831 adds r1, r1, #8
+ 467:Src/usbd_hid.c **** (uint8_t *)&hhid->AltSetting,
+ 276 .loc 1 467 0
+ 277 00aa 0122 movs r2, #1
+ 278 00ac FFF7FEFF bl USBD_CtlSendData
+ 279 .LVL34:
+ 477:Src/usbd_hid.c **** }
+ 280 .loc 1 477 0
+ 281 00b0 0020 movs r0, #0
+ 470:Src/usbd_hid.c ****
+ 282 .loc 1 470 0
+ 283 00b2 04E0 b .L9
+ ARM GAS /tmp/ccE5JjBw.s page 17
+
+
+ 284 .LVL35:
+ 285 .L19:
+ 473:Src/usbd_hid.c **** break;
+ 286 .loc 1 473 0
+ 287 00b4 8B78 ldrb r3, [r1, #2]
+ 288 00b6 A360 str r3, [r4, #8]
+ 477:Src/usbd_hid.c **** }
+ 289 .loc 1 477 0
+ 290 00b8 0020 movs r0, #0
+ 291 .LVL36:
+ 474:Src/usbd_hid.c **** }
+ 292 .loc 1 474 0
+ 293 00ba 00E0 b .L9
+ 294 .LVL37:
+ 295 .L28:
+ 477:Src/usbd_hid.c **** }
+ 296 .loc 1 477 0
+ 297 00bc 0020 movs r0, #0
+ 298 .LVL38:
+ 299 .L9:
+ 478:Src/usbd_hid.c ****
+ 300 .loc 1 478 0
+ 301 @ sp needed
+ 302 .LVL39:
+ 303 00be 10BD pop {r4, pc}
+ 304 .L35:
+ 305 .align 2
+ 306 .L34:
+ 307 00c0 00000000 .word .LANCHOR2
+ 308 00c4 00000000 .word .LANCHOR3
+ 309 .cfi_endproc
+ 310 .LFE45:
+ 312 .section .text.USBD_HID_DeInit,"ax",%progbits
+ 313 .align 1
+ 314 .syntax unified
+ 315 .code 16
+ 316 .thumb_func
+ 317 .fpu softvfp
+ 319 USBD_HID_DeInit:
+ 320 .LFB44:
+ 380:Src/usbd_hid.c **** /* Close HID EPs */
+ 321 .loc 1 380 0
+ 322 .cfi_startproc
+ 323 @ args = 0, pretend = 0, frame = 0
+ 324 @ frame_needed = 0, uses_anonymous_args = 0
+ 325 .LVL40:
+ 326 0000 10B5 push {r4, lr}
+ 327 .LCFI1:
+ 328 .cfi_def_cfa_offset 8
+ 329 .cfi_offset 4, -8
+ 330 .cfi_offset 14, -4
+ 331 0002 0400 movs r4, r0
+ 382:Src/usbd_hid.c **** HID_EPIN_ADDR);
+ 332 .loc 1 382 0
+ 333 0004 8121 movs r1, #129
+ 334 .LVL41:
+ 335 0006 FFF7FEFF bl USBD_LL_CloseEP
+ ARM GAS /tmp/ccE5JjBw.s page 18
+
+
+ 336 .LVL42:
+ 385:Src/usbd_hid.c **** HID_EPOUT_ADDR);
+ 337 .loc 1 385 0
+ 338 000a 0121 movs r1, #1
+ 339 000c 2000 movs r0, r4
+ 340 000e FFF7FEFF bl USBD_LL_CloseEP
+ 341 .LVL43:
+ 389:Src/usbd_hid.c **** {
+ 342 .loc 1 389 0
+ 343 0012 8623 movs r3, #134
+ 344 0014 9B00 lsls r3, r3, #2
+ 345 0016 E058 ldr r0, [r4, r3]
+ 346 0018 0028 cmp r0, #0
+ 347 001a 05D0 beq .L37
+ 391:Src/usbd_hid.c **** pdev->pClassData = NULL;
+ 348 .loc 1 391 0
+ 349 001c FFF7FEFF bl free
+ 350 .LVL44:
+ 392:Src/usbd_hid.c **** }
+ 351 .loc 1 392 0
+ 352 0020 8623 movs r3, #134
+ 353 0022 9B00 lsls r3, r3, #2
+ 354 0024 0022 movs r2, #0
+ 355 0026 E250 str r2, [r4, r3]
+ 356 .L37:
+ 396:Src/usbd_hid.c ****
+ 357 .loc 1 396 0
+ 358 0028 0020 movs r0, #0
+ 359 @ sp needed
+ 360 .LVL45:
+ 361 002a 10BD pop {r4, pc}
+ 362 .cfi_endproc
+ 363 .LFE44:
+ 365 .section .text.USBD_HID_Init,"ax",%progbits
+ 366 .align 1
+ 367 .syntax unified
+ 368 .code 16
+ 369 .thumb_func
+ 370 .fpu softvfp
+ 372 USBD_HID_Init:
+ 373 .LFB43:
+ 339:Src/usbd_hid.c **** uint8_t ret = 0;
+ 374 .loc 1 339 0
+ 375 .cfi_startproc
+ 376 @ args = 0, pretend = 0, frame = 0
+ 377 @ frame_needed = 0, uses_anonymous_args = 0
+ 378 .LVL46:
+ 379 0000 10B5 push {r4, lr}
+ 380 .LCFI2:
+ 381 .cfi_def_cfa_offset 8
+ 382 .cfi_offset 4, -8
+ 383 .cfi_offset 14, -4
+ 384 0002 0400 movs r4, r0
+ 385 .LVL47:
+ 343:Src/usbd_hid.c **** HID_EPIN_ADDR,
+ 386 .loc 1 343 0
+ 387 0004 1023 movs r3, #16
+ ARM GAS /tmp/ccE5JjBw.s page 19
+
+
+ 388 0006 0322 movs r2, #3
+ 389 0008 8121 movs r1, #129
+ 390 .LVL48:
+ 391 000a FFF7FEFF bl USBD_LL_OpenEP
+ 392 .LVL49:
+ 354:Src/usbd_hid.c ****
+ 393 .loc 1 354 0
+ 394 000e 1020 movs r0, #16
+ 395 0010 FFF7FEFF bl malloc
+ 396 .LVL50:
+ 397 0014 8623 movs r3, #134
+ 398 0016 9B00 lsls r3, r3, #2
+ 399 0018 E050 str r0, [r4, r3]
+ 356:Src/usbd_hid.c **** {
+ 400 .loc 1 356 0
+ 401 001a 0028 cmp r0, #0
+ 402 001c 03D0 beq .L40
+ 365:Src/usbd_hid.c ****
+ 403 .loc 1 365 0
+ 404 001e 0023 movs r3, #0
+ 405 0020 0373 strb r3, [r0, #12]
+ 340:Src/usbd_hid.c ****
+ 406 .loc 1 340 0
+ 407 0022 0020 movs r0, #0
+ 408 .L39:
+ 409 .LVL51:
+ 369:Src/usbd_hid.c ****
+ 410 .loc 1 369 0
+ 411 @ sp needed
+ 412 .LVL52:
+ 413 0024 10BD pop {r4, pc}
+ 414 .LVL53:
+ 415 .L40:
+ 358:Src/usbd_hid.c **** }
+ 416 .loc 1 358 0
+ 417 0026 0120 movs r0, #1
+ 418 0028 FCE7 b .L39
+ 419 .cfi_endproc
+ 420 .LFE43:
+ 422 .section .text.USBD_HID_SendReport,"ax",%progbits
+ 423 .align 1
+ 424 .global USBD_HID_SendReport
+ 425 .syntax unified
+ 426 .code 16
+ 427 .thumb_func
+ 428 .fpu softvfp
+ 430 USBD_HID_SendReport:
+ 431 .LFB46:
+ 490:Src/usbd_hid.c **** USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef*)pdev->pClassData;
+ 432 .loc 1 490 0
+ 433 .cfi_startproc
+ 434 @ args = 0, pretend = 0, frame = 0
+ 435 @ frame_needed = 0, uses_anonymous_args = 0
+ 436 .LVL54:
+ 437 0000 70B5 push {r4, r5, r6, lr}
+ 438 .LCFI3:
+ 439 .cfi_def_cfa_offset 16
+ ARM GAS /tmp/ccE5JjBw.s page 20
+
+
+ 440 .cfi_offset 4, -16
+ 441 .cfi_offset 5, -12
+ 442 .cfi_offset 6, -8
+ 443 .cfi_offset 14, -4
+ 491:Src/usbd_hid.c ****
+ 444 .loc 1 491 0
+ 445 0002 8624 movs r4, #134
+ 446 0004 A400 lsls r4, r4, #2
+ 447 0006 0559 ldr r5, [r0, r4]
+ 448 .LVL55:
+ 493:Src/usbd_hid.c **** {
+ 449 .loc 1 493 0
+ 450 0008 1C3C subs r4, r4, #28
+ 451 000a 045D ldrb r4, [r0, r4]
+ 452 000c 032C cmp r4, #3
+ 453 000e 01D0 beq .L43
+ 454 .LVL56:
+ 455 .L42:
+ 505:Src/usbd_hid.c ****
+ 456 .loc 1 505 0
+ 457 0010 0020 movs r0, #0
+ 458 @ sp needed
+ 459 .LVL57:
+ 460 0012 70BD pop {r4, r5, r6, pc}
+ 461 .LVL58:
+ 462 .L43:
+ 495:Src/usbd_hid.c **** {
+ 463 .loc 1 495 0
+ 464 0014 2B7B ldrb r3, [r5, #12]
+ 465 0016 002B cmp r3, #0
+ 466 0018 FAD1 bne .L42
+ 497:Src/usbd_hid.c **** USBD_LL_Transmit (pdev,
+ 467 .loc 1 497 0
+ 468 001a 0133 adds r3, r3, #1
+ 469 001c 2B73 strb r3, [r5, #12]
+ 498:Src/usbd_hid.c **** HID_EPIN_ADDR,
+ 470 .loc 1 498 0
+ 471 001e 1300 movs r3, r2
+ 472 0020 0A00 movs r2, r1
+ 473 .LVL59:
+ 474 0022 8121 movs r1, #129
+ 475 .LVL60:
+ 476 0024 FFF7FEFF bl USBD_LL_Transmit
+ 477 .LVL61:
+ 478 0028 F2E7 b .L42
+ 479 .cfi_endproc
+ 480 .LFE46:
+ 482 .section .text.USBD_HID_GetPollingInterval,"ax",%progbits
+ 483 .align 1
+ 484 .global USBD_HID_GetPollingInterval
+ 485 .syntax unified
+ 486 .code 16
+ 487 .thumb_func
+ 488 .fpu softvfp
+ 490 USBD_HID_GetPollingInterval:
+ 491 .LFB47:
+ 514:Src/usbd_hid.c **** uint32_t polling_interval = 0;
+ ARM GAS /tmp/ccE5JjBw.s page 21
+
+
+ 492 .loc 1 514 0
+ 493 .cfi_startproc
+ 494 @ args = 0, pretend = 0, frame = 0
+ 495 @ frame_needed = 0, uses_anonymous_args = 0
+ 496 @ link register save eliminated.
+ 497 .LVL62:
+ 518:Src/usbd_hid.c **** {
+ 498 .loc 1 518 0
+ 499 0000 037C ldrb r3, [r0, #16]
+ 500 0002 002B cmp r3, #0
+ 501 0004 01D0 beq .L47
+ 529:Src/usbd_hid.c **** }
+ 502 .loc 1 529 0
+ 503 0006 0A20 movs r0, #10
+ 504 .LVL63:
+ 505 .L44:
+ 533:Src/usbd_hid.c ****
+ 506 .loc 1 533 0
+ 507 @ sp needed
+ 508 0008 7047 bx lr
+ 509 .LVL64:
+ 510 .L47:
+ 523:Src/usbd_hid.c **** }
+ 511 .loc 1 523 0
+ 512 000a 0820 movs r0, #8
+ 513 .LVL65:
+ 514 000c FCE7 b .L44
+ 515 .cfi_endproc
+ 516 .LFE47:
+ 518 .section .text.USBD_HID_GetReport,"ax",%progbits
+ 519 .align 1
+ 520 .weak USBD_HID_GetReport
+ 521 .syntax unified
+ 522 .code 16
+ 523 .thumb_func
+ 524 .fpu softvfp
+ 526 USBD_HID_GetReport:
+ 527 .LFB50:
+ 567:Src/usbd_hid.c **** /** default do ntohing */
+ 528 .loc 1 567 0
+ 529 .cfi_startproc
+ 530 @ args = 0, pretend = 0, frame = 0
+ 531 @ frame_needed = 0, uses_anonymous_args = 0
+ 532 @ link register save eliminated.
+ 533 .LVL66:
+ 569:Src/usbd_hid.c ****
+ 534 .loc 1 569 0
+ 535 @ sp needed
+ 536 0000 7047 bx lr
+ 537 .cfi_endproc
+ 538 .LFE50:
+ 540 .section .text.USBD_HID_DataOut,"ax",%progbits
+ 541 .align 1
+ 542 .syntax unified
+ 543 .code 16
+ 544 .thumb_func
+ 545 .fpu softvfp
+ ARM GAS /tmp/ccE5JjBw.s page 22
+
+
+ 547 USBD_HID_DataOut:
+ 548 .LFB51:
+ 573:Src/usbd_hid.c **** int len;
+ 549 .loc 1 573 0
+ 550 .cfi_startproc
+ 551 @ args = 0, pretend = 0, frame = 0
+ 552 @ frame_needed = 0, uses_anonymous_args = 0
+ 553 .LVL67:
+ 554 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
+ 555 .LCFI4:
+ 556 .cfi_def_cfa_offset 24
+ 557 .cfi_offset 3, -24
+ 558 .cfi_offset 4, -20
+ 559 .cfi_offset 5, -16
+ 560 .cfi_offset 6, -12
+ 561 .cfi_offset 7, -8
+ 562 .cfi_offset 14, -4
+ 563 0002 0600 movs r6, r0
+ 579:Src/usbd_hid.c **** // data cpy so we can be ready for next usb out and used received data safely
+ 564 .loc 1 579 0
+ 565 0004 0C4A ldr r2, .L50
+ 566 0006 1368 ldr r3, [r2]
+ 567 0008 0133 adds r3, r3, #1
+ 568 000a 1360 str r3, [r2]
+ 581:Src/usbd_hid.c **** memcpy(OutDataBuffer,OutData, len);
+ 569 .loc 1 581 0
+ 570 000c FFF7FEFF bl USBD_LL_GetRxDataSize
+ 571 .LVL68:
+ 572 0010 0500 movs r5, r0
+ 573 .LVL69:
+ 582:Src/usbd_hid.c **** USBD_LL_PrepareReceive(pdev, HID_EPOUT_ADDR, OutData, HID_EPOUT_SIZE);
+ 574 .loc 1 582 0
+ 575 0012 0A4C ldr r4, .L50+4
+ 576 0014 0A4F ldr r7, .L50+8
+ 577 0016 0200 movs r2, r0
+ 578 0018 3900 movs r1, r7
+ 579 001a 2000 movs r0, r4
+ 580 .LVL70:
+ 581 001c FFF7FEFF bl memcpy
+ 582 .LVL71:
+ 583:Src/usbd_hid.c **** USBD_HID_GetReport(OutDataBuffer, len);
+ 583 .loc 1 583 0
+ 584 0020 0823 movs r3, #8
+ 585 0022 3A00 movs r2, r7
+ 586 0024 0121 movs r1, #1
+ 587 0026 3000 movs r0, r6
+ 588 0028 FFF7FEFF bl USBD_LL_PrepareReceive
+ 589 .LVL72:
+ 584:Src/usbd_hid.c **** return USBD_OK;
+ 590 .loc 1 584 0
+ 591 002c 2900 movs r1, r5
+ 592 002e 2000 movs r0, r4
+ 593 0030 FFF7FEFF bl USBD_HID_GetReport
+ 594 .LVL73:
+ 586:Src/usbd_hid.c ****
+ 595 .loc 1 586 0
+ 596 0034 0020 movs r0, #0
+ ARM GAS /tmp/ccE5JjBw.s page 23
+
+
+ 597 @ sp needed
+ 598 .LVL74:
+ 599 .LVL75:
+ 600 0036 F8BD pop {r3, r4, r5, r6, r7, pc}
+ 601 .L51:
+ 602 .align 2
+ 603 .L50:
+ 604 0038 00000000 .word nOutData
+ 605 003c 00000000 .word OutDataBuffer
+ 606 0040 00000000 .word OutData
+ 607 .cfi_endproc
+ 608 .LFE51:
+ 610 .comm OutData,8,4
+ 611 .comm OutDataBuffer,8,4
+ 612 .comm nOutData,4,4
+ 613 .global USBD_HID
+ 614 .section .data.HID_ReportDesc,"aw",%progbits
+ 615 .align 2
+ 616 .set .LANCHOR2,. + 0
+ 619 HID_ReportDesc:
+ 620 0000 05 .byte 5
+ 621 0001 01 .byte 1
+ 622 0002 09 .byte 9
+ 623 0003 06 .byte 6
+ 624 0004 A1 .byte -95
+ 625 0005 01 .byte 1
+ 626 0006 85 .byte -123
+ 627 0007 01 .byte 1
+ 628 0008 05 .byte 5
+ 629 0009 07 .byte 7
+ 630 000a 19 .byte 25
+ 631 000b E0 .byte -32
+ 632 000c 29 .byte 41
+ 633 000d E7 .byte -25
+ 634 000e 15 .byte 21
+ 635 000f 00 .byte 0
+ 636 0010 25 .byte 37
+ 637 0011 01 .byte 1
+ 638 0012 75 .byte 117
+ 639 0013 01 .byte 1
+ 640 0014 95 .byte -107
+ 641 0015 08 .byte 8
+ 642 0016 81 .byte -127
+ 643 0017 02 .byte 2
+ 644 0018 95 .byte -107
+ 645 0019 01 .byte 1
+ 646 001a 75 .byte 117
+ 647 001b 08 .byte 8
+ 648 001c 81 .byte -127
+ 649 001d 03 .byte 3
+ 650 001e 95 .byte -107
+ 651 001f 06 .byte 6
+ 652 0020 75 .byte 117
+ 653 0021 08 .byte 8
+ 654 0022 15 .byte 21
+ 655 0023 00 .byte 0
+ 656 0024 25 .byte 37
+ ARM GAS /tmp/ccE5JjBw.s page 24
+
+
+ 657 0025 65 .byte 101
+ 658 0026 05 .byte 5
+ 659 0027 07 .byte 7
+ 660 0028 19 .byte 25
+ 661 0029 00 .byte 0
+ 662 002a 29 .byte 41
+ 663 002b 65 .byte 101
+ 664 002c 81 .byte -127
+ 665 002d 00 .byte 0
+ 666 002e C0 .byte -64
+ 667 002f 05 .byte 5
+ 668 0030 0C .byte 12
+ 669 0031 09 .byte 9
+ 670 0032 01 .byte 1
+ 671 0033 A1 .byte -95
+ 672 0034 01 .byte 1
+ 673 0035 85 .byte -123
+ 674 0036 02 .byte 2
+ 675 0037 19 .byte 25
+ 676 0038 00 .byte 0
+ 677 0039 2A .byte 42
+ 678 003a 3C .byte 60
+ 679 003b 02 .byte 2
+ 680 003c 15 .byte 21
+ 681 003d 00 .byte 0
+ 682 003e 26 .byte 38
+ 683 003f 3C .byte 60
+ 684 0040 02 .byte 2
+ 685 0041 95 .byte -107
+ 686 0042 01 .byte 1
+ 687 0043 75 .byte 117
+ 688 0044 10 .byte 16
+ 689 0045 81 .byte -127
+ 690 0046 00 .byte 0
+ 691 0047 C0 .byte -64
+ 692 .section .data.USBD_HID,"aw",%progbits
+ 693 .align 2
+ 696 USBD_HID:
+ 697 0000 00000000 .word USBD_HID_Init
+ 698 0004 00000000 .word USBD_HID_DeInit
+ 699 0008 00000000 .word USBD_HID_Setup
+ 700 000c 00000000 .word 0
+ 701 0010 00000000 .word 0
+ 702 0014 00000000 .word USBD_HID_DataIn
+ 703 0018 00000000 .word USBD_HID_DataOut
+ 704 001c 00000000 .word 0
+ 705 0020 00000000 .word 0
+ 706 0024 00000000 .word 0
+ 707 0028 00000000 .word USBD_HID_GetCfgDesc
+ 708 002c 00000000 .word USBD_HID_GetCfgDesc
+ 709 0030 00000000 .word USBD_HID_GetCfgDesc
+ 710 0034 00000000 .word USBD_HID_GetDeviceQualifierDesc
+ 711 .section .data.USBD_HID_CfgDesc,"aw",%progbits
+ 712 .align 2
+ 713 .set .LANCHOR0,. + 0
+ 716 USBD_HID_CfgDesc:
+ 717 0000 09 .byte 9
+ ARM GAS /tmp/ccE5JjBw.s page 25
+
+
+ 718 0001 02 .byte 2
+ 719 0002 22 .byte 34
+ 720 0003 00 .byte 0
+ 721 0004 01 .byte 1
+ 722 0005 01 .byte 1
+ 723 0006 00 .byte 0
+ 724 0007 E0 .byte -32
+ 725 0008 32 .byte 50
+ 726 0009 09 .byte 9
+ 727 000a 04 .byte 4
+ 728 000b 00 .byte 0
+ 729 000c 00 .byte 0
+ 730 000d 01 .byte 1
+ 731 000e 03 .byte 3
+ 732 000f 01 .byte 1
+ 733 0010 01 .byte 1
+ 734 0011 00 .byte 0
+ 735 0012 09 .byte 9
+ 736 0013 21 .byte 33
+ 737 0014 11 .byte 17
+ 738 0015 01 .byte 1
+ 739 0016 00 .byte 0
+ 740 0017 01 .byte 1
+ 741 0018 22 .byte 34
+ 742 0019 48 .byte 72
+ 743 001a 00 .byte 0
+ 744 001b 07 .byte 7
+ 745 001c 05 .byte 5
+ 746 001d 81 .byte -127
+ 747 001e 03 .byte 3
+ 748 001f 10 .byte 16
+ 749 0020 00 .byte 0
+ 750 0021 0A .byte 10
+ 751 .section .data.USBD_HID_Desc,"aw",%progbits
+ 752 .align 2
+ 753 .set .LANCHOR3,. + 0
+ 756 USBD_HID_Desc:
+ 757 0000 09 .byte 9
+ 758 0001 21 .byte 33
+ 759 0002 11 .byte 17
+ 760 0003 01 .byte 1
+ 761 0004 00 .byte 0
+ 762 0005 01 .byte 1
+ 763 0006 22 .byte 34
+ 764 0007 48 .byte 72
+ 765 0008 00 .byte 0
+ 766 .section .data.USBD_HID_DeviceQualifierDesc,"aw",%progbits
+ 767 .align 2
+ 768 .set .LANCHOR1,. + 0
+ 771 USBD_HID_DeviceQualifierDesc:
+ 772 0000 0A .byte 10
+ 773 0001 06 .byte 6
+ 774 0002 00 .byte 0
+ 775 0003 02 .byte 2
+ 776 0004 00 .byte 0
+ 777 0005 00 .byte 0
+ 778 0006 00 .byte 0
+ ARM GAS /tmp/ccE5JjBw.s page 26
+
+
+ 779 0007 40 .byte 64
+ 780 0008 01 .byte 1
+ 781 0009 00 .byte 0
+ 782 .text
+ 783 .Letext0:
+ 784 .file 2 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/machin
+ 785 .file 3 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/lo
+ 786 .file 4 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_t
+ 787 .file 5 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/lib/gcc/arm-none-eabi/7.3.1/
+ 788 .file 6 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/re
+ 789 .file 7 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_s
+ 790 .file 8 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/stdlib
+ 791 .file 9 "Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h"
+ 792 .file 10 "Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h"
+ 793 .file 11 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
+ 794 .file 12 "Inc/usbd_hid.h"
+ 795 .file 13 "Inc/usbd_desc.h"
+ 796 .file 14 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h"
+ 797 .file 15 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h"
+ 798 .file 16 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h"
+ 799 .file 17 "<built-in>"
+ ARM GAS /tmp/ccE5JjBw.s page 27
+
+
+DEFINED SYMBOLS
+ *ABS*:0000000000000000 usbd_hid.c
+ /tmp/ccE5JjBw.s:16 .text.USBD_HID_GetCfgDesc:0000000000000000 $t
+ /tmp/ccE5JjBw.s:22 .text.USBD_HID_GetCfgDesc:0000000000000000 USBD_HID_GetCfgDesc
+ /tmp/ccE5JjBw.s:42 .text.USBD_HID_GetCfgDesc:0000000000000008 $d
+ /tmp/ccE5JjBw.s:47 .text.USBD_HID_DataIn:0000000000000000 $t
+ /tmp/ccE5JjBw.s:53 .text.USBD_HID_DataIn:0000000000000000 USBD_HID_DataIn
+ /tmp/ccE5JjBw.s:76 .text.USBD_HID_GetDeviceQualifierDesc:0000000000000000 $t
+ /tmp/ccE5JjBw.s:82 .text.USBD_HID_GetDeviceQualifierDesc:0000000000000000 USBD_HID_GetDeviceQualifierDesc
+ /tmp/ccE5JjBw.s:101 .text.USBD_HID_GetDeviceQualifierDesc:0000000000000008 $d
+ /tmp/ccE5JjBw.s:106 .text.USBD_HID_Setup:0000000000000000 $t
+ /tmp/ccE5JjBw.s:112 .text.USBD_HID_Setup:0000000000000000 USBD_HID_Setup
+ /tmp/ccE5JjBw.s:307 .text.USBD_HID_Setup:00000000000000c0 $d
+ /tmp/ccE5JjBw.s:313 .text.USBD_HID_DeInit:0000000000000000 $t
+ /tmp/ccE5JjBw.s:319 .text.USBD_HID_DeInit:0000000000000000 USBD_HID_DeInit
+ /tmp/ccE5JjBw.s:366 .text.USBD_HID_Init:0000000000000000 $t
+ /tmp/ccE5JjBw.s:372 .text.USBD_HID_Init:0000000000000000 USBD_HID_Init
+ /tmp/ccE5JjBw.s:423 .text.USBD_HID_SendReport:0000000000000000 $t
+ /tmp/ccE5JjBw.s:430 .text.USBD_HID_SendReport:0000000000000000 USBD_HID_SendReport
+ /tmp/ccE5JjBw.s:483 .text.USBD_HID_GetPollingInterval:0000000000000000 $t
+ /tmp/ccE5JjBw.s:490 .text.USBD_HID_GetPollingInterval:0000000000000000 USBD_HID_GetPollingInterval
+ /tmp/ccE5JjBw.s:519 .text.USBD_HID_GetReport:0000000000000000 $t
+ /tmp/ccE5JjBw.s:526 .text.USBD_HID_GetReport:0000000000000000 USBD_HID_GetReport
+ /tmp/ccE5JjBw.s:541 .text.USBD_HID_DataOut:0000000000000000 $t
+ /tmp/ccE5JjBw.s:547 .text.USBD_HID_DataOut:0000000000000000 USBD_HID_DataOut
+ /tmp/ccE5JjBw.s:604 .text.USBD_HID_DataOut:0000000000000038 $d
+ *COM*:0000000000000004 nOutData
+ *COM*:0000000000000008 OutDataBuffer
+ *COM*:0000000000000008 OutData
+ /tmp/ccE5JjBw.s:696 .data.USBD_HID:0000000000000000 USBD_HID
+ /tmp/ccE5JjBw.s:615 .data.HID_ReportDesc:0000000000000000 $d
+ /tmp/ccE5JjBw.s:619 .data.HID_ReportDesc:0000000000000000 HID_ReportDesc
+ /tmp/ccE5JjBw.s:693 .data.USBD_HID:0000000000000000 $d
+ /tmp/ccE5JjBw.s:712 .data.USBD_HID_CfgDesc:0000000000000000 $d
+ /tmp/ccE5JjBw.s:716 .data.USBD_HID_CfgDesc:0000000000000000 USBD_HID_CfgDesc
+ /tmp/ccE5JjBw.s:752 .data.USBD_HID_Desc:0000000000000000 $d
+ /tmp/ccE5JjBw.s:756 .data.USBD_HID_Desc:0000000000000000 USBD_HID_Desc
+ /tmp/ccE5JjBw.s:767 .data.USBD_HID_DeviceQualifierDesc:0000000000000000 $d
+ /tmp/ccE5JjBw.s:771 .data.USBD_HID_DeviceQualifierDesc:0000000000000000 USBD_HID_DeviceQualifierDesc
+
+UNDEFINED SYMBOLS
+USBD_CtlSendData
+USBD_CtlError
+USBD_LL_CloseEP
+free
+USBD_LL_OpenEP
+malloc
+USBD_LL_Transmit
+USBD_LL_GetRxDataSize
+memcpy
+USBD_LL_PrepareReceive