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