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