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 **** *

© COPYRIGHT 2015 STMicroelectronics

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 "" 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