minikbd/hid-dials/build/usbd_hid.lst
2020-04-01 00:40:03 +02:00

1578 lines
66 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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