summaryrefslogtreecommitdiff
path: root/hid-dials/build/usbd_hid.lst
blob: fe51ad723cf473ee99913e38c59c6a4b29621b7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
ARM GAS  /tmp/ccE5JjBw.s 			page 1


   1              		.cpu cortex-m0
   2              		.eabi_attribute 20, 1
   3              		.eabi_attribute 21, 1
   4              		.eabi_attribute 23, 3
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 1
   9              		.eabi_attribute 34, 0
  10              		.eabi_attribute 18, 4
  11              		.file	"usbd_hid.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.section	.text.USBD_HID_GetCfgDesc,"ax",%progbits
  16              		.align	1
  17              		.syntax unified
  18              		.code	16
  19              		.thumb_func
  20              		.fpu softvfp
  22              	USBD_HID_GetCfgDesc:
  23              	.LFB48:
  24              		.file 1 "Src/usbd_hid.c"
   1:Src/usbd_hid.c **** /**
   2:Src/usbd_hid.c ****   ******************************************************************************
   3:Src/usbd_hid.c ****   * @file    usbd_hid.c
   4:Src/usbd_hid.c ****   * @author  MCD Application Team
   5:Src/usbd_hid.c ****   * @version V2.4.2
   6:Src/usbd_hid.c ****   * @date    11-December-2015
   7:Src/usbd_hid.c ****   * @brief   This file provides the HID core functions.
   8:Src/usbd_hid.c ****   *
   9:Src/usbd_hid.c ****   * @verbatim
  10:Src/usbd_hid.c ****   *      
  11:Src/usbd_hid.c ****   *          ===================================================================      
  12:Src/usbd_hid.c ****   *                                HID Class  Description
  13:Src/usbd_hid.c ****   *          =================================================================== 
  14:Src/usbd_hid.c ****   *           This module manages the HID class V1.11 following the "Device Class Definition
  15:Src/usbd_hid.c ****   *           for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
  16:Src/usbd_hid.c ****   *           This driver implements the following aspects of the specification:
  17:Src/usbd_hid.c ****   *             - The Boot Interface Subclass
  18:Src/usbd_hid.c ****   *             - The Mouse protocol
  19:Src/usbd_hid.c ****   *             - Usage Page : Generic Desktop
  20:Src/usbd_hid.c ****   *             - Usage : Joystick
  21:Src/usbd_hid.c ****   *             - Collection : Application 
  22:Src/usbd_hid.c ****   *      
  23:Src/usbd_hid.c ****   * @note     In HS mode and when the DMA is used, all variables and data structures
  24:Src/usbd_hid.c ****   *           dealing with the DMA during the transaction process should be 32-bit aligned.
  25:Src/usbd_hid.c ****   *           
  26:Src/usbd_hid.c ****   *      
  27:Src/usbd_hid.c ****   *  @endverbatim
  28:Src/usbd_hid.c ****   *
  29:Src/usbd_hid.c ****   ******************************************************************************
  30:Src/usbd_hid.c ****   * @attention
  31:Src/usbd_hid.c ****   *
  32:Src/usbd_hid.c ****   * <h2><center>&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