diff options
Diffstat (limited to 'hid-dials/build/usbd_hid.lst')
-rw-r--r-- | hid-dials/build/usbd_hid.lst | 1578 |
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>© 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 |