Commit 37b300705fc6652e3ff1cf408394c5bf3053b950

Authored by dmohamed
1 parent 578d45af

CLEAN-Supression de fichiers inutiles

.USB_gadget.c.swp 0 → 100644
No preview for this file type
gadget/USB_gadget.bin deleted
No preview for this file type
gadget/USB_gadget.eep deleted
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -:00000001FF  
gadget/USB_gadget.elf deleted
No preview for this file type
gadget/USB_gadget.hex deleted
@@ -1,258 +0,0 @@ @@ -1,258 +0,0 @@
1 -:1000000088C00000A1C000009FC000009DC000008B  
2 -:100010009BC0000099C0000097C0000095C0000080  
3 -:1000200093C0000091C000008FC00000F9C3000021  
4 -:100030009CC4000089C0000087C0000085C000008B  
5 -:1000400083C0000081C000007FC000007DC00000B0  
6 -:100050007BC0000079C0000077C000006AC10000CA  
7 -:1000600073C0000071C000006FC000006DC00000D0  
8 -:100070006BC000002E034C005500460041002000DC  
9 -:100080005500530042002D0052005300320033004F  
10 -:1000900032002000410064006100700074006500BF  
11 -:1000A0007200000018034400650061006E0020002B  
12 -:1000B000430061006D0065007200610000000403F0  
13 -:1000C000090409023E00020100C0320904000001D7  
14 -:1000D0000202010005240010010424020605240682  
15 -:1000E0000001070582030800FF09040100020A005D  
16 -:1000F0000000070504021000050705830210000533  
17 -:100100001201100102000008EB034B200100010264  
18 -:10011000DC0111241FBECFEFD2E0DEBFCDBF11E066  
19 -:10012000A0E0B1E0E0EFFFE002C005900D92AC313D  
20 -:10013000B107D9F722E0ACE1B1E001C01D92A034D3  
21 -:10014000B207E1F75AD052C75BCF9BB1809590635D  
22 -:1001500089238BB90895FC01A081B1816C938081C2  
23 -:10016000918101969183808326813781821793073D  
24 -:1001700021F484819581918380832FB7F8948285BF  
25 -:1001800093850196938782872FBF0895FC01A281F2  
26 -:10019000B3818D91B383A28326813781A217B307E0  
27 -:1001A00021F424813581338322839FB7F8942285FB  
28 -:1001B000338521503109338722879FBF089584B743  
29 -:1001C000877F84BF0FB6F894A895809160008861FE  
30 -:1001D00080936000109260000FBE90E080E80FB640  
31 -:1001E000F89480936100909361000FBE8AB18063A0  
32 -:1001F0008AB98BB180638BB904C3E1DFE8E2F2E036  
33 -:100200004FB7F89488EA91E0918380839383828347  
34 -:100210009583848388E292E09783868320E830E0A8  
35 -:1002200031872087138612864FBFECE9F1E04FB784  
36 -:10023000F8948CE191E0918380839383828395830A  
37 -:1002400084838CE991E097838683318720871386A6  
38 -:1002500012864FBF80E279DF78948FB7F8942091AF  
39 -:100260003202309133028FBF80913002909131027F  
40 -:100270002817390749F080E091E0BAD597FD04C00E  
41 -:10028000682F88E292E067DF2FB7F8948091A6018B  
42 -:100290009091A7012FBF009729F48091C80085FD98  
43 -:1002A00021C032C0209101012F702093E9002091DC  
44 -:1002B000E80020FFF2CF8031910510F08FE090E050  
45 -:1002C000C82FE0919E01F0919F01608180E091E054  
46 -:1002D00027D5C1508111E1CF8CE991E057DFC111E1  
47 -:1002E000F0CFDBCF2FB7F894809132029091330298  
48 -:1002F0002FBF892B49F088E292E048DF9091C80037  
49 -:1003000095FFFCCF8093CE0080E091E05CD5CAD40D  
50 -:10031000A4CF80E11ACF80E218CF80E091E0DBD457  
51 -:10032000811102C080E201C080E10FCF80E091E046  
52 -:100330008CC51F920F920FB60F9211242F933F93EB  
53 -:100340004F935F936F937F938F939F93AF93BF93DD  
54 -:10035000EF93FF936091CE008EB3843089F48FB712  
55 -:10036000F8942091A6013091A7018FBF8091A4013C  
56 -:100370009091A5012817390719F08CE991E0EBDE7F  
57 -:10038000FF91EF91BF91AF919F918F917F916F916D  
58 -:100390005F914F913F912F910F900FBE0F901F9043  
59 -:1003A0001895CF93FC01818D813021F0823021F4AA  
60 -:1003B000C0E203C0C0E301C0C0E0808D823009F418  
61 -:1003C000C860828D873031F0883031F0863029F472  
62 -:1003D000C26003C0C46001C0C6605B9A1092C900CD  
63 -:1003E0001092C8001092CA0024893589468957891D  
64 -:1003F000DA01C901B695A79597958795BC01CD01FE  
65 -:10040000605C7D4B804F9F4FCFD521503109309399  
66 -:10041000CD002093CC00C093CA0082E08093C80036  
67 -:1004200088E98093C9005B98CF910895292F3327DD  
68 -:100430002230310559F02330310569F02130310582  
69 -:10044000F9F482E190E020E031E01EC08EE390E01C  
70 -:1004500022EC30E019C099278130910541F08230BB  
71 -:10046000910541F0892B61F4EEEBF0E005C0E4EA80  
72 -:10047000F0E002C0E4E7F0E0849190E09F0104C066  
73 -:1004800080E090E020E030E0FA013183208308959D  
74 -:1004900020913E0230913F022617370748F0611540  
75 -:1004A000710539F42091E8002E772093E80001C00F  
76 -:1004B000B90140E06115710579F12EB32223F1F104  
77 -:1004C0002530F1F12091E80023FD3CC02091E800A7  
78 -:1004D00022FD2EC02091E80020FFECCF2091F200F9  
79 -:1004E00030E0FC01CF016115710559F0283031056C  
80 -:1004F00040F481918093F100615071092F5F3F4F6B  
81 -:10050000F1CF41E02830310509F040E02091E800CA  
82 -:100510002E772093E800CECF4111CFCF09C08EB304  
83 -:10052000882361F0853061F08091E80083FD0AC086  
84 -:100530008091E80082FFF3CF80E0089582E0089583  
85 -:1005400083E0089581E0089520913E0230913F02BA  
86 -:100550002617370748F06115710539F42091E80036  
87 -:100560002E772093E80001C0B901FC0120E061155D  
88 -:10057000710561F18EB38823D9F18530D9F180916D  
89 -:10058000E80083FD39C08091E80082FD2BC0809196  
90 -:10059000E80080FFECCF8091F20090E061157105DA  
91 -:1005A00059F08830910540F424912093F100319660  
92 -:1005B000615071090196F2CF21E0089709F020E01F  
93 -:1005C0008091E8008E778093E800D1CF2111D2CFBF  
94 -:1005D00009C08EB3882361F0853061F08091E80016  
95 -:1005E00083FD0AC08091E80082FFF3CF80E0089588  
96 -:1005F00082E0089583E0089581E00895982F953072  
97 -:1006000058F59093E900981739F07091EC0020911B  
98 -:10061000ED005091F00003C0242F762F50E021FF11  
99 -:1006200019C03091EB003E7F3093EB003091ED002C  
100 -:100630003D7F3093ED003091EB0031603093EB0063  
101 -:100640007093EC002093ED005093F0002091EE00A9  
102 -:1006500027FF07C09F5FD3CF8F708093E90081E0B1  
103 -:10066000089580E00895EF92FF920F931F93CF9328  
104 -:10067000DF93E62EEC018C010C5F1F4FF12CFE1472  
105 -:1006800099F19881992359F1F801208169817A8142  
106 -:1006900031973081892F8F70853010F080E025C030  
107 -:1006A000223010F442E001C046E0E8E0F0E020E053  
108 -:1006B000E617F70720F42F5FEE0FFF1FF9CF229503  
109 -:1006C000207F422B232F2295220F220F207C991F5F  
110 -:1006D0009927991F622F692B91DF8823F9F2F394F0  
111 -:1006E00025960B5F1F4FCBCF81E0DF91CF911F91FC  
112 -:1006F0000F91FF90EF9008958091380287FF0FC00F  
113 -:100700008091E80082FD04C08EB38111F9CF10C042  
114 -:100710008091E8008B770AC08EB3882349F08091DE  
115 -:10072000E80080FFF9CF8091E8008E778093E800A1  
116 -:1007300008952091E4003091E50095E64091EC00A9  
117 -:10074000842F817040FF21C08091E80080FD1BC094  
118 -:100750008EB3882391F0853091F08091EB0085FD78  
119 -:1007600010C04091E4005091E5004217530731F367  
120 -:100770009A01915019F784E0089582E0089583E08A  
121 -:10078000089581E0089580E008954091E80042FFD7  
122 -:10079000DFCF08953FD041D08091D8008F778093EC  
123 -:1007A000D8008091D80080688093D8008091D800CC  
124 -:1007B0008F7D8093D80019BC82E089BD09B400FE0A  
125 -:1007C000FDCF1EBA109234021092360210923502FA  
126 -:1007D00042E060E080E012DF8091E1008E7F809354  
127 -:1007E000E1008091E20081608093E2008091E2006C  
128 -:1007F00088608093E2008091E0008E7F8093E0002B  
129 -:100800000895E3E6F0E080818E7F808381E080932D  
130 -:100810003702C0CF1092E20008951092E1000895CF  
131 -:100820001F920F920FB60F9211242F933F934F9365  
132 -:100830005F936F937F938F939F93AF93BF93EF9348  
133 -:10084000FF938091E10082FF0AC08091E20082FF65  
134 -:1008500006C08091E1008B7F8093E10022D28091DD  
135 -:10086000E10080FF16C08091E20080FF12C08091FD  
136 -:10087000E2008E7F8093E2008091E20080618093AD  
137 -:10088000E2008091D80080628093D80019BC1EBA23  
138 -:1008900042DD8091E10084FF2DC08091E20084FF61  
139 -:1008A00029C019BC82E089BD09B400FEFDCF80914A  
140 -:1008B000D8008F7D8093D8008091E1008F7E809357  
141 -:1008C000E1008091E2008F7E8093E2008091E2005F  
142 -:1008D00081608093E20080913402882311F084E0EB  
143 -:1008E00007C08091E30087FD02C081E001C083E082  
144 -:1008F0008EBB0FDD8091E10083FF26C08091E20076  
145 -:1009000083FF22C08091E100877F8093E10082E035  
146 -:100910008EBB109234028091E1008E7F8093E100C3  
147 -:100920008091E2008E7F8093E2008091E2008061FE  
148 -:100930008093E20042E060E080E060DE8091F000C1  
149 -:1009400088608093F000ADD1FF91EF91BF91AF919E  
150 -:100950009F918F917F916F915F914F913F912F91D7  
151 -:100960000F900FBE0F901F9018951F920F920FB609  
152 -:100970000F9211242F933F934F935F936F937F9325  
153 -:100980008F939F93AF93BF93CF93DF93EF93FF9397  
154 -:10099000C091E900CF708091EC00D82FD17080FD1C  
155 -:1009A000D0E81092E9008091F000877F8093F000FA  
156 -:1009B00078941ED01092E9008091F00088608093B6  
157 -:1009C000F000CD2BCF70C093E900FF91EF91DF9144  
158 -:1009D000CF91BF91AF919F918F917F916F915F91D7  
159 -:1009E0004F913F912F910F900FBE0F901F90189530  
160 -:1009F0001F93CF93DF93CDB7DEB7AA970FB6F894C6  
161 -:100A0000DEBF0FBECDBFE8E3F2E088E08E0F90912D  
162 -:100A1000F10091938E13FBCF89DC8091E80083FF76  
163 -:100A200028C18091380290913902953009F483C031  
164 -:100A300030F49130A9F168F0933091F11AC19830F7  
165 -:100A400009F4EDC0993009F4F9C0963009F011C1EC  
166 -:100A500093C0803821F0823809F00BC108C0809122  
167 -:100A6000350290913602992389F082600FC08091FF  
168 -:100A70003C028F70853008F0FCC08093E9008091C3  
169 -:100A8000EB0085FB882780F91092E9009091E8003F  
170 -:100A9000977F9093E8008093F1001092F100CAC014  
171 -:100AA000282F2D7F09F0E5C0882319F0823061F0EE  
172 -:100AB000E0C080913A02813009F0DBC0933009F048  
173 -:100AC00080E0809336022EC080913A0281112AC0C4  
174 -:100AD00080913C028F702FEF280F243008F0C9C09E  
175 -:100AE0008093E9002091EB0020FF1CC0933021F49B  
176 -:100AF0008091EB00806214C09091EB009061909324  
177 -:100B0000EB0021E030E0A90102C0440F551F8A9597  
178 -:100B1000E2F74093EA001092EA008091EB008860CF  
179 -:100B20008093EB001092E9008091E800877F80932A  
180 -:100B3000E800E2DD9EC081119CC010913A021F774F  
181 -:100B40008091E3008078812B8093E3008091E8001E  
182 -:100B5000877F8093E800D0DD8091E80080FFFCCFA4  
183 -:100B60008091E30080688093E300111102C082E06D  
184 -:100B700001C083E08EBB7DC08058823008F079C010  
185 -:100B800080913A0290913B028C3D53E0950771F5BC  
186 -:100B900083E08A838AE289834FB7F894DE01139653  
187 -:100BA00020E03EE051E2E32FF0E050935700E49163  
188 -:100BB00020FF03C0E295EF703F5FEF708E2F90E053  
189 -:100BC000EA3010F0C79601C0C0968D939D932F5FB9  
190 -:100BD000243149F74FBF8091E800877F8093E80078  
191 -:100BE0006AE270E0CE01019653DC13C060913C02D2  
192 -:100BF00070913D02AE014F5F5F4F18DCBC01892B45  
193 -:100C0000C1F19091E800977F9093E80089819A81E3  
194 -:100C10009BDC8091E8008B778093E8002AC08038C5  
195 -:100C200041F58091E800877F8093E800809134024D  
196 -:100C30008093F1008091E8008E7779CF811119C0FF  
197 -:100C400090913A029230A8F48091E800877F8093D7  
198 -:100C5000E8009093340250DD80913402811106C087  
199 -:100C60008091E30087FD02C081E001C084E08EBB7B  
200 -:100C700054DB8091E80083FF0AC08091E800877F01  
201 -:100C80008093E8008091EB0080628093EB00AA964D  
202 -:100C90000FB6F894DEBF0FBECDBFDF91CF911F918D  
203 -:100CA00008950895CF938EB3882399F0C091E900F9  
204 -:100CB000CF709091EC00892F817090FD80E8C82B57  
205 -:100CC0001092E9008091E80083FD92DECF70C0931E  
206 -:100CD000E900CF910895CF93DF93EC01FC0170966A  
207 -:100CE0008BE0DF011D928A95E9F782E08C8389878A  
208 -:100CF00083E08E8761E0CE010196B5DC882361F048  
209 -:100D000061E0CE010696AFDC882331F061E0CE01D0  
210 -:100D10000B96DF91CF91A7CC80E0DF91CF91089522  
211 -:100D20000F931F93CF932EB32430F9F4FC01048961  
212 -:100D3000158926893789012B022B032BB1F0C62F89  
213 -:100D400081818F708093E9008091E80085FF04C065  
214 -:100D5000C093F10080E00AC08091E8008E77809314  
215 -:100D6000E800E7DC8823A1F301C082E0CF911F9166  
216 -:100D70000F9108952EB3243021F5FC014489558943  
217 -:100D800066897789452B462B472BD9F081818F7057  
218 -:100D90008093E9008091F200882389F09091E80027  
219 -:100DA0008091E8008E778093E80095FD08C0C1DC53  
220 -:100DB000811108C08091E8008E778093E80080E080  
221 -:100DC000089582E008952EB3243089F4FC0144890B  
222 -:100DD000558966897789452B462B472B41F0218120  
223 -:100DE0002F702093E9002091E80020FDC3CF0895E3  
224 -:100DF0002EB3243019F08FEF9FEF0895FC01448942  
225 -:100E0000558966897789452B462B472BA1F3868127  
226 -:100E10008F708093E9008091E80082FFECCF809191  
227 -:100E2000F200882321F02091F10030E002C02FEF82  
228 -:100E30003FEF8091F200811105C08091E8008B772F  
229 -:100E40008093E800C90108950895CF93DF93EC01E2  
230 -:100E50008091E80083FFA5C0888190E020913C024A  
231 -:100E600030913D022817390709F09BC08091390263  
232 -:100E7000813261F020F4803209F43EC092C08232A7  
233 -:100E800009F46BC0833209F47CC08BC080913802B6  
234 -:100E9000813A09F086C08091E800877F8093E8005E  
235 -:100EA0008091E80080FFFCCF8C899D89AE89BF8945  
236 -:100EB0008093F100492F5A2F6B2F77274093F10031  
237 -:100EC000AD01662777274093F1008B2F9927AA273A  
238 -:100ED000BB278093F100888D8093F100898D8093EA  
239 -:100EE000F1008A8D8093F1008091E8008E778093E5  
240 -:100EF000E800DF91CF9100CC80913802813209F077  
241 -:100F000050C08091E800877F8093E8008091E800DE  
242 -:100F100082FD04C08EB38111F9CF43C03091F1003E  
243 -:100F20002091F1009091F1008091F1003C8B2D8B8C  
244 -:100F30009E8B8F8B8091F100888F8091F100898F3B  
245 -:100F40008091F1008A8F8091E8008B778093E80090  
246 -:100F5000D3DBCE01DF91CF9124CA80913802813258  
247 -:100F600001F58091E800877F8093E800C5DB8091E0  
248 -:100F70003A0290913B02998B888BCE01DF91CF9101  
249 -:100F800063CF80913802813261F48091E800877FDD  
250 -:100F90008093E800B1DB60913A02CE01DF91CF91FE  
251 -:100FA00053CFDF91CF910895A1E21A2EAA1BBB1B4C  
252 -:100FB000FD010DC0AA1FBB1FEE1FFF1FA217B30725  
253 -:100FC000E407F50720F0A21BB30BE40BF50B661F3B  
254 -:100FD000771F881F991F1A9469F7609570958095FF  
255 -:100FE00090959B01AC01BD01CF010895F894FFCF0E  
256 -:100FF00000831000000104100000018208000001BD  
257 -:0C100000000000000000000000000000E4  
258 -:00000001FF  
gadget/USB_gadget.lss deleted
@@ -1,3752 +0,0 @@ @@ -1,3752 +0,0 @@
1 -  
2 -USB_gadget.elf: format de fichier elf32-avr  
3 -  
4 -Sections :  
5 -Idx Nom Taille VMA LMA Fich off Algn  
6 - 0 .data 0000001c 00800100 00000ff0 00001084 2**0  
7 - CONTENTS, ALLOC, LOAD, DATA  
8 - 1 .text 00000ff0 00000000 00000000 00000094 2**1  
9 - CONTENTS, ALLOC, LOAD, READONLY, CODE  
10 - 2 .bss 00000124 0080011c 0080011c 000010a0 2**0  
11 - ALLOC  
12 - 3 .comment 00000011 00000000 00000000 000010a0 2**0  
13 - CONTENTS, READONLY  
14 - 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000010b4 2**2  
15 - CONTENTS, READONLY  
16 - 5 .debug_aranges 00000308 00000000 00000000 000010f4 2**0  
17 - CONTENTS, READONLY, DEBUGGING  
18 - 6 .debug_info 00005bcc 00000000 00000000 000013fc 2**0  
19 - CONTENTS, READONLY, DEBUGGING  
20 - 7 .debug_abbrev 0000158c 00000000 00000000 00006fc8 2**0  
21 - CONTENTS, READONLY, DEBUGGING  
22 - 8 .debug_line 000036c6 00000000 00000000 00008554 2**0  
23 - CONTENTS, READONLY, DEBUGGING  
24 - 9 .debug_frame 000008cc 00000000 00000000 0000bc1c 2**2  
25 - CONTENTS, READONLY, DEBUGGING  
26 - 10 .debug_str 0000246c 00000000 00000000 0000c4e8 2**0  
27 - CONTENTS, READONLY, DEBUGGING  
28 - 11 .debug_loc 00003926 00000000 00000000 0000e954 2**0  
29 - CONTENTS, READONLY, DEBUGGING  
30 - 12 .debug_ranges 00000420 00000000 00000000 0001227a 2**0  
31 - CONTENTS, READONLY, DEBUGGING  
32 -  
33 -Déassemblage de la section .text :  
34 -  
35 -00000000 <__vectors>:  
36 - 0: 88 c0 rjmp .+272 ; 0x112 <__ctors_end>  
37 - 2: 00 00 nop  
38 - 4: a1 c0 rjmp .+322 ; 0x148 <__bad_interrupt>  
39 - 6: 00 00 nop  
40 - 8: 9f c0 rjmp .+318 ; 0x148 <__bad_interrupt>  
41 - a: 00 00 nop  
42 - c: 9d c0 rjmp .+314 ; 0x148 <__bad_interrupt>  
43 - e: 00 00 nop  
44 - 10: 9b c0 rjmp .+310 ; 0x148 <__bad_interrupt>  
45 - 12: 00 00 nop  
46 - 14: 99 c0 rjmp .+306 ; 0x148 <__bad_interrupt>  
47 - 16: 00 00 nop  
48 - 18: 97 c0 rjmp .+302 ; 0x148 <__bad_interrupt>  
49 - 1a: 00 00 nop  
50 - 1c: 95 c0 rjmp .+298 ; 0x148 <__bad_interrupt>  
51 - 1e: 00 00 nop  
52 - 20: 93 c0 rjmp .+294 ; 0x148 <__bad_interrupt>  
53 - 22: 00 00 nop  
54 - 24: 91 c0 rjmp .+290 ; 0x148 <__bad_interrupt>  
55 - 26: 00 00 nop  
56 - 28: 8f c0 rjmp .+286 ; 0x148 <__bad_interrupt>  
57 - 2a: 00 00 nop  
58 - 2c: f9 c3 rjmp .+2034 ; 0x820 <__vector_11>  
59 - 2e: 00 00 nop  
60 - 30: 9c c4 rjmp .+2360 ; 0x96a <__vector_12>  
61 - 32: 00 00 nop  
62 - 34: 89 c0 rjmp .+274 ; 0x148 <__bad_interrupt>  
63 - 36: 00 00 nop  
64 - 38: 87 c0 rjmp .+270 ; 0x148 <__bad_interrupt>  
65 - 3a: 00 00 nop  
66 - 3c: 85 c0 rjmp .+266 ; 0x148 <__bad_interrupt>  
67 - 3e: 00 00 nop  
68 - 40: 83 c0 rjmp .+262 ; 0x148 <__bad_interrupt>  
69 - 42: 00 00 nop  
70 - 44: 81 c0 rjmp .+258 ; 0x148 <__bad_interrupt>  
71 - 46: 00 00 nop  
72 - 48: 7f c0 rjmp .+254 ; 0x148 <__bad_interrupt>  
73 - 4a: 00 00 nop  
74 - 4c: 7d c0 rjmp .+250 ; 0x148 <__bad_interrupt>  
75 - 4e: 00 00 nop  
76 - 50: 7b c0 rjmp .+246 ; 0x148 <__bad_interrupt>  
77 - 52: 00 00 nop  
78 - 54: 79 c0 rjmp .+242 ; 0x148 <__bad_interrupt>  
79 - 56: 00 00 nop  
80 - 58: 77 c0 rjmp .+238 ; 0x148 <__bad_interrupt>  
81 - 5a: 00 00 nop  
82 - 5c: 6a c1 rjmp .+724 ; 0x332 <__vector_23>  
83 - 5e: 00 00 nop  
84 - 60: 73 c0 rjmp .+230 ; 0x148 <__bad_interrupt>  
85 - 62: 00 00 nop  
86 - 64: 71 c0 rjmp .+226 ; 0x148 <__bad_interrupt>  
87 - 66: 00 00 nop  
88 - 68: 6f c0 rjmp .+222 ; 0x148 <__bad_interrupt>  
89 - 6a: 00 00 nop  
90 - 6c: 6d c0 rjmp .+218 ; 0x148 <__bad_interrupt>  
91 - 6e: 00 00 nop  
92 - 70: 6b c0 rjmp .+214 ; 0x148 <__bad_interrupt>  
93 - 72: 00 00 nop  
94 -  
95 -00000074 <ProductString>:  
96 - 74: 2e 03 4c 00 55 00 46 00 41 00 20 00 55 00 53 00 ..L.U.F.A. .U.S.  
97 - 84: 42 00 2d 00 52 00 53 00 32 00 33 00 32 00 20 00 B.-.R.S.2.3.2. .  
98 - 94: 41 00 64 00 61 00 70 00 74 00 65 00 72 00 00 00 A.d.a.p.t.e.r...  
99 -  
100 -000000a4 <ManufacturerString>:  
101 - a4: 18 03 44 00 65 00 61 00 6e 00 20 00 43 00 61 00 ..D.e.a.n. .C.a.  
102 - b4: 6d 00 65 00 72 00 61 00 00 00 m.e.r.a...  
103 -  
104 -000000be <LanguageString>:  
105 - be: 04 03 09 04 ....  
106 -  
107 -000000c2 <ConfigurationDescriptor>:  
108 - c2: 09 02 3e 00 02 01 00 c0 32 09 04 00 00 01 02 02 ..>.....2.......  
109 - d2: 01 00 05 24 00 10 01 04 24 02 06 05 24 06 00 01 ...$....$...$...  
110 - e2: 07 05 82 03 08 00 ff 09 04 01 00 02 0a 00 00 00 ................  
111 - f2: 07 05 04 02 10 00 05 07 05 83 02 10 00 05 ..............  
112 -  
113 -00000100 <DeviceDescriptor>:  
114 - 100: 12 01 10 01 02 00 00 08 eb 03 4b 20 01 00 01 02 ..........K ....  
115 - 110: dc 01 ..  
116 -  
117 -00000112 <__ctors_end>:  
118 - 112: 11 24 eor r1, r1  
119 - 114: 1f be out 0x3f, r1 ; 63  
120 - 116: cf ef ldi r28, 0xFF ; 255  
121 - 118: d2 e0 ldi r29, 0x02 ; 2  
122 - 11a: de bf out 0x3e, r29 ; 62  
123 - 11c: cd bf out 0x3d, r28 ; 61  
124 -  
125 -0000011e <__do_copy_data>:  
126 - 11e: 11 e0 ldi r17, 0x01 ; 1  
127 - 120: a0 e0 ldi r26, 0x00 ; 0  
128 - 122: b1 e0 ldi r27, 0x01 ; 1  
129 - 124: e0 ef ldi r30, 0xF0 ; 240  
130 - 126: ff e0 ldi r31, 0x0F ; 15  
131 - 128: 02 c0 rjmp .+4 ; 0x12e <__do_copy_data+0x10>  
132 - 12a: 05 90 lpm r0, Z+  
133 - 12c: 0d 92 st X+, r0  
134 - 12e: ac 31 cpi r26, 0x1C ; 28  
135 - 130: b1 07 cpc r27, r17  
136 - 132: d9 f7 brne .-10 ; 0x12a <__do_copy_data+0xc>  
137 -  
138 -00000134 <__do_clear_bss>:  
139 - 134: 22 e0 ldi r18, 0x02 ; 2  
140 - 136: ac e1 ldi r26, 0x1C ; 28  
141 - 138: b1 e0 ldi r27, 0x01 ; 1  
142 - 13a: 01 c0 rjmp .+2 ; 0x13e <.do_clear_bss_start>  
143 -  
144 -0000013c <.do_clear_bss_loop>:  
145 - 13c: 1d 92 st X+, r1  
146 -  
147 -0000013e <.do_clear_bss_start>:  
148 - 13e: a0 34 cpi r26, 0x40 ; 64  
149 - 140: b2 07 cpc r27, r18  
150 - 142: e1 f7 brne .-8 ; 0x13c <.do_clear_bss_loop>  
151 - 144: 5a d0 rcall .+180 ; 0x1fa <main>  
152 - 146: 52 c7 rjmp .+3748 ; 0xfec <_exit>  
153 -  
154 -00000148 <__bad_interrupt>:  
155 - 148: 5b cf rjmp .-330 ; 0x0 <__vectors>  
156 -  
157 -0000014a <LEDs_SetAllLEDs>:  
158 - PORTD |= LEDMask;  
159 - }  
160 -  
161 - static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)  
162 - {  
163 - PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask);  
164 - 14a: 9b b1 in r25, 0x0b ; 11  
165 - 14c: 80 95 com r24  
166 - 14e: 90 63 ori r25, 0x30 ; 48  
167 - 150: 89 23 and r24, r25  
168 - 152: 8b b9 out 0x0b, r24 ; 11  
169 - 154: 08 95 ret  
170 -  
171 -00000156 <RingBuffer_Insert>:  
172 - static inline void RingBuffer_Insert(RingBuffer_t* Buffer,  
173 - const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);  
174 - static inline void RingBuffer_Insert(RingBuffer_t* Buffer,  
175 - const uint8_t Data)  
176 - {  
177 - GCC_FORCE_POINTER_ACCESS(Buffer);  
178 - 156: fc 01 movw r30, r24  
179 -  
180 - *Buffer->In = Data;  
181 - 158: a0 81 ld r26, Z  
182 - 15a: b1 81 ldd r27, Z+1 ; 0x01  
183 - 15c: 6c 93 st X, r22  
184 -  
185 - if (++Buffer->In == Buffer->End)  
186 - 15e: 80 81 ld r24, Z  
187 - 160: 91 81 ldd r25, Z+1 ; 0x01  
188 - 162: 01 96 adiw r24, 0x01 ; 1  
189 - 164: 91 83 std Z+1, r25 ; 0x01  
190 - 166: 80 83 st Z, r24  
191 - 168: 26 81 ldd r18, Z+6 ; 0x06  
192 - 16a: 37 81 ldd r19, Z+7 ; 0x07  
193 - 16c: 82 17 cp r24, r18  
194 - 16e: 93 07 cpc r25, r19  
195 - 170: 21 f4 brne .+8 ; 0x17a <RingBuffer_Insert+0x24>  
196 - Buffer->In = Buffer->Start;  
197 - 172: 84 81 ldd r24, Z+4 ; 0x04  
198 - 174: 95 81 ldd r25, Z+5 ; 0x05  
199 - 176: 91 83 std Z+1, r25 ; 0x01  
200 - 178: 80 83 st Z, r24  
201 - static inline uint_reg_t GetGlobalInterruptMask(void)  
202 - {  
203 - GCC_MEMORY_BARRIER();  
204 -  
205 - #if (ARCH == ARCH_AVR8)  
206 - return SREG;  
207 - 17a: 2f b7 in r18, 0x3f ; 63  
208 - static inline void GlobalInterruptDisable(void)  
209 - {  
210 - GCC_MEMORY_BARRIER();  
211 -  
212 - #if (ARCH == ARCH_AVR8)  
213 - cli();  
214 - 17c: f8 94 cli  
215 -  
216 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
217 - GlobalInterruptDisable();  
218 -  
219 - Buffer->Count++;  
220 - 17e: 82 85 ldd r24, Z+10 ; 0x0a  
221 - 180: 93 85 ldd r25, Z+11 ; 0x0b  
222 - 182: 01 96 adiw r24, 0x01 ; 1  
223 - 184: 93 87 std Z+11, r25 ; 0x0b  
224 - 186: 82 87 std Z+10, r24 ; 0x0a  
225 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
226 - {  
227 - GCC_MEMORY_BARRIER();  
228 -  
229 - #if (ARCH == ARCH_AVR8)  
230 - SREG = GlobalIntState;  
231 - 188: 2f bf out 0x3f, r18 ; 63  
232 - __builtin_csrf(AVR32_SR_GM_OFFSET);  
233 - #elif (ARCH == ARCH_XMEGA)  
234 - SREG = GlobalIntState;  
235 - #endif  
236 -  
237 - GCC_MEMORY_BARRIER();  
238 - 18a: 08 95 ret  
239 -  
240 -0000018c <RingBuffer_Remove>:  
241 - * \return Next data element stored in the buffer.  
242 - */  
243 - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) ATTR_NON_NULL_PTR_ARG(1);  
244 - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer)  
245 - {  
246 - GCC_FORCE_POINTER_ACCESS(Buffer);  
247 - 18c: fc 01 movw r30, r24  
248 -  
249 - uint8_t Data = *Buffer->Out;  
250 - 18e: a2 81 ldd r26, Z+2 ; 0x02  
251 - 190: b3 81 ldd r27, Z+3 ; 0x03  
252 - 192: 8d 91 ld r24, X+  
253 -  
254 - if (++Buffer->Out == Buffer->End)  
255 - 194: b3 83 std Z+3, r27 ; 0x03  
256 - 196: a2 83 std Z+2, r26 ; 0x02  
257 - 198: 26 81 ldd r18, Z+6 ; 0x06  
258 - 19a: 37 81 ldd r19, Z+7 ; 0x07  
259 - 19c: a2 17 cp r26, r18  
260 - 19e: b3 07 cpc r27, r19  
261 - 1a0: 21 f4 brne .+8 ; 0x1aa <RingBuffer_Remove+0x1e>  
262 - Buffer->Out = Buffer->Start;  
263 - 1a2: 24 81 ldd r18, Z+4 ; 0x04  
264 - 1a4: 35 81 ldd r19, Z+5 ; 0x05  
265 - 1a6: 33 83 std Z+3, r19 ; 0x03  
266 - 1a8: 22 83 std Z+2, r18 ; 0x02  
267 - static inline uint_reg_t GetGlobalInterruptMask(void)  
268 - {  
269 - GCC_MEMORY_BARRIER();  
270 -  
271 - #if (ARCH == ARCH_AVR8)  
272 - return SREG;  
273 - 1aa: 9f b7 in r25, 0x3f ; 63  
274 - static inline void GlobalInterruptDisable(void)  
275 - {  
276 - GCC_MEMORY_BARRIER();  
277 -  
278 - #if (ARCH == ARCH_AVR8)  
279 - cli();  
280 - 1ac: f8 94 cli  
281 -  
282 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
283 - GlobalInterruptDisable();  
284 -  
285 - Buffer->Count--;  
286 - 1ae: 22 85 ldd r18, Z+10 ; 0x0a  
287 - 1b0: 33 85 ldd r19, Z+11 ; 0x0b  
288 - 1b2: 21 50 subi r18, 0x01 ; 1  
289 - 1b4: 31 09 sbc r19, r1  
290 - 1b6: 33 87 std Z+11, r19 ; 0x0b  
291 - 1b8: 22 87 std Z+10, r18 ; 0x0a  
292 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
293 - {  
294 - GCC_MEMORY_BARRIER();  
295 -  
296 - #if (ARCH == ARCH_AVR8)  
297 - SREG = GlobalIntState;  
298 - 1ba: 9f bf out 0x3f, r25 ; 63  
299 -  
300 - SetGlobalInterruptMask(CurrentGlobalInt);  
301 -  
302 - return Data;  
303 - }  
304 - 1bc: 08 95 ret  
305 -  
306 -000001be <SetupHardware>:  
307 -/** Configures the board hardware and chip peripherals for the demo's functionality. */  
308 -void SetupHardware(void)  
309 -{  
310 -#if (ARCH == ARCH_AVR8)  
311 - /* Disable watchdog if enabled by bootloader/fuses */  
312 - MCUSR &= ~(1 << WDRF);  
313 - 1be: 84 b7 in r24, 0x34 ; 52  
314 - 1c0: 87 7f andi r24, 0xF7 ; 247  
315 - 1c2: 84 bf out 0x34, r24 ; 52  
316 - );  
317 - }  
318 - else  
319 - {  
320 - uint8_t register temp_reg;  
321 - __asm__ __volatile__ (  
322 - 1c4: 0f b6 in r0, 0x3f ; 63  
323 - 1c6: f8 94 cli  
324 - 1c8: a8 95 wdr  
325 - 1ca: 80 91 60 00 lds r24, 0x0060  
326 - 1ce: 88 61 ori r24, 0x18 ; 24  
327 - 1d0: 80 93 60 00 sts 0x0060, r24  
328 - 1d4: 10 92 60 00 sts 0x0060, r1  
329 - 1d8: 0f be out 0x3f, r0 ; 63  
330 -from 1 to 129. Thus, one does not need to use \c clock_div_t type as argument.  
331 -*/  
332 -void clock_prescale_set(clock_div_t __x)  
333 -{  
334 - uint8_t __tmp = _BV(CLKPCE);  
335 - __asm__ __volatile__ (  
336 - 1da: 90 e0 ldi r25, 0x00 ; 0  
337 - 1dc: 80 e8 ldi r24, 0x80 ; 128  
338 - 1de: 0f b6 in r0, 0x3f ; 63  
339 - 1e0: f8 94 cli  
340 - 1e2: 80 93 61 00 sts 0x0061, r24  
341 - 1e6: 90 93 61 00 sts 0x0061, r25  
342 - 1ea: 0f be out 0x3f, r0 ; 63  
343 -  
344 - /* Inline Functions: */  
345 - #if !defined(__DOXYGEN__)  
346 - static inline void LEDs_Init(void)  
347 - {  
348 - DDRD |= LEDS_ALL_LEDS;  
349 - 1ec: 8a b1 in r24, 0x0a ; 10  
350 - 1ee: 80 63 ori r24, 0x30 ; 48  
351 - 1f0: 8a b9 out 0x0a, r24 ; 10  
352 - PORTD |= LEDS_ALL_LEDS;  
353 - 1f2: 8b b1 in r24, 0x0b ; 11  
354 - 1f4: 80 63 ori r24, 0x30 ; 48  
355 - 1f6: 8b b9 out 0x0b, r24 ; 11  
356 - clock_prescale_set(clock_div_1);  
357 -#endif  
358 -  
359 - /* Hardware Initialization */  
360 - LEDs_Init();  
361 - USB_Init();  
362 - 1f8: 04 c3 rjmp .+1544 ; 0x802 <USB_Init>  
363 -  
364 -000001fa <main>:  
365 -/** Main program entry point. This routine contains the overall program flow, including initial  
366 - * setup of all components and the main program loop.  
367 - */  
368 -int main(void)  
369 -{  
370 - SetupHardware();  
371 - 1fa: e1 df rcall .-62 ; 0x1be <SetupHardware>  
372 - const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);  
373 - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer,  
374 - uint8_t* const DataPtr,  
375 - const uint16_t Size)  
376 - {  
377 - GCC_FORCE_POINTER_ACCESS(Buffer);  
378 - 1fc: e8 e2 ldi r30, 0x28 ; 40  
379 - 1fe: f2 e0 ldi r31, 0x02 ; 2  
380 - static inline uint_reg_t GetGlobalInterruptMask(void)  
381 - {  
382 - GCC_MEMORY_BARRIER();  
383 -  
384 - #if (ARCH == ARCH_AVR8)  
385 - return SREG;  
386 - 200: 4f b7 in r20, 0x3f ; 63  
387 - static inline void GlobalInterruptDisable(void)  
388 - {  
389 - GCC_MEMORY_BARRIER();  
390 -  
391 - #if (ARCH == ARCH_AVR8)  
392 - cli();  
393 - 202: f8 94 cli  
394 -  
395 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
396 - GlobalInterruptDisable();  
397 -  
398 - Buffer->In = DataPtr;  
399 - 204: 88 ea ldi r24, 0xA8 ; 168  
400 - 206: 91 e0 ldi r25, 0x01 ; 1  
401 - 208: 91 83 std Z+1, r25 ; 0x01  
402 - 20a: 80 83 st Z, r24  
403 - Buffer->Out = DataPtr;  
404 - 20c: 93 83 std Z+3, r25 ; 0x03  
405 - 20e: 82 83 std Z+2, r24 ; 0x02  
406 - Buffer->Start = &DataPtr[0];  
407 - 210: 95 83 std Z+5, r25 ; 0x05  
408 - 212: 84 83 std Z+4, r24 ; 0x04  
409 - Buffer->End = &DataPtr[Size];  
410 - 214: 88 e2 ldi r24, 0x28 ; 40  
411 - 216: 92 e0 ldi r25, 0x02 ; 2  
412 - 218: 97 83 std Z+7, r25 ; 0x07  
413 - 21a: 86 83 std Z+6, r24 ; 0x06  
414 - Buffer->Size = Size;  
415 - 21c: 20 e8 ldi r18, 0x80 ; 128  
416 - 21e: 30 e0 ldi r19, 0x00 ; 0  
417 - 220: 31 87 std Z+9, r19 ; 0x09  
418 - 222: 20 87 std Z+8, r18 ; 0x08  
419 - Buffer->Count = 0;  
420 - 224: 13 86 std Z+11, r1 ; 0x0b  
421 - 226: 12 86 std Z+10, r1 ; 0x0a  
422 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
423 - {  
424 - GCC_MEMORY_BARRIER();  
425 -  
426 - #if (ARCH == ARCH_AVR8)  
427 - SREG = GlobalIntState;  
428 - 228: 4f bf out 0x3f, r20 ; 63  
429 - const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);  
430 - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer,  
431 - uint8_t* const DataPtr,  
432 - const uint16_t Size)  
433 - {  
434 - GCC_FORCE_POINTER_ACCESS(Buffer);  
435 - 22a: ec e9 ldi r30, 0x9C ; 156  
436 - 22c: f1 e0 ldi r31, 0x01 ; 1  
437 - static inline uint_reg_t GetGlobalInterruptMask(void)  
438 - {  
439 - GCC_MEMORY_BARRIER();  
440 -  
441 - #if (ARCH == ARCH_AVR8)  
442 - return SREG;  
443 - 22e: 4f b7 in r20, 0x3f ; 63  
444 - static inline void GlobalInterruptDisable(void)  
445 - {  
446 - GCC_MEMORY_BARRIER();  
447 -  
448 - #if (ARCH == ARCH_AVR8)  
449 - cli();  
450 - 230: f8 94 cli  
451 -  
452 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
453 - GlobalInterruptDisable();  
454 -  
455 - Buffer->In = DataPtr;  
456 - 232: 8c e1 ldi r24, 0x1C ; 28  
457 - 234: 91 e0 ldi r25, 0x01 ; 1  
458 - 236: 91 83 std Z+1, r25 ; 0x01  
459 - 238: 80 83 st Z, r24  
460 - Buffer->Out = DataPtr;  
461 - 23a: 93 83 std Z+3, r25 ; 0x03  
462 - 23c: 82 83 std Z+2, r24 ; 0x02  
463 - Buffer->Start = &DataPtr[0];  
464 - 23e: 95 83 std Z+5, r25 ; 0x05  
465 - 240: 84 83 std Z+4, r24 ; 0x04  
466 - Buffer->End = &DataPtr[Size];  
467 - 242: 8c e9 ldi r24, 0x9C ; 156  
468 - 244: 91 e0 ldi r25, 0x01 ; 1  
469 - 246: 97 83 std Z+7, r25 ; 0x07  
470 - 248: 86 83 std Z+6, r24 ; 0x06  
471 - Buffer->Size = Size;  
472 - 24a: 31 87 std Z+9, r19 ; 0x09  
473 - 24c: 20 87 std Z+8, r18 ; 0x08  
474 - Buffer->Count = 0;  
475 - 24e: 13 86 std Z+11, r1 ; 0x0b  
476 - 250: 12 86 std Z+10, r1 ; 0x0a  
477 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
478 - {  
479 - GCC_MEMORY_BARRIER();  
480 -  
481 - #if (ARCH == ARCH_AVR8)  
482 - SREG = GlobalIntState;  
483 - 252: 4f bf out 0x3f, r20 ; 63  
484 -  
485 - RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data));  
486 - RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data));  
487 -  
488 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
489 - 254: 80 e2 ldi r24, 0x20 ; 32  
490 - 256: 79 df rcall .-270 ; 0x14a <LEDs_SetAllLEDs>  
491 - static inline void GlobalInterruptEnable(void)  
492 - {  
493 - GCC_MEMORY_BARRIER();  
494 -  
495 - #if (ARCH == ARCH_AVR8)  
496 - sei();  
497 - 258: 78 94 sei  
498 - static inline uint_reg_t GetGlobalInterruptMask(void)  
499 - {  
500 - GCC_MEMORY_BARRIER();  
501 -  
502 - #if (ARCH == ARCH_AVR8)  
503 - return SREG;  
504 - 25a: 8f b7 in r24, 0x3f ; 63  
505 - static inline void GlobalInterruptDisable(void)  
506 - {  
507 - GCC_MEMORY_BARRIER();  
508 -  
509 - #if (ARCH == ARCH_AVR8)  
510 - cli();  
511 - 25c: f8 94 cli  
512 - uint16_t Count;  
513 -  
514 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
515 - GlobalInterruptDisable();  
516 -  
517 - Count = Buffer->Count;  
518 - 25e: 20 91 32 02 lds r18, 0x0232  
519 - 262: 30 91 33 02 lds r19, 0x0233  
520 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
521 - {  
522 - GCC_MEMORY_BARRIER();  
523 -  
524 - #if (ARCH == ARCH_AVR8)  
525 - SREG = GlobalIntState;  
526 - 266: 8f bf out 0x3f, r24 ; 63  
527 - GlobalInterruptEnable();  
528 -  
529 - for (;;)  
530 - {  
531 - /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */  
532 - if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))  
533 - 268: 80 91 30 02 lds r24, 0x0230  
534 - 26c: 90 91 31 02 lds r25, 0x0231  
535 - 270: 28 17 cp r18, r24  
536 - 272: 39 07 cpc r19, r25  
537 - 274: 49 f0 breq .+18 ; 0x288 <main+0x8e>  
538 - {  
539 - int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);  
540 - 276: 80 e0 ldi r24, 0x00 ; 0  
541 - 278: 91 e0 ldi r25, 0x01 ; 1  
542 - 27a: ba d5 rcall .+2932 ; 0xdf0 <CDC_Device_ReceiveByte>  
543 -  
544 - /* Store received byte into the USART transmit buffer */  
545 - if (!(ReceivedByte < 0))  
546 - 27c: 97 fd sbrc r25, 7  
547 - 27e: 04 c0 rjmp .+8 ; 0x288 <main+0x8e>  
548 - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);  
549 - 280: 68 2f mov r22, r24  
550 - 282: 88 e2 ldi r24, 0x28 ; 40  
551 - 284: 92 e0 ldi r25, 0x02 ; 2  
552 - 286: 67 df rcall .-306 ; 0x156 <RingBuffer_Insert>  
553 - static inline uint_reg_t GetGlobalInterruptMask(void)  
554 - {  
555 - GCC_MEMORY_BARRIER();  
556 -  
557 - #if (ARCH == ARCH_AVR8)  
558 - return SREG;  
559 - 288: 2f b7 in r18, 0x3f ; 63  
560 - static inline void GlobalInterruptDisable(void)  
561 - {  
562 - GCC_MEMORY_BARRIER();  
563 -  
564 - #if (ARCH == ARCH_AVR8)  
565 - cli();  
566 - 28a: f8 94 cli  
567 - 28c: 80 91 a6 01 lds r24, 0x01A6  
568 - 290: 90 91 a7 01 lds r25, 0x01A7  
569 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
570 - {  
571 - GCC_MEMORY_BARRIER();  
572 -  
573 - #if (ARCH == ARCH_AVR8)  
574 - SREG = GlobalIntState;  
575 - 294: 2f bf out 0x3f, r18 ; 63  
576 - }  
577 -  
578 - uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);  
579 - if (BufferCount)  
580 - 296: 00 97 sbiw r24, 0x00 ; 0  
581 - 298: 29 f4 brne .+10 ; 0x2a4 <main+0xaa>  
582 - * \return Boolean \c true if a character can be queued for transmission immediately, \c false otherwise.  
583 - */  
584 - static inline bool Serial_IsSendReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
585 - static inline bool Serial_IsSendReady(void)  
586 - {  
587 - return ((UCSR1A & (1 << UDRE1)) ? true : false);  
588 - 29a: 80 91 c8 00 lds r24, 0x00C8  
589 - }  
590 - }  
591 - }  
592 -  
593 - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */  
594 - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer)))  
595 - 29e: 85 fd sbrc r24, 5  
596 - 2a0: 21 c0 rjmp .+66 ; 0x2e4 <main+0xea>  
597 - 2a2: 32 c0 rjmp .+100 ; 0x308 <__stack+0x9>  
598 - */  
599 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
600 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
601 - {  
602 - #if !defined(CONTROL_ONLY_DEVICE)  
603 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
604 - 2a4: 20 91 01 01 lds r18, 0x0101  
605 - 2a8: 2f 70 andi r18, 0x0F ; 15  
606 - 2aa: 20 93 e9 00 sts 0x00E9, r18  
607 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
608 - */  
609 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
610 - static inline bool Endpoint_IsINReady(void)  
611 - {  
612 - return ((UEINTX & (1 << TXINI)) ? true : false);  
613 - 2ae: 20 91 e8 00 lds r18, 0x00E8  
614 - {  
615 - Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address);  
616 -  
617 - /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data  
618 - * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */  
619 - if (Endpoint_IsINReady())  
620 - 2b2: 20 ff sbrs r18, 0  
621 - 2b4: f2 cf rjmp .-28 ; 0x29a <main+0xa0>  
622 - {  
623 - /* Never send more than one bank size less one byte to the host at a time, so that we don't block  
624 - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */  
625 - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));  
626 - 2b6: 80 31 cpi r24, 0x10 ; 16  
627 - 2b8: 91 05 cpc r25, r1  
628 - 2ba: 10 f0 brcs .+4 ; 0x2c0 <main+0xc6>  
629 - 2bc: 8f e0 ldi r24, 0x0F ; 15  
630 - 2be: 90 e0 ldi r25, 0x00 ; 0  
631 - 2c0: c8 2f mov r28, r24  
632 - * \return Next data element stored in the buffer.  
633 - */  
634 - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);  
635 - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer)  
636 - {  
637 - return *Buffer->Out;  
638 - 2c2: e0 91 9e 01 lds r30, 0x019E  
639 - 2c6: f0 91 9f 01 lds r31, 0x019F  
640 -  
641 - /* Read bytes from the USART receive buffer into the USB IN endpoint */  
642 - while (BytesToSend--)  
643 - {  
644 - /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */  
645 - if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface,  
646 - 2ca: 60 81 ld r22, Z  
647 - 2cc: 80 e0 ldi r24, 0x00 ; 0  
648 - 2ce: 91 e0 ldi r25, 0x01 ; 1  
649 - 2d0: 27 d5 rcall .+2638 ; 0xd20 <CDC_Device_SendByte>  
650 - 2d2: c1 50 subi r28, 0x01 ; 1  
651 - 2d4: 81 11 cpse r24, r1  
652 - 2d6: e1 cf rjmp .-62 ; 0x29a <main+0xa0>  
653 - {  
654 - break;  
655 - }  
656 -  
657 - /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */  
658 - RingBuffer_Remove(&USARTtoUSB_Buffer);  
659 - 2d8: 8c e9 ldi r24, 0x9C ; 156  
660 - 2da: 91 e0 ldi r25, 0x01 ; 1  
661 - 2dc: 57 df rcall .-338 ; 0x18c <RingBuffer_Remove>  
662 - /* Never send more than one bank size less one byte to the host at a time, so that we don't block  
663 - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */  
664 - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));  
665 -  
666 - /* Read bytes from the USART receive buffer into the USB IN endpoint */  
667 - while (BytesToSend--)  
668 - 2de: c1 11 cpse r28, r1  
669 - 2e0: f0 cf rjmp .-32 ; 0x2c2 <main+0xc8>  
670 - 2e2: db cf rjmp .-74 ; 0x29a <main+0xa0>  
671 - static inline uint_reg_t GetGlobalInterruptMask(void)  
672 - {  
673 - GCC_MEMORY_BARRIER();  
674 -  
675 - #if (ARCH == ARCH_AVR8)  
676 - return SREG;  
677 - 2e4: 2f b7 in r18, 0x3f ; 63  
678 - static inline void GlobalInterruptDisable(void)  
679 - {  
680 - GCC_MEMORY_BARRIER();  
681 -  
682 - #if (ARCH == ARCH_AVR8)  
683 - cli();  
684 - 2e6: f8 94 cli  
685 - uint16_t Count;  
686 -  
687 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
688 - GlobalInterruptDisable();  
689 -  
690 - Count = Buffer->Count;  
691 - 2e8: 80 91 32 02 lds r24, 0x0232  
692 - 2ec: 90 91 33 02 lds r25, 0x0233  
693 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
694 - {  
695 - GCC_MEMORY_BARRIER();  
696 -  
697 - #if (ARCH == ARCH_AVR8)  
698 - SREG = GlobalIntState;  
699 - 2f0: 2f bf out 0x3f, r18 ; 63  
700 - }  
701 - }  
702 - }  
703 -  
704 - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */  
705 - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer)))  
706 - 2f2: 89 2b or r24, r25  
707 - 2f4: 49 f0 breq .+18 ; 0x308 <__stack+0x9>  
708 - Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));  
709 - 2f6: 88 e2 ldi r24, 0x28 ; 40  
710 - 2f8: 92 e0 ldi r25, 0x02 ; 2  
711 - 2fa: 48 df rcall .-368 ; 0x18c <RingBuffer_Remove>  
712 - 2fc: 90 91 c8 00 lds r25, 0x00C8  
713 - * \param[in] DataByte Byte to transmit through the USART.  
714 - */  
715 - static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE;  
716 - static inline void Serial_SendByte(const char DataByte)  
717 - {  
718 - while (!(Serial_IsSendReady()));  
719 - 300: 95 ff sbrs r25, 5  
720 - 302: fc cf rjmp .-8 ; 0x2fc <main+0x102>  
721 - UDR1 = DataByte;  
722 - 304: 80 93 ce 00 sts 0x00CE, r24  
723 -  
724 - CDC_Device_USBTask(&VirtualSerial_CDC_Interface);  
725 - 308: 80 e0 ldi r24, 0x00 ; 0  
726 - 30a: 91 e0 ldi r25, 0x01 ; 1  
727 - 30c: 5c d5 rcall .+2744 ; 0xdc6 <CDC_Device_USBTask>  
728 - USB_USBTask();  
729 - 30e: ca d4 rcall .+2452 ; 0xca4 <USB_USBTask>  
730 - }  
731 - 310: a4 cf rjmp .-184 ; 0x25a <main+0x60>  
732 -  
733 -00000312 <EVENT_USB_Device_Connect>:  
734 -}  
735 -  
736 -/** Event handler for the library USB Connection event. */  
737 -void EVENT_USB_Device_Connect(void)  
738 -{  
739 - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);  
740 - 312: 80 e1 ldi r24, 0x10 ; 16  
741 - 314: 1a cf rjmp .-460 ; 0x14a <LEDs_SetAllLEDs>  
742 -  
743 -00000316 <EVENT_USB_Device_Disconnect>:  
744 -}  
745 -  
746 -/** Event handler for the library USB Disconnection event. */  
747 -void EVENT_USB_Device_Disconnect(void)  
748 -{  
749 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
750 - 316: 80 e2 ldi r24, 0x20 ; 32  
751 - 318: 18 cf rjmp .-464 ; 0x14a <LEDs_SetAllLEDs>  
752 -  
753 -0000031a <EVENT_USB_Device_ConfigurationChanged>:  
754 -/** Event handler for the library USB Configuration Changed event. */  
755 -void EVENT_USB_Device_ConfigurationChanged(void)  
756 -{  
757 - bool ConfigSuccess = true;  
758 -  
759 - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);  
760 - 31a: 80 e0 ldi r24, 0x00 ; 0  
761 - 31c: 91 e0 ldi r25, 0x01 ; 1  
762 - 31e: db d4 rcall .+2486 ; 0xcd6 <CDC_Device_ConfigureEndpoints>  
763 -  
764 - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);  
765 - 320: 81 11 cpse r24, r1  
766 - 322: 02 c0 rjmp .+4 ; 0x328 <EVENT_USB_Device_ConfigurationChanged+0xe>  
767 - 324: 80 e2 ldi r24, 0x20 ; 32  
768 - 326: 01 c0 rjmp .+2 ; 0x32a <EVENT_USB_Device_ConfigurationChanged+0x10>  
769 - 328: 80 e1 ldi r24, 0x10 ; 16  
770 - 32a: 0f cf rjmp .-482 ; 0x14a <LEDs_SetAllLEDs>  
771 -  
772 -0000032c <EVENT_USB_Device_ControlRequest>:  
773 -}  
774 -  
775 -/** Event handler for the library USB Control Request reception event. */  
776 -void EVENT_USB_Device_ControlRequest(void)  
777 -{  
778 - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);  
779 - 32c: 80 e0 ldi r24, 0x00 ; 0  
780 - 32e: 91 e0 ldi r25, 0x01 ; 1  
781 - 330: 8c c5 rjmp .+2840 ; 0xe4a <CDC_Device_ProcessControlRequest>  
782 -  
783 -00000332 <__vector_23>:  
784 -  
785 -/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer  
786 - * for later transmission to the host.  
787 - */  
788 -ISR(USART1_RX_vect, ISR_BLOCK)  
789 -{  
790 - 332: 1f 92 push r1  
791 - 334: 0f 92 push r0  
792 - 336: 0f b6 in r0, 0x3f ; 63  
793 - 338: 0f 92 push r0  
794 - 33a: 11 24 eor r1, r1  
795 - 33c: 2f 93 push r18  
796 - 33e: 3f 93 push r19  
797 - 340: 4f 93 push r20  
798 - 342: 5f 93 push r21  
799 - 344: 6f 93 push r22  
800 - 346: 7f 93 push r23  
801 - 348: 8f 93 push r24  
802 - 34a: 9f 93 push r25  
803 - 34c: af 93 push r26  
804 - 34e: bf 93 push r27  
805 - 350: ef 93 push r30  
806 - 352: ff 93 push r31  
807 - uint8_t ReceivedByte = UDR1;  
808 - 354: 60 91 ce 00 lds r22, 0x00CE  
809 -  
810 - if ((USB_DeviceState == DEVICE_STATE_Configured) && !(RingBuffer_IsFull(&USARTtoUSB_Buffer)))  
811 - 358: 8e b3 in r24, 0x1e ; 30  
812 - 35a: 84 30 cpi r24, 0x04 ; 4  
813 - 35c: 89 f4 brne .+34 ; 0x380 <__vector_23+0x4e>  
814 - static inline uint_reg_t GetGlobalInterruptMask(void)  
815 - {  
816 - GCC_MEMORY_BARRIER();  
817 -  
818 - #if (ARCH == ARCH_AVR8)  
819 - return SREG;  
820 - 35e: 8f b7 in r24, 0x3f ; 63  
821 - static inline void GlobalInterruptDisable(void)  
822 - {  
823 - GCC_MEMORY_BARRIER();  
824 -  
825 - #if (ARCH == ARCH_AVR8)  
826 - cli();  
827 - 360: f8 94 cli  
828 - 362: 20 91 a6 01 lds r18, 0x01A6  
829 - 366: 30 91 a7 01 lds r19, 0x01A7  
830 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
831 - {  
832 - GCC_MEMORY_BARRIER();  
833 -  
834 - #if (ARCH == ARCH_AVR8)  
835 - SREG = GlobalIntState;  
836 - 36a: 8f bf out 0x3f, r24 ; 63  
837 - 36c: 80 91 a4 01 lds r24, 0x01A4  
838 - 370: 90 91 a5 01 lds r25, 0x01A5  
839 - 374: 28 17 cp r18, r24  
840 - 376: 39 07 cpc r19, r25  
841 - 378: 19 f0 breq .+6 ; 0x380 <__vector_23+0x4e>  
842 - RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);  
843 - 37a: 8c e9 ldi r24, 0x9C ; 156  
844 - 37c: 91 e0 ldi r25, 0x01 ; 1  
845 - 37e: eb de rcall .-554 ; 0x156 <RingBuffer_Insert>  
846 -}  
847 - 380: ff 91 pop r31  
848 - 382: ef 91 pop r30  
849 - 384: bf 91 pop r27  
850 - 386: af 91 pop r26  
851 - 388: 9f 91 pop r25  
852 - 38a: 8f 91 pop r24  
853 - 38c: 7f 91 pop r23  
854 - 38e: 6f 91 pop r22  
855 - 390: 5f 91 pop r21  
856 - 392: 4f 91 pop r20  
857 - 394: 3f 91 pop r19  
858 - 396: 2f 91 pop r18  
859 - 398: 0f 90 pop r0  
860 - 39a: 0f be out 0x3f, r0 ; 63  
861 - 39c: 0f 90 pop r0  
862 - 39e: 1f 90 pop r1  
863 - 3a0: 18 95 reti  
864 -  
865 -000003a2 <EVENT_CDC_Device_LineEncodingChanged>:  
866 -/** Event handler for the CDC Class driver Line Encoding Changed event.  
867 - *  
868 - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced  
869 - */  
870 -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)  
871 -{  
872 - 3a2: cf 93 push r28  
873 - 3a4: fc 01 movw r30, r24  
874 - uint8_t ConfigMask = 0;  
875 -  
876 - switch (CDCInterfaceInfo->State.LineEncoding.ParityType)  
877 - 3a6: 81 8d ldd r24, Z+25 ; 0x19  
878 - 3a8: 81 30 cpi r24, 0x01 ; 1  
879 - 3aa: 21 f0 breq .+8 ; 0x3b4 <EVENT_CDC_Device_LineEncodingChanged+0x12>  
880 - 3ac: 82 30 cpi r24, 0x02 ; 2  
881 - 3ae: 21 f4 brne .+8 ; 0x3b8 <EVENT_CDC_Device_LineEncodingChanged+0x16>  
882 - {  
883 - case CDC_PARITY_Odd:  
884 - ConfigMask = ((1 << UPM11) | (1 << UPM10));  
885 - break;  
886 - case CDC_PARITY_Even:  
887 - ConfigMask = (1 << UPM11);  
888 - 3b0: c0 e2 ldi r28, 0x20 ; 32  
889 - break;  
890 - 3b2: 03 c0 rjmp .+6 ; 0x3ba <EVENT_CDC_Device_LineEncodingChanged+0x18>  
891 - uint8_t ConfigMask = 0;  
892 -  
893 - switch (CDCInterfaceInfo->State.LineEncoding.ParityType)  
894 - {  
895 - case CDC_PARITY_Odd:  
896 - ConfigMask = ((1 << UPM11) | (1 << UPM10));  
897 - 3b4: c0 e3 ldi r28, 0x30 ; 48  
898 - 3b6: 01 c0 rjmp .+2 ; 0x3ba <EVENT_CDC_Device_LineEncodingChanged+0x18>  
899 - *  
900 - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced  
901 - */  
902 -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)  
903 -{  
904 - uint8_t ConfigMask = 0;  
905 - 3b8: c0 e0 ldi r28, 0x00 ; 0  
906 - case CDC_PARITY_Even:  
907 - ConfigMask = (1 << UPM11);  
908 - break;  
909 - }  
910 -  
911 - if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)  
912 - 3ba: 80 8d ldd r24, Z+24 ; 0x18  
913 - 3bc: 82 30 cpi r24, 0x02 ; 2  
914 - 3be: 09 f4 brne .+2 ; 0x3c2 <EVENT_CDC_Device_LineEncodingChanged+0x20>  
915 - ConfigMask |= (1 << USBS1);  
916 - 3c0: c8 60 ori r28, 0x08 ; 8  
917 -  
918 - switch (CDCInterfaceInfo->State.LineEncoding.DataBits)  
919 - 3c2: 82 8d ldd r24, Z+26 ; 0x1a  
920 - 3c4: 87 30 cpi r24, 0x07 ; 7  
921 - 3c6: 31 f0 breq .+12 ; 0x3d4 <EVENT_CDC_Device_LineEncodingChanged+0x32>  
922 - 3c8: 88 30 cpi r24, 0x08 ; 8  
923 - 3ca: 31 f0 breq .+12 ; 0x3d8 <EVENT_CDC_Device_LineEncodingChanged+0x36>  
924 - 3cc: 86 30 cpi r24, 0x06 ; 6  
925 - 3ce: 29 f4 brne .+10 ; 0x3da <EVENT_CDC_Device_LineEncodingChanged+0x38>  
926 - {  
927 - case 6:  
928 - ConfigMask |= (1 << UCSZ10);  
929 - 3d0: c2 60 ori r28, 0x02 ; 2  
930 - break;  
931 - 3d2: 03 c0 rjmp .+6 ; 0x3da <EVENT_CDC_Device_LineEncodingChanged+0x38>  
932 - case 7:  
933 - ConfigMask |= (1 << UCSZ11);  
934 - 3d4: c4 60 ori r28, 0x04 ; 4  
935 - break;  
936 - 3d6: 01 c0 rjmp .+2 ; 0x3da <EVENT_CDC_Device_LineEncodingChanged+0x38>  
937 - case 8:  
938 - ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));  
939 - 3d8: c6 60 ori r28, 0x06 ; 6  
940 - break;  
941 - }  
942 -  
943 - /* Keep the TX line held high (idle) while the USART is reconfigured */  
944 - PORTD |= (1 << 3);  
945 - 3da: 5b 9a sbi 0x0b, 3 ; 11  
946 -  
947 - /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */  
948 - UCSR1B = 0;  
949 - 3dc: 10 92 c9 00 sts 0x00C9, r1  
950 - UCSR1A = 0;  
951 - 3e0: 10 92 c8 00 sts 0x00C8, r1  
952 - UCSR1C = 0;  
953 - 3e4: 10 92 ca 00 sts 0x00CA, r1  
954 -  
955 - /* Set the new baud rate before configuring the USART */  
956 - UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);  
957 - 3e8: 24 89 ldd r18, Z+20 ; 0x14  
958 - 3ea: 35 89 ldd r19, Z+21 ; 0x15  
959 - 3ec: 46 89 ldd r20, Z+22 ; 0x16  
960 - 3ee: 57 89 ldd r21, Z+23 ; 0x17  
961 - 3f0: da 01 movw r26, r20  
962 - 3f2: c9 01 movw r24, r18  
963 - 3f4: b6 95 lsr r27  
964 - 3f6: a7 95 ror r26  
965 - 3f8: 97 95 ror r25  
966 - 3fa: 87 95 ror r24  
967 - 3fc: bc 01 movw r22, r24  
968 - 3fe: cd 01 movw r24, r26  
969 - 400: 60 5c subi r22, 0xC0 ; 192  
970 - 402: 7d 4b sbci r23, 0xBD ; 189  
971 - 404: 80 4f sbci r24, 0xF0 ; 240  
972 - 406: 9f 4f sbci r25, 0xFF ; 255  
973 - 408: cf d5 rcall .+2974 ; 0xfa8 <__udivmodsi4>  
974 - 40a: 21 50 subi r18, 0x01 ; 1  
975 - 40c: 31 09 sbc r19, r1  
976 - 40e: 30 93 cd 00 sts 0x00CD, r19  
977 - 412: 20 93 cc 00 sts 0x00CC, r18  
978 -  
979 - /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */  
980 - UCSR1C = ConfigMask;  
981 - 416: c0 93 ca 00 sts 0x00CA, r28  
982 - UCSR1A = (1 << U2X1);  
983 - 41a: 82 e0 ldi r24, 0x02 ; 2  
984 - 41c: 80 93 c8 00 sts 0x00C8, r24  
985 - UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));  
986 - 420: 88 e9 ldi r24, 0x98 ; 152  
987 - 422: 80 93 c9 00 sts 0x00C9, r24  
988 -  
989 - /* Release the TX line after the USART has been reconfigured */  
990 - PORTD &= ~(1 << 3);  
991 - 426: 5b 98 cbi 0x0b, 3 ; 11  
992 -}  
993 - 428: cf 91 pop r28  
994 - 42a: 08 95 ret  
995 -  
996 -0000042c <CALLBACK_USB_GetDescriptor>:  
997 - */  
998 -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,  
999 - const uint16_t wIndex,  
1000 - const void** const DescriptorAddress)  
1001 -{  
1002 - const uint8_t DescriptorType = (wValue >> 8);  
1003 - 42c: 29 2f mov r18, r25  
1004 - 42e: 33 27 eor r19, r19  
1005 - const uint8_t DescriptorNumber = (wValue & 0xFF);  
1006 -  
1007 - const void* Address = NULL;  
1008 - uint16_t Size = NO_DESCRIPTOR;  
1009 -  
1010 - switch (DescriptorType)  
1011 - 430: 22 30 cpi r18, 0x02 ; 2  
1012 - 432: 31 05 cpc r19, r1  
1013 - 434: 59 f0 breq .+22 ; 0x44c <CALLBACK_USB_GetDescriptor+0x20>  
1014 - 436: 23 30 cpi r18, 0x03 ; 3  
1015 - 438: 31 05 cpc r19, r1  
1016 - 43a: 69 f0 breq .+26 ; 0x456 <CALLBACK_USB_GetDescriptor+0x2a>  
1017 - 43c: 21 30 cpi r18, 0x01 ; 1  
1018 - 43e: 31 05 cpc r19, r1  
1019 - 440: f9 f4 brne .+62 ; 0x480 <CALLBACK_USB_GetDescriptor+0x54>  
1020 - {  
1021 - case DTYPE_Device:  
1022 - Address = &DeviceDescriptor;  
1023 - Size = sizeof(USB_Descriptor_Device_t);  
1024 - 442: 82 e1 ldi r24, 0x12 ; 18  
1025 - 444: 90 e0 ldi r25, 0x00 ; 0  
1026 - uint16_t Size = NO_DESCRIPTOR;  
1027 -  
1028 - switch (DescriptorType)  
1029 - {  
1030 - case DTYPE_Device:  
1031 - Address = &DeviceDescriptor;  
1032 - 446: 20 e0 ldi r18, 0x00 ; 0  
1033 - 448: 31 e0 ldi r19, 0x01 ; 1  
1034 - 44a: 1e c0 rjmp .+60 ; 0x488 <CALLBACK_USB_GetDescriptor+0x5c>  
1035 - Size = sizeof(USB_Descriptor_Device_t);  
1036 - break;  
1037 - case DTYPE_Configuration:  
1038 - Address = &ConfigurationDescriptor;  
1039 - Size = sizeof(USB_Descriptor_Configuration_t);  
1040 - 44c: 8e e3 ldi r24, 0x3E ; 62  
1041 - 44e: 90 e0 ldi r25, 0x00 ; 0  
1042 - case DTYPE_Device:  
1043 - Address = &DeviceDescriptor;  
1044 - Size = sizeof(USB_Descriptor_Device_t);  
1045 - break;  
1046 - case DTYPE_Configuration:  
1047 - Address = &ConfigurationDescriptor;  
1048 - 450: 22 ec ldi r18, 0xC2 ; 194  
1049 - 452: 30 e0 ldi r19, 0x00 ; 0  
1050 - Size = sizeof(USB_Descriptor_Configuration_t);  
1051 - break;  
1052 - 454: 19 c0 rjmp .+50 ; 0x488 <CALLBACK_USB_GetDescriptor+0x5c>  
1053 - 456: 99 27 eor r25, r25  
1054 - case DTYPE_String:  
1055 - switch (DescriptorNumber)  
1056 - 458: 81 30 cpi r24, 0x01 ; 1  
1057 - 45a: 91 05 cpc r25, r1  
1058 - 45c: 41 f0 breq .+16 ; 0x46e <CALLBACK_USB_GetDescriptor+0x42>  
1059 - 45e: 82 30 cpi r24, 0x02 ; 2  
1060 - 460: 91 05 cpc r25, r1  
1061 - 462: 41 f0 breq .+16 ; 0x474 <CALLBACK_USB_GetDescriptor+0x48>  
1062 - 464: 89 2b or r24, r25  
1063 - 466: 61 f4 brne .+24 ; 0x480 <CALLBACK_USB_GetDescriptor+0x54>  
1064 - {  
1065 - case STRING_ID_Language:  
1066 - Address = &LanguageString;  
1067 - Size = pgm_read_byte(&LanguageString.Header.Size);  
1068 - 468: ee eb ldi r30, 0xBE ; 190  
1069 - 46a: f0 e0 ldi r31, 0x00 ; 0  
1070 - 46c: 05 c0 rjmp .+10 ; 0x478 <CALLBACK_USB_GetDescriptor+0x4c>  
1071 - break;  
1072 - case STRING_ID_Manufacturer:  
1073 - Address = &ManufacturerString;  
1074 - Size = pgm_read_byte(&ManufacturerString.Header.Size);  
1075 - 46e: e4 ea ldi r30, 0xA4 ; 164  
1076 - 470: f0 e0 ldi r31, 0x00 ; 0  
1077 - 472: 02 c0 rjmp .+4 ; 0x478 <CALLBACK_USB_GetDescriptor+0x4c>  
1078 - break;  
1079 - case STRING_ID_Product:  
1080 - Address = &ProductString;  
1081 - Size = pgm_read_byte(&ProductString.Header.Size);  
1082 - 474: e4 e7 ldi r30, 0x74 ; 116  
1083 - 476: f0 e0 ldi r31, 0x00 ; 0  
1084 - 478: 84 91 lpm r24, Z  
1085 - 47a: 90 e0 ldi r25, 0x00 ; 0  
1086 - case STRING_ID_Manufacturer:  
1087 - Address = &ManufacturerString;  
1088 - Size = pgm_read_byte(&ManufacturerString.Header.Size);  
1089 - break;  
1090 - case STRING_ID_Product:  
1091 - Address = &ProductString;  
1092 - 47c: 9f 01 movw r18, r30  
1093 - Size = pgm_read_byte(&ProductString.Header.Size);  
1094 - break;  
1095 - 47e: 04 c0 rjmp .+8 ; 0x488 <CALLBACK_USB_GetDescriptor+0x5c>  
1096 -{  
1097 - const uint8_t DescriptorType = (wValue >> 8);  
1098 - const uint8_t DescriptorNumber = (wValue & 0xFF);  
1099 -  
1100 - const void* Address = NULL;  
1101 - uint16_t Size = NO_DESCRIPTOR;  
1102 - 480: 80 e0 ldi r24, 0x00 ; 0  
1103 - 482: 90 e0 ldi r25, 0x00 ; 0  
1104 - const void** const DescriptorAddress)  
1105 -{  
1106 - const uint8_t DescriptorType = (wValue >> 8);  
1107 - const uint8_t DescriptorNumber = (wValue & 0xFF);  
1108 -  
1109 - const void* Address = NULL;  
1110 - 484: 20 e0 ldi r18, 0x00 ; 0  
1111 - 486: 30 e0 ldi r19, 0x00 ; 0  
1112 - }  
1113 -  
1114 - break;  
1115 - }  
1116 -  
1117 - *DescriptorAddress = Address;  
1118 - 488: fa 01 movw r30, r20  
1119 - 48a: 31 83 std Z+1, r19 ; 0x01  
1120 - 48c: 20 83 st Z, r18  
1121 - return Size;  
1122 -}  
1123 - 48e: 08 95 ret  
1124 -  
1125 -00000490 <Endpoint_Write_Control_Stream_LE>:  
1126 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1127 - return ENDPOINT_RWCSTREAM_BusSuspended;  
1128 - }  
1129 -  
1130 - return ENDPOINT_RWCSTREAM_NoError;  
1131 -}  
1132 - 490: 20 91 3e 02 lds r18, 0x023E  
1133 - 494: 30 91 3f 02 lds r19, 0x023F  
1134 - 498: 26 17 cp r18, r22  
1135 - 49a: 37 07 cpc r19, r23  
1136 - 49c: 48 f0 brcs .+18 ; 0x4b0 <Endpoint_Write_Control_Stream_LE+0x20>  
1137 - 49e: 61 15 cp r22, r1  
1138 - 4a0: 71 05 cpc r23, r1  
1139 - 4a2: 39 f4 brne .+14 ; 0x4b2 <Endpoint_Write_Control_Stream_LE+0x22>  
1140 - 4a4: 20 91 e8 00 lds r18, 0x00E8  
1141 - 4a8: 2e 77 andi r18, 0x7E ; 126  
1142 - 4aa: 20 93 e8 00 sts 0x00E8, r18  
1143 - 4ae: 01 c0 rjmp .+2 ; 0x4b2 <Endpoint_Write_Control_Stream_LE+0x22>  
1144 - 4b0: b9 01 movw r22, r18  
1145 - 4b2: 40 e0 ldi r20, 0x00 ; 0  
1146 - 4b4: 61 15 cp r22, r1  
1147 - 4b6: 71 05 cpc r23, r1  
1148 - 4b8: 79 f1 breq .+94 ; 0x518 <Endpoint_Write_Control_Stream_LE+0x88>  
1149 - 4ba: 2e b3 in r18, 0x1e ; 30  
1150 - 4bc: 22 23 and r18, r18  
1151 - 4be: f1 f1 breq .+124 ; 0x53c <Endpoint_Write_Control_Stream_LE+0xac>  
1152 - 4c0: 25 30 cpi r18, 0x05 ; 5  
1153 - 4c2: f1 f1 breq .+124 ; 0x540 <Endpoint_Write_Control_Stream_LE+0xb0>  
1154 - 4c4: 20 91 e8 00 lds r18, 0x00E8  
1155 - 4c8: 23 fd sbrc r18, 3  
1156 - 4ca: 3c c0 rjmp .+120 ; 0x544 <Endpoint_Write_Control_Stream_LE+0xb4>  
1157 - 4cc: 20 91 e8 00 lds r18, 0x00E8  
1158 - 4d0: 22 fd sbrc r18, 2  
1159 - 4d2: 2e c0 rjmp .+92 ; 0x530 <Endpoint_Write_Control_Stream_LE+0xa0>  
1160 - 4d4: 20 91 e8 00 lds r18, 0x00E8  
1161 - 4d8: 20 ff sbrs r18, 0  
1162 - 4da: ec cf rjmp .-40 ; 0x4b4 <Endpoint_Write_Control_Stream_LE+0x24>  
1163 - 4dc: 20 91 f2 00 lds r18, 0x00F2  
1164 - 4e0: 30 e0 ldi r19, 0x00 ; 0  
1165 - 4e2: fc 01 movw r30, r24  
1166 - 4e4: cf 01 movw r24, r30  
1167 - 4e6: 61 15 cp r22, r1  
1168 - 4e8: 71 05 cpc r23, r1  
1169 - 4ea: 59 f0 breq .+22 ; 0x502 <Endpoint_Write_Control_Stream_LE+0x72>  
1170 - 4ec: 28 30 cpi r18, 0x08 ; 8  
1171 - 4ee: 31 05 cpc r19, r1  
1172 - 4f0: 40 f4 brcc .+16 ; 0x502 <Endpoint_Write_Control_Stream_LE+0x72>  
1173 - 4f2: 81 91 ld r24, Z+  
1174 - 4f4: 80 93 f1 00 sts 0x00F1, r24  
1175 - 4f8: 61 50 subi r22, 0x01 ; 1  
1176 - 4fa: 71 09 sbc r23, r1  
1177 - 4fc: 2f 5f subi r18, 0xFF ; 255  
1178 - 4fe: 3f 4f sbci r19, 0xFF ; 255  
1179 - 500: f1 cf rjmp .-30 ; 0x4e4 <Endpoint_Write_Control_Stream_LE+0x54>  
1180 - 502: 41 e0 ldi r20, 0x01 ; 1  
1181 - 504: 28 30 cpi r18, 0x08 ; 8  
1182 - 506: 31 05 cpc r19, r1  
1183 - 508: 09 f0 breq .+2 ; 0x50c <Endpoint_Write_Control_Stream_LE+0x7c>  
1184 - 50a: 40 e0 ldi r20, 0x00 ; 0  
1185 - 50c: 20 91 e8 00 lds r18, 0x00E8  
1186 - 510: 2e 77 andi r18, 0x7E ; 126  
1187 - 512: 20 93 e8 00 sts 0x00E8, r18  
1188 - 516: ce cf rjmp .-100 ; 0x4b4 <Endpoint_Write_Control_Stream_LE+0x24>  
1189 - 518: 41 11 cpse r20, r1  
1190 - 51a: cf cf rjmp .-98 ; 0x4ba <Endpoint_Write_Control_Stream_LE+0x2a>  
1191 - 51c: 09 c0 rjmp .+18 ; 0x530 <Endpoint_Write_Control_Stream_LE+0xa0>  
1192 - 51e: 8e b3 in r24, 0x1e ; 30  
1193 - 520: 88 23 and r24, r24  
1194 - 522: 61 f0 breq .+24 ; 0x53c <Endpoint_Write_Control_Stream_LE+0xac>  
1195 - 524: 85 30 cpi r24, 0x05 ; 5  
1196 - 526: 61 f0 breq .+24 ; 0x540 <Endpoint_Write_Control_Stream_LE+0xb0>  
1197 - 528: 80 91 e8 00 lds r24, 0x00E8  
1198 - 52c: 83 fd sbrc r24, 3  
1199 - 52e: 0a c0 rjmp .+20 ; 0x544 <Endpoint_Write_Control_Stream_LE+0xb4>  
1200 - 530: 80 91 e8 00 lds r24, 0x00E8  
1201 - 534: 82 ff sbrs r24, 2  
1202 - 536: f3 cf rjmp .-26 ; 0x51e <Endpoint_Write_Control_Stream_LE+0x8e>  
1203 - 538: 80 e0 ldi r24, 0x00 ; 0  
1204 - 53a: 08 95 ret  
1205 - 53c: 82 e0 ldi r24, 0x02 ; 2  
1206 - 53e: 08 95 ret  
1207 - 540: 83 e0 ldi r24, 0x03 ; 3  
1208 - 542: 08 95 ret  
1209 - 544: 81 e0 ldi r24, 0x01 ; 1  
1210 - 546: 08 95 ret  
1211 -  
1212 -00000548 <Endpoint_Write_Control_PStream_LE>:  
1213 - uint16_t Length)  
1214 -{  
1215 - uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));  
1216 - bool LastPacketFull = false;  
1217 -  
1218 - if (Length > USB_ControlRequest.wLength)  
1219 - 548: 20 91 3e 02 lds r18, 0x023E  
1220 - 54c: 30 91 3f 02 lds r19, 0x023F  
1221 - 550: 26 17 cp r18, r22  
1222 - 552: 37 07 cpc r19, r23  
1223 - 554: 48 f0 brcs .+18 ; 0x568 <Endpoint_Write_Control_PStream_LE+0x20>  
1224 - Length = USB_ControlRequest.wLength;  
1225 - else if (!(Length))  
1226 - 556: 61 15 cp r22, r1  
1227 - 558: 71 05 cpc r23, r1  
1228 - 55a: 39 f4 brne .+14 ; 0x56a <Endpoint_Write_Control_PStream_LE+0x22>  
1229 - */  
1230 - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;  
1231 - static inline void Endpoint_ClearIN(void)  
1232 - {  
1233 - #if !defined(CONTROL_ONLY_DEVICE)  
1234 - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));  
1235 - 55c: 20 91 e8 00 lds r18, 0x00E8  
1236 - 560: 2e 77 andi r18, 0x7E ; 126  
1237 - 562: 20 93 e8 00 sts 0x00E8, r18  
1238 - 566: 01 c0 rjmp .+2 ; 0x56a <Endpoint_Write_Control_PStream_LE+0x22>  
1239 - 568: b9 01 movw r22, r18  
1240 - 56a: fc 01 movw r30, r24  
1241 - 56c: 20 e0 ldi r18, 0x00 ; 0  
1242 - Endpoint_ClearIN();  
1243 -  
1244 - while (Length || LastPacketFull)  
1245 - 56e: 61 15 cp r22, r1  
1246 - 570: 71 05 cpc r23, r1  
1247 - 572: 61 f1 breq .+88 ; 0x5cc <Endpoint_Write_Control_PStream_LE+0x84>  
1248 - {  
1249 - uint8_t USB_DeviceState_LCL = USB_DeviceState;  
1250 - 574: 8e b3 in r24, 0x1e ; 30  
1251 -  
1252 - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)  
1253 - 576: 88 23 and r24, r24  
1254 - 578: d9 f1 breq .+118 ; 0x5f0 <Endpoint_Write_Control_PStream_LE+0xa8>  
1255 - return ENDPOINT_RWCSTREAM_DeviceDisconnected;  
1256 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1257 - 57a: 85 30 cpi r24, 0x05 ; 5  
1258 - 57c: d9 f1 breq .+118 ; 0x5f4 <Endpoint_Write_Control_PStream_LE+0xac>  
1259 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
1260 - */  
1261 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1262 - static inline bool Endpoint_IsSETUPReceived(void)  
1263 - {  
1264 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
1265 - 57e: 80 91 e8 00 lds r24, 0x00E8  
1266 - return ENDPOINT_RWCSTREAM_BusSuspended;  
1267 - else if (Endpoint_IsSETUPReceived())  
1268 - 582: 83 fd sbrc r24, 3  
1269 - 584: 39 c0 rjmp .+114 ; 0x5f8 <Endpoint_Write_Control_PStream_LE+0xb0>  
1270 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.  
1271 - */  
1272 - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1273 - static inline bool Endpoint_IsOUTReceived(void)  
1274 - {  
1275 - return ((UEINTX & (1 << RXOUTI)) ? true : false);  
1276 - 586: 80 91 e8 00 lds r24, 0x00E8  
1277 - return ENDPOINT_RWCSTREAM_HostAborted;  
1278 - else if (Endpoint_IsOUTReceived())  
1279 - 58a: 82 fd sbrc r24, 2  
1280 - 58c: 2b c0 rjmp .+86 ; 0x5e4 <Endpoint_Write_Control_PStream_LE+0x9c>  
1281 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
1282 - */  
1283 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1284 - static inline bool Endpoint_IsINReady(void)  
1285 - {  
1286 - return ((UEINTX & (1 << TXINI)) ? true : false);  
1287 - 58e: 80 91 e8 00 lds r24, 0x00E8  
1288 - break;  
1289 -  
1290 - if (Endpoint_IsINReady())  
1291 - 592: 80 ff sbrs r24, 0  
1292 - 594: ec cf rjmp .-40 ; 0x56e <Endpoint_Write_Control_PStream_LE+0x26>  
1293 - #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))  
1294 - return UEBCX;  
1295 - #elif defined(USB_SERIES_4_AVR)  
1296 - return (((uint16_t)UEBCHX << 8) | UEBCLX);  
1297 - #elif defined(USB_SERIES_2_AVR)  
1298 - return UEBCLX;  
1299 - 596: 80 91 f2 00 lds r24, 0x00F2  
1300 - 59a: 90 e0 ldi r25, 0x00 ; 0  
1301 - {  
1302 - uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();  
1303 -  
1304 - while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))  
1305 - 59c: 61 15 cp r22, r1  
1306 - 59e: 71 05 cpc r23, r1  
1307 - 5a0: 59 f0 breq .+22 ; 0x5b8 <Endpoint_Write_Control_PStream_LE+0x70>  
1308 - 5a2: 88 30 cpi r24, 0x08 ; 8  
1309 - 5a4: 91 05 cpc r25, r1  
1310 - 5a6: 40 f4 brcc .+16 ; 0x5b8 <Endpoint_Write_Control_PStream_LE+0x70>  
1311 - {  
1312 - TEMPLATE_TRANSFER_BYTE(DataStream);  
1313 - 5a8: 24 91 lpm r18, Z  
1314 - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.  
1315 - */  
1316 - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;  
1317 - static inline void Endpoint_Write_8(const uint8_t Data)  
1318 - {  
1319 - UEDATX = Data;  
1320 - 5aa: 20 93 f1 00 sts 0x00F1, r18  
1321 - TEMPLATE_BUFFER_MOVE(DataStream, 1);  
1322 - 5ae: 31 96 adiw r30, 0x01 ; 1  
1323 - Length--;  
1324 - 5b0: 61 50 subi r22, 0x01 ; 1  
1325 - 5b2: 71 09 sbc r23, r1  
1326 - BytesInEndpoint++;  
1327 - 5b4: 01 96 adiw r24, 0x01 ; 1  
1328 - 5b6: f2 cf rjmp .-28 ; 0x59c <Endpoint_Write_Control_PStream_LE+0x54>  
1329 - }  
1330 -  
1331 - LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);  
1332 - 5b8: 21 e0 ldi r18, 0x01 ; 1  
1333 - 5ba: 08 97 sbiw r24, 0x08 ; 8  
1334 - 5bc: 09 f0 breq .+2 ; 0x5c0 <Endpoint_Write_Control_PStream_LE+0x78>  
1335 - 5be: 20 e0 ldi r18, 0x00 ; 0  
1336 - */  
1337 - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;  
1338 - static inline void Endpoint_ClearIN(void)  
1339 - {  
1340 - #if !defined(CONTROL_ONLY_DEVICE)  
1341 - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));  
1342 - 5c0: 80 91 e8 00 lds r24, 0x00E8  
1343 - 5c4: 8e 77 andi r24, 0x7E ; 126  
1344 - 5c6: 80 93 e8 00 sts 0x00E8, r24  
1345 - 5ca: d1 cf rjmp .-94 ; 0x56e <Endpoint_Write_Control_PStream_LE+0x26>  
1346 - if (Length > USB_ControlRequest.wLength)  
1347 - Length = USB_ControlRequest.wLength;  
1348 - else if (!(Length))  
1349 - Endpoint_ClearIN();  
1350 -  
1351 - while (Length || LastPacketFull)  
1352 - 5cc: 21 11 cpse r18, r1  
1353 - 5ce: d2 cf rjmp .-92 ; 0x574 <Endpoint_Write_Control_PStream_LE+0x2c>  
1354 - 5d0: 09 c0 rjmp .+18 ; 0x5e4 <Endpoint_Write_Control_PStream_LE+0x9c>  
1355 - }  
1356 - }  
1357 -  
1358 - while (!(Endpoint_IsOUTReceived()))  
1359 - {  
1360 - uint8_t USB_DeviceState_LCL = USB_DeviceState;  
1361 - 5d2: 8e b3 in r24, 0x1e ; 30  
1362 -  
1363 - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)  
1364 - 5d4: 88 23 and r24, r24  
1365 - 5d6: 61 f0 breq .+24 ; 0x5f0 <Endpoint_Write_Control_PStream_LE+0xa8>  
1366 - return ENDPOINT_RWCSTREAM_DeviceDisconnected;  
1367 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1368 - 5d8: 85 30 cpi r24, 0x05 ; 5  
1369 - 5da: 61 f0 breq .+24 ; 0x5f4 <Endpoint_Write_Control_PStream_LE+0xac>  
1370 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
1371 - */  
1372 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1373 - static inline bool Endpoint_IsSETUPReceived(void)  
1374 - {  
1375 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
1376 - 5dc: 80 91 e8 00 lds r24, 0x00E8  
1377 - return ENDPOINT_RWCSTREAM_BusSuspended;  
1378 - else if (Endpoint_IsSETUPReceived())  
1379 - 5e0: 83 fd sbrc r24, 3  
1380 - 5e2: 0a c0 rjmp .+20 ; 0x5f8 <Endpoint_Write_Control_PStream_LE+0xb0>  
1381 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.  
1382 - */  
1383 - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1384 - static inline bool Endpoint_IsOUTReceived(void)  
1385 - {  
1386 - return ((UEINTX & (1 << RXOUTI)) ? true : false);  
1387 - 5e4: 80 91 e8 00 lds r24, 0x00E8  
1388 - LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);  
1389 - Endpoint_ClearIN();  
1390 - }  
1391 - }  
1392 -  
1393 - while (!(Endpoint_IsOUTReceived()))  
1394 - 5e8: 82 ff sbrs r24, 2  
1395 - 5ea: f3 cf rjmp .-26 ; 0x5d2 <Endpoint_Write_Control_PStream_LE+0x8a>  
1396 - return ENDPOINT_RWCSTREAM_BusSuspended;  
1397 - else if (Endpoint_IsSETUPReceived())  
1398 - return ENDPOINT_RWCSTREAM_HostAborted;  
1399 - }  
1400 -  
1401 - return ENDPOINT_RWCSTREAM_NoError;  
1402 - 5ec: 80 e0 ldi r24, 0x00 ; 0  
1403 - 5ee: 08 95 ret  
1404 - while (Length || LastPacketFull)  
1405 - {  
1406 - uint8_t USB_DeviceState_LCL = USB_DeviceState;  
1407 -  
1408 - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)  
1409 - return ENDPOINT_RWCSTREAM_DeviceDisconnected;  
1410 - 5f0: 82 e0 ldi r24, 0x02 ; 2  
1411 - 5f2: 08 95 ret  
1412 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1413 - return ENDPOINT_RWCSTREAM_BusSuspended;  
1414 - 5f4: 83 e0 ldi r24, 0x03 ; 3  
1415 - 5f6: 08 95 ret  
1416 - else if (Endpoint_IsSETUPReceived())  
1417 - return ENDPOINT_RWCSTREAM_HostAborted;  
1418 - 5f8: 81 e0 ldi r24, 0x01 ; 1  
1419 - else if (Endpoint_IsSETUPReceived())  
1420 - return ENDPOINT_RWCSTREAM_HostAborted;  
1421 - }  
1422 -  
1423 - return ENDPOINT_RWCSTREAM_NoError;  
1424 -}  
1425 - 5fa: 08 95 ret  
1426 -  
1427 -000005fc <Endpoint_ConfigureEndpoint_Prv>:  
1428 - UEIENX = 0;  
1429 - UEINTX = 0;  
1430 - UECFG1X = 0;  
1431 - Endpoint_DisableEndpoint();  
1432 - }  
1433 -}  
1434 - 5fc: 98 2f mov r25, r24  
1435 - 5fe: 95 30 cpi r25, 0x05 ; 5  
1436 - 600: 58 f5 brcc .+86 ; 0x658 <Endpoint_ConfigureEndpoint_Prv+0x5c>  
1437 - 602: 90 93 e9 00 sts 0x00E9, r25  
1438 - 606: 98 17 cp r25, r24  
1439 - 608: 39 f0 breq .+14 ; 0x618 <Endpoint_ConfigureEndpoint_Prv+0x1c>  
1440 - 60a: 70 91 ec 00 lds r23, 0x00EC  
1441 - 60e: 20 91 ed 00 lds r18, 0x00ED  
1442 - 612: 50 91 f0 00 lds r21, 0x00F0  
1443 - 616: 03 c0 rjmp .+6 ; 0x61e <Endpoint_ConfigureEndpoint_Prv+0x22>  
1444 - 618: 24 2f mov r18, r20  
1445 - 61a: 76 2f mov r23, r22  
1446 - 61c: 50 e0 ldi r21, 0x00 ; 0  
1447 - 61e: 21 ff sbrs r18, 1  
1448 - 620: 19 c0 rjmp .+50 ; 0x654 <Endpoint_ConfigureEndpoint_Prv+0x58>  
1449 - 622: 30 91 eb 00 lds r19, 0x00EB  
1450 - 626: 3e 7f andi r19, 0xFE ; 254  
1451 - 628: 30 93 eb 00 sts 0x00EB, r19  
1452 - 62c: 30 91 ed 00 lds r19, 0x00ED  
1453 - 630: 3d 7f andi r19, 0xFD ; 253  
1454 - 632: 30 93 ed 00 sts 0x00ED, r19  
1455 - 636: 30 91 eb 00 lds r19, 0x00EB  
1456 - 63a: 31 60 ori r19, 0x01 ; 1  
1457 - 63c: 30 93 eb 00 sts 0x00EB, r19  
1458 - 640: 70 93 ec 00 sts 0x00EC, r23  
1459 - 644: 20 93 ed 00 sts 0x00ED, r18  
1460 - 648: 50 93 f0 00 sts 0x00F0, r21  
1461 - 64c: 20 91 ee 00 lds r18, 0x00EE  
1462 - 650: 27 ff sbrs r18, 7  
1463 - 652: 07 c0 rjmp .+14 ; 0x662 <Endpoint_ConfigureEndpoint_Prv+0x66>  
1464 - 654: 9f 5f subi r25, 0xFF ; 255  
1465 - 656: d3 cf rjmp .-90 ; 0x5fe <Endpoint_ConfigureEndpoint_Prv+0x2>  
1466 - 658: 8f 70 andi r24, 0x0F ; 15  
1467 - 65a: 80 93 e9 00 sts 0x00E9, r24  
1468 - 65e: 81 e0 ldi r24, 0x01 ; 1  
1469 - 660: 08 95 ret  
1470 - 662: 80 e0 ldi r24, 0x00 ; 0  
1471 - 664: 08 95 ret  
1472 -  
1473 -00000666 <Endpoint_ConfigureEndpointTable>:  
1474 - 666: ef 92 push r14  
1475 - 668: ff 92 push r15  
1476 - 66a: 0f 93 push r16  
1477 - 66c: 1f 93 push r17  
1478 - 66e: cf 93 push r28  
1479 - 670: df 93 push r29  
1480 - 672: e6 2e mov r14, r22  
1481 - 674: ec 01 movw r28, r24  
1482 - 676: 8c 01 movw r16, r24  
1483 - 678: 0c 5f subi r16, 0xFC ; 252  
1484 - 67a: 1f 4f sbci r17, 0xFF ; 255  
1485 - 67c: f1 2c mov r15, r1  
1486 - 67e: fe 14 cp r15, r14  
1487 - 680: 99 f1 breq .+102 ; 0x6e8 <Endpoint_ConfigureEndpointTable+0x82>  
1488 - 682: 98 81 ld r25, Y  
1489 - 684: 99 23 and r25, r25  
1490 - 686: 59 f1 breq .+86 ; 0x6de <Endpoint_ConfigureEndpointTable+0x78>  
1491 - 688: f8 01 movw r30, r16  
1492 - 68a: 20 81 ld r18, Z  
1493 - 68c: 69 81 ldd r22, Y+1 ; 0x01  
1494 - 68e: 7a 81 ldd r23, Y+2 ; 0x02  
1495 - 690: 31 97 sbiw r30, 0x01 ; 1  
1496 - 692: 30 81 ld r19, Z  
1497 - 694: 89 2f mov r24, r25  
1498 - 696: 8f 70 andi r24, 0x0F ; 15  
1499 - 698: 85 30 cpi r24, 0x05 ; 5  
1500 - 69a: 10 f0 brcs .+4 ; 0x6a0 <Endpoint_ConfigureEndpointTable+0x3a>  
1501 - 69c: 80 e0 ldi r24, 0x00 ; 0  
1502 - 69e: 25 c0 rjmp .+74 ; 0x6ea <Endpoint_ConfigureEndpointTable+0x84>  
1503 - 6a0: 22 30 cpi r18, 0x02 ; 2  
1504 - 6a2: 10 f4 brcc .+4 ; 0x6a8 <Endpoint_ConfigureEndpointTable+0x42>  
1505 - 6a4: 42 e0 ldi r20, 0x02 ; 2  
1506 - 6a6: 01 c0 rjmp .+2 ; 0x6aa <Endpoint_ConfigureEndpointTable+0x44>  
1507 - 6a8: 46 e0 ldi r20, 0x06 ; 6  
1508 - 6aa: e8 e0 ldi r30, 0x08 ; 8  
1509 - 6ac: f0 e0 ldi r31, 0x00 ; 0  
1510 - 6ae: 20 e0 ldi r18, 0x00 ; 0  
1511 - 6b0: e6 17 cp r30, r22  
1512 - 6b2: f7 07 cpc r31, r23  
1513 - 6b4: 20 f4 brcc .+8 ; 0x6be <Endpoint_ConfigureEndpointTable+0x58>  
1514 - 6b6: 2f 5f subi r18, 0xFF ; 255  
1515 - 6b8: ee 0f add r30, r30  
1516 - 6ba: ff 1f adc r31, r31  
1517 - 6bc: f9 cf rjmp .-14 ; 0x6b0 <Endpoint_ConfigureEndpointTable+0x4a>  
1518 - 6be: 22 95 swap r18  
1519 - 6c0: 20 7f andi r18, 0xF0 ; 240  
1520 - 6c2: 42 2b or r20, r18  
1521 - 6c4: 23 2f mov r18, r19  
1522 - 6c6: 22 95 swap r18  
1523 - 6c8: 22 0f add r18, r18  
1524 - 6ca: 22 0f add r18, r18  
1525 - 6cc: 20 7c andi r18, 0xC0 ; 192  
1526 - 6ce: 99 1f adc r25, r25  
1527 - 6d0: 99 27 eor r25, r25  
1528 - 6d2: 99 1f adc r25, r25  
1529 - 6d4: 62 2f mov r22, r18  
1530 - 6d6: 69 2b or r22, r25  
1531 - 6d8: 91 df rcall .-222 ; 0x5fc <Endpoint_ConfigureEndpoint_Prv>  
1532 - 6da: 88 23 and r24, r24  
1533 - 6dc: f9 f2 breq .-66 ; 0x69c <Endpoint_ConfigureEndpointTable+0x36>  
1534 - 6de: f3 94 inc r15  
1535 - 6e0: 25 96 adiw r28, 0x05 ; 5  
1536 - 6e2: 0b 5f subi r16, 0xFB ; 251  
1537 - 6e4: 1f 4f sbci r17, 0xFF ; 255  
1538 - 6e6: cb cf rjmp .-106 ; 0x67e <Endpoint_ConfigureEndpointTable+0x18>  
1539 - 6e8: 81 e0 ldi r24, 0x01 ; 1  
1540 - 6ea: df 91 pop r29  
1541 - 6ec: cf 91 pop r28  
1542 - 6ee: 1f 91 pop r17  
1543 - 6f0: 0f 91 pop r16  
1544 - 6f2: ff 90 pop r15  
1545 - 6f4: ef 90 pop r14  
1546 - 6f6: 08 95 ret  
1547 -  
1548 -000006f8 <Endpoint_ClearStatusStage>:  
1549 -  
1550 -void Endpoint_ClearStatusStage(void)  
1551 -{  
1552 - if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)  
1553 - 6f8: 80 91 38 02 lds r24, 0x0238  
1554 - 6fc: 87 ff sbrs r24, 7  
1555 - 6fe: 0f c0 rjmp .+30 ; 0x71e <Endpoint_ClearStatusStage+0x26>  
1556 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.  
1557 - */  
1558 - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1559 - static inline bool Endpoint_IsOUTReceived(void)  
1560 - {  
1561 - return ((UEINTX & (1 << RXOUTI)) ? true : false);  
1562 - 700: 80 91 e8 00 lds r24, 0x00E8  
1563 - {  
1564 - while (!(Endpoint_IsOUTReceived()))  
1565 - 704: 82 fd sbrc r24, 2  
1566 - 706: 04 c0 rjmp .+8 ; 0x710 <Endpoint_ClearStatusStage+0x18>  
1567 - {  
1568 - if (USB_DeviceState == DEVICE_STATE_Unattached)  
1569 - 708: 8e b3 in r24, 0x1e ; 30  
1570 - 70a: 81 11 cpse r24, r1  
1571 - 70c: f9 cf rjmp .-14 ; 0x700 <Endpoint_ClearStatusStage+0x8>  
1572 - 70e: 10 c0 rjmp .+32 ; 0x730 <Endpoint_ClearStatusStage+0x38>  
1573 - */  
1574 - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;  
1575 - static inline void Endpoint_ClearOUT(void)  
1576 - {  
1577 - #if !defined(CONTROL_ONLY_DEVICE)  
1578 - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));  
1579 - 710: 80 91 e8 00 lds r24, 0x00E8  
1580 - 714: 8b 77 andi r24, 0x7B ; 123  
1581 - 716: 0a c0 rjmp .+20 ; 0x72c <Endpoint_ClearStatusStage+0x34>  
1582 - }  
1583 - else  
1584 - {  
1585 - while (!(Endpoint_IsINReady()))  
1586 - {  
1587 - if (USB_DeviceState == DEVICE_STATE_Unattached)  
1588 - 718: 8e b3 in r24, 0x1e ; 30  
1589 - 71a: 88 23 and r24, r24  
1590 - 71c: 49 f0 breq .+18 ; 0x730 <Endpoint_ClearStatusStage+0x38>  
1591 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
1592 - */  
1593 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1594 - static inline bool Endpoint_IsINReady(void)  
1595 - {  
1596 - return ((UEINTX & (1 << TXINI)) ? true : false);  
1597 - 71e: 80 91 e8 00 lds r24, 0x00E8  
1598 -  
1599 - Endpoint_ClearOUT();  
1600 - }  
1601 - else  
1602 - {  
1603 - while (!(Endpoint_IsINReady()))  
1604 - 722: 80 ff sbrs r24, 0  
1605 - 724: f9 cf rjmp .-14 ; 0x718 <Endpoint_ClearStatusStage+0x20>  
1606 - */  
1607 - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;  
1608 - static inline void Endpoint_ClearIN(void)  
1609 - {  
1610 - #if !defined(CONTROL_ONLY_DEVICE)  
1611 - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));  
1612 - 726: 80 91 e8 00 lds r24, 0x00E8  
1613 - 72a: 8e 77 andi r24, 0x7E ; 126  
1614 - 72c: 80 93 e8 00 sts 0x00E8, r24  
1615 - 730: 08 95 ret  
1616 -  
1617 -00000732 <Endpoint_WaitUntilReady>:  
1618 - * \return Current USB frame number from the USB controller.  
1619 - */  
1620 - static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;  
1621 - static inline uint16_t USB_Device_GetFrameNumber(void)  
1622 - {  
1623 - return UDFNUM;  
1624 - 732: 20 91 e4 00 lds r18, 0x00E4  
1625 - 736: 30 91 e5 00 lds r19, 0x00E5  
1626 - 73a: 95 e6 ldi r25, 0x65 ; 101  
1627 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.  
1628 - */  
1629 - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1630 - static inline uint8_t Endpoint_GetEndpointDirection(void)  
1631 - {  
1632 - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;  
1633 - 73c: 40 91 ec 00 lds r20, 0x00EC  
1634 - 740: 84 2f mov r24, r20  
1635 - 742: 81 70 andi r24, 0x01 ; 1  
1636 - 744: 40 ff sbrs r20, 0  
1637 - 746: 21 c0 rjmp .+66 ; 0x78a <Endpoint_WaitUntilReady+0x58>  
1638 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
1639 - */  
1640 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1641 - static inline bool Endpoint_IsINReady(void)  
1642 - {  
1643 - return ((UEINTX & (1 << TXINI)) ? true : false);  
1644 - 748: 80 91 e8 00 lds r24, 0x00E8  
1645 -  
1646 - for (;;)  
1647 - {  
1648 - if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)  
1649 - {  
1650 - if (Endpoint_IsINReady())  
1651 - 74c: 80 fd sbrc r24, 0  
1652 - 74e: 1b c0 rjmp .+54 ; 0x786 <Endpoint_WaitUntilReady+0x54>  
1653 - {  
1654 - if (Endpoint_IsOUTReceived())  
1655 - return ENDPOINT_READYWAIT_NoError;  
1656 - }  
1657 -  
1658 - uint8_t USB_DeviceState_LCL = USB_DeviceState;  
1659 - 750: 8e b3 in r24, 0x1e ; 30  
1660 -  
1661 - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)  
1662 - 752: 88 23 and r24, r24  
1663 - 754: 91 f0 breq .+36 ; 0x77a <Endpoint_WaitUntilReady+0x48>  
1664 - return ENDPOINT_READYWAIT_DeviceDisconnected;  
1665 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1666 - 756: 85 30 cpi r24, 0x05 ; 5  
1667 - 758: 91 f0 breq .+36 ; 0x77e <Endpoint_WaitUntilReady+0x4c>  
1668 - * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.  
1669 - */  
1670 - static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1671 - static inline bool Endpoint_IsStalled(void)  
1672 - {  
1673 - return ((UECONX & (1 << STALLRQ)) ? true : false);  
1674 - 75a: 80 91 eb 00 lds r24, 0x00EB  
1675 - return ENDPOINT_READYWAIT_BusSuspended;  
1676 - else if (Endpoint_IsStalled())  
1677 - 75e: 85 fd sbrc r24, 5  
1678 - 760: 10 c0 rjmp .+32 ; 0x782 <Endpoint_WaitUntilReady+0x50>  
1679 - 762: 40 91 e4 00 lds r20, 0x00E4  
1680 - 766: 50 91 e5 00 lds r21, 0x00E5  
1681 - return ENDPOINT_READYWAIT_EndpointStalled;  
1682 -  
1683 - uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();  
1684 -  
1685 - if (CurrentFrameNumber != PreviousFrameNumber)  
1686 - 76a: 42 17 cp r20, r18  
1687 - 76c: 53 07 cpc r21, r19  
1688 - 76e: 31 f3 breq .-52 ; 0x73c <Endpoint_WaitUntilReady+0xa>  
1689 - 770: 9a 01 movw r18, r20  
1690 - 772: 91 50 subi r25, 0x01 ; 1  
1691 - {  
1692 - PreviousFrameNumber = CurrentFrameNumber;  
1693 -  
1694 - if (!(TimeoutMSRem--))  
1695 - 774: 19 f7 brne .-58 ; 0x73c <Endpoint_WaitUntilReady+0xa>  
1696 - return ENDPOINT_READYWAIT_Timeout;  
1697 - 776: 84 e0 ldi r24, 0x04 ; 4  
1698 - 778: 08 95 ret  
1699 - }  
1700 -  
1701 - uint8_t USB_DeviceState_LCL = USB_DeviceState;  
1702 -  
1703 - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)  
1704 - return ENDPOINT_READYWAIT_DeviceDisconnected;  
1705 - 77a: 82 e0 ldi r24, 0x02 ; 2  
1706 - 77c: 08 95 ret  
1707 - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)  
1708 - return ENDPOINT_READYWAIT_BusSuspended;  
1709 - 77e: 83 e0 ldi r24, 0x03 ; 3  
1710 - 780: 08 95 ret  
1711 - else if (Endpoint_IsStalled())  
1712 - return ENDPOINT_READYWAIT_EndpointStalled;  
1713 - 782: 81 e0 ldi r24, 0x01 ; 1  
1714 - 784: 08 95 ret  
1715 - for (;;)  
1716 - {  
1717 - if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)  
1718 - {  
1719 - if (Endpoint_IsINReady())  
1720 - return ENDPOINT_READYWAIT_NoError;  
1721 - 786: 80 e0 ldi r24, 0x00 ; 0  
1722 - 788: 08 95 ret  
1723 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.  
1724 - */  
1725 - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
1726 - static inline bool Endpoint_IsOUTReceived(void)  
1727 - {  
1728 - return ((UEINTX & (1 << RXOUTI)) ? true : false);  
1729 - 78a: 40 91 e8 00 lds r20, 0x00E8  
1730 - }  
1731 - else  
1732 - {  
1733 - if (Endpoint_IsOUTReceived())  
1734 - 78e: 42 ff sbrs r20, 2  
1735 - 790: df cf rjmp .-66 ; 0x750 <Endpoint_WaitUntilReady+0x1e>  
1736 -  
1737 - if (!(TimeoutMSRem--))  
1738 - return ENDPOINT_READYWAIT_Timeout;  
1739 - }  
1740 - }  
1741 -}  
1742 - 792: 08 95 ret  
1743 -  
1744 -00000794 <USB_ResetInterface>:  
1745 -{  
1746 - #if defined(USB_CAN_BE_BOTH)  
1747 - bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);  
1748 - #endif  
1749 -  
1750 - USB_INT_DisableAllInterrupts();  
1751 - 794: 3f d0 rcall .+126 ; 0x814 <USB_INT_DisableAllInterrupts>  
1752 - USB_INT_ClearAllInterrupts();  
1753 - 796: 41 d0 rcall .+130 ; 0x81a <USB_INT_ClearAllInterrupts>  
1754 - }  
1755 -  
1756 - static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;  
1757 - static inline void USB_Controller_Reset(void)  
1758 - {  
1759 - USBCON &= ~(1 << USBE);  
1760 - 798: 80 91 d8 00 lds r24, 0x00D8  
1761 - 79c: 8f 77 andi r24, 0x7F ; 127  
1762 - 79e: 80 93 d8 00 sts 0x00D8, r24  
1763 - USBCON |= (1 << USBE);  
1764 - 7a2: 80 91 d8 00 lds r24, 0x00D8  
1765 - 7a6: 80 68 ori r24, 0x80 ; 128  
1766 - 7a8: 80 93 d8 00 sts 0x00D8, r24  
1767 - }  
1768 -  
1769 - static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;  
1770 - static inline void USB_CLK_Unfreeze(void)  
1771 - {  
1772 - USBCON &= ~(1 << FRZCLK);  
1773 - 7ac: 80 91 d8 00 lds r24, 0x00D8  
1774 - 7b0: 8f 7d andi r24, 0xDF ; 223  
1775 - 7b2: 80 93 d8 00 sts 0x00D8, r24  
1776 -  
1777 - /* Inline Functions: */  
1778 - static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;  
1779 - static inline void USB_PLL_On(void)  
1780 - {  
1781 - PLLCSR = USB_PLL_PSC;  
1782 - 7b6: 19 bc out 0x29, r1 ; 41  
1783 - PLLCSR = (USB_PLL_PSC | (1 << PLLE));  
1784 - 7b8: 82 e0 ldi r24, 0x02 ; 2  
1785 - 7ba: 89 bd out 0x29, r24 ; 41  
1786 -  
1787 - if (!(USB_Options & USB_OPT_MANUAL_PLL))  
1788 - {  
1789 - #if defined(USB_SERIES_2_AVR)  
1790 - USB_PLL_On();  
1791 - while (!(USB_PLL_IsReady()));  
1792 - 7bc: 09 b4 in r0, 0x29 ; 41  
1793 - 7be: 00 fe sbrs r0, 0  
1794 - 7c0: fd cf rjmp .-6 ; 0x7bc <USB_ResetInterface+0x28>  
1795 -}  
1796 -  
1797 -#if defined(USB_CAN_BE_DEVICE)  
1798 -static void USB_Init_Device(void)  
1799 -{  
1800 - USB_DeviceState = DEVICE_STATE_Unattached;  
1801 - 7c2: 1e ba out 0x1e, r1 ; 30  
1802 - USB_Device_ConfigurationNumber = 0;  
1803 - 7c4: 10 92 34 02 sts 0x0234, r1  
1804 -  
1805 - #if !defined(NO_DEVICE_REMOTE_WAKEUP)  
1806 - USB_Device_RemoteWakeupEnabled = false;  
1807 - 7c8: 10 92 36 02 sts 0x0236, r1  
1808 - #endif  
1809 -  
1810 - #if !defined(NO_DEVICE_SELF_POWER)  
1811 - USB_Device_CurrentlySelfPowered = false;  
1812 - 7cc: 10 92 35 02 sts 0x0235, r1  
1813 - uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);  
1814 -  
1815 - if (Number >= ENDPOINT_TOTAL_ENDPOINTS)  
1816 - return false;  
1817 -  
1818 - return Endpoint_ConfigureEndpoint_Prv(Number,  
1819 - 7d0: 42 e0 ldi r20, 0x02 ; 2  
1820 - 7d2: 60 e0 ldi r22, 0x00 ; 0  
1821 - 7d4: 80 e0 ldi r24, 0x00 ; 0  
1822 - 7d6: 12 df rcall .-476 ; 0x5fc <Endpoint_ConfigureEndpoint_Prv>  
1823 - #if defined(USB_CAN_BE_DEVICE)  
1824 - case USB_INT_WAKEUPI:  
1825 - UDINT &= ~(1 << WAKEUPI);  
1826 - break;  
1827 - case USB_INT_SUSPI:  
1828 - UDINT &= ~(1 << SUSPI);  
1829 - 7d8: 80 91 e1 00 lds r24, 0x00E1  
1830 - 7dc: 8e 7f andi r24, 0xFE ; 254  
1831 - 7de: 80 93 e1 00 sts 0x00E1, r24  
1832 - #if defined(USB_CAN_BE_DEVICE)  
1833 - case USB_INT_WAKEUPI:  
1834 - UDIEN |= (1 << WAKEUPE);  
1835 - break;  
1836 - case USB_INT_SUSPI:  
1837 - UDIEN |= (1 << SUSPE);  
1838 - 7e2: 80 91 e2 00 lds r24, 0x00E2  
1839 - 7e6: 81 60 ori r24, 0x01 ; 1  
1840 - 7e8: 80 93 e2 00 sts 0x00E2, r24  
1841 - break;  
1842 - case USB_INT_EORSTI:  
1843 - UDIEN |= (1 << EORSTE);  
1844 - 7ec: 80 91 e2 00 lds r24, 0x00E2  
1845 - 7f0: 88 60 ori r24, 0x08 ; 8  
1846 - 7f2: 80 93 e2 00 sts 0x00E2, r24  
1847 - * register and despite the datasheet making no mention of its requirement in host mode.  
1848 - */  
1849 - static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;  
1850 - static inline void USB_Attach(void)  
1851 - {  
1852 - UDCON &= ~(1 << DETACH);  
1853 - 7f6: 80 91 e0 00 lds r24, 0x00E0  
1854 - 7fa: 8e 7f andi r24, 0xFE ; 254  
1855 - 7fc: 80 93 e0 00 sts 0x00E0, r24  
1856 - 800: 08 95 ret  
1857 -  
1858 -00000802 <USB_Init>:  
1859 - static inline void USB_REG_On(void)  
1860 - {  
1861 - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)  
1862 - UHWCON |= (1 << UVREGE);  
1863 - #else  
1864 - REGCR &= ~(1 << REGDIS);  
1865 - 802: e3 e6 ldi r30, 0x63 ; 99  
1866 - 804: f0 e0 ldi r31, 0x00 ; 0  
1867 - 806: 80 81 ld r24, Z  
1868 - 808: 8e 7f andi r24, 0xFE ; 254  
1869 - 80a: 80 83 st Z, r24  
1870 - UHWCON &= ~(1 << UIDE);  
1871 - USB_CurrentMode = Mode;  
1872 - }  
1873 - #endif  
1874 -  
1875 - USB_IsInitialized = true;  
1876 - 80c: 81 e0 ldi r24, 0x01 ; 1  
1877 - 80e: 80 93 37 02 sts 0x0237, r24  
1878 -  
1879 - USB_ResetInterface();  
1880 - 812: c0 cf rjmp .-128 ; 0x794 <USB_ResetInterface>  
1881 -  
1882 -00000814 <USB_INT_DisableAllInterrupts>:  
1883 - #if defined(USB_CAN_BE_HOST)  
1884 - UHIEN = 0;  
1885 - #endif  
1886 -  
1887 - #if defined(USB_CAN_BE_DEVICE)  
1888 - UDIEN = 0;  
1889 - 814: 10 92 e2 00 sts 0x00E2, r1  
1890 - 818: 08 95 ret  
1891 -  
1892 -0000081a <USB_INT_ClearAllInterrupts>:  
1893 - #if defined(USB_CAN_BE_HOST)  
1894 - UHINT = 0;  
1895 - #endif  
1896 -  
1897 - #if defined(USB_CAN_BE_DEVICE)  
1898 - UDINT = 0;  
1899 - 81a: 10 92 e1 00 sts 0x00E1, r1  
1900 - 81e: 08 95 ret  
1901 -  
1902 -00000820 <__vector_11>:  
1903 - #endif  
1904 -}  
1905 -  
1906 -ISR(USB_GEN_vect, ISR_BLOCK)  
1907 -{  
1908 - 820: 1f 92 push r1  
1909 - 822: 0f 92 push r0  
1910 - 824: 0f b6 in r0, 0x3f ; 63  
1911 - 826: 0f 92 push r0  
1912 - 828: 11 24 eor r1, r1  
1913 - 82a: 2f 93 push r18  
1914 - 82c: 3f 93 push r19  
1915 - 82e: 4f 93 push r20  
1916 - 830: 5f 93 push r21  
1917 - 832: 6f 93 push r22  
1918 - 834: 7f 93 push r23  
1919 - 836: 8f 93 push r24  
1920 - 838: 9f 93 push r25  
1921 - 83a: af 93 push r26  
1922 - 83c: bf 93 push r27  
1923 - 83e: ef 93 push r30  
1924 - 840: ff 93 push r31  
1925 - case USB_INT_SUSPI:  
1926 - return (UDINT & (1 << SUSPI));  
1927 - case USB_INT_EORSTI:  
1928 - return (UDINT & (1 << EORSTI));  
1929 - case USB_INT_SOFI:  
1930 - return (UDINT & (1 << SOFI));  
1931 - 842: 80 91 e1 00 lds r24, 0x00E1  
1932 - #if defined(USB_CAN_BE_DEVICE)  
1933 - #if !defined(NO_SOF_EVENTS)  
1934 - if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))  
1935 - 846: 82 ff sbrs r24, 2  
1936 - 848: 0a c0 rjmp .+20 ; 0x85e <__vector_11+0x3e>  
1937 - case USB_INT_SUSPI:  
1938 - return (UDIEN & (1 << SUSPE));  
1939 - case USB_INT_EORSTI:  
1940 - return (UDIEN & (1 << EORSTE));  
1941 - case USB_INT_SOFI:  
1942 - return (UDIEN & (1 << SOFE));  
1943 - 84a: 80 91 e2 00 lds r24, 0x00E2  
1944 - 84e: 82 ff sbrs r24, 2  
1945 - 850: 06 c0 rjmp .+12 ; 0x85e <__vector_11+0x3e>  
1946 - break;  
1947 - case USB_INT_EORSTI:  
1948 - UDINT &= ~(1 << EORSTI);  
1949 - break;  
1950 - case USB_INT_SOFI:  
1951 - UDINT &= ~(1 << SOFI);  
1952 - 852: 80 91 e1 00 lds r24, 0x00E1  
1953 - 856: 8b 7f andi r24, 0xFB ; 251  
1954 - 858: 80 93 e1 00 sts 0x00E1, r24  
1955 - {  
1956 - USB_INT_Clear(USB_INT_SOFI);  
1957 -  
1958 - EVENT_USB_Device_StartOfFrame();  
1959 - 85c: 22 d2 rcall .+1092 ; 0xca2 <USB_Event_Stub>  
1960 - #endif  
1961 - #if defined(USB_CAN_BE_DEVICE)  
1962 - case USB_INT_WAKEUPI:  
1963 - return (UDINT & (1 << WAKEUPI));  
1964 - case USB_INT_SUSPI:  
1965 - return (UDINT & (1 << SUSPI));  
1966 - 85e: 80 91 e1 00 lds r24, 0x00E1  
1967 - EVENT_USB_Device_Disconnect();  
1968 - }  
1969 - }  
1970 - #endif  
1971 -  
1972 - if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))  
1973 - 862: 80 ff sbrs r24, 0  
1974 - 864: 16 c0 rjmp .+44 ; 0x892 <__vector_11+0x72>  
1975 - #endif  
1976 - #if defined(USB_CAN_BE_DEVICE)  
1977 - case USB_INT_WAKEUPI:  
1978 - return (UDIEN & (1 << WAKEUPE));  
1979 - case USB_INT_SUSPI:  
1980 - return (UDIEN & (1 << SUSPE));  
1981 - 866: 80 91 e2 00 lds r24, 0x00E2  
1982 - 86a: 80 ff sbrs r24, 0  
1983 - 86c: 12 c0 rjmp .+36 ; 0x892 <__vector_11+0x72>  
1984 - #if defined(USB_CAN_BE_DEVICE)  
1985 - case USB_INT_WAKEUPI:  
1986 - UDIEN &= ~(1 << WAKEUPE);  
1987 - break;  
1988 - case USB_INT_SUSPI:  
1989 - UDIEN &= ~(1 << SUSPE);  
1990 - 86e: 80 91 e2 00 lds r24, 0x00E2  
1991 - 872: 8e 7f andi r24, 0xFE ; 254  
1992 - 874: 80 93 e2 00 sts 0x00E2, r24  
1993 - USBCON |= (1 << IDTE);  
1994 - break;  
1995 - #endif  
1996 - #if defined(USB_CAN_BE_DEVICE)  
1997 - case USB_INT_WAKEUPI:  
1998 - UDIEN |= (1 << WAKEUPE);  
1999 - 878: 80 91 e2 00 lds r24, 0x00E2  
2000 - 87c: 80 61 ori r24, 0x10 ; 16  
2001 - 87e: 80 93 e2 00 sts 0x00E2, r24  
2002 - #endif  
2003 -  
2004 - static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;  
2005 - static inline void USB_CLK_Freeze(void)  
2006 - {  
2007 - USBCON |= (1 << FRZCLK);  
2008 - 882: 80 91 d8 00 lds r24, 0x00D8  
2009 - 886: 80 62 ori r24, 0x20 ; 32  
2010 - 888: 80 93 d8 00 sts 0x00D8, r24  
2011 - }  
2012 -  
2013 - static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;  
2014 - static inline void USB_PLL_Off(void)  
2015 - {  
2016 - PLLCSR = 0;  
2017 - 88c: 19 bc out 0x29, r1 ; 41  
2018 -  
2019 - if (!(USB_Options & USB_OPT_MANUAL_PLL))  
2020 - USB_PLL_Off();  
2021 -  
2022 - #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)  
2023 - USB_DeviceState = DEVICE_STATE_Unattached;  
2024 - 88e: 1e ba out 0x1e, r1 ; 30  
2025 - EVENT_USB_Device_Disconnect();  
2026 - 890: 42 dd rcall .-1404 ; 0x316 <EVENT_USB_Device_Disconnect>  
2027 - case USB_INT_IDTI:  
2028 - return (USBINT & (1 << IDTI));  
2029 - #endif  
2030 - #if defined(USB_CAN_BE_DEVICE)  
2031 - case USB_INT_WAKEUPI:  
2032 - return (UDINT & (1 << WAKEUPI));  
2033 - 892: 80 91 e1 00 lds r24, 0x00E1  
2034 - USB_DeviceState = DEVICE_STATE_Suspended;  
2035 - EVENT_USB_Device_Suspend();  
2036 - #endif  
2037 - }  
2038 -  
2039 - if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))  
2040 - 896: 84 ff sbrs r24, 4  
2041 - 898: 2d c0 rjmp .+90 ; 0x8f4 <__vector_11+0xd4>  
2042 - case USB_INT_IDTI:  
2043 - return (USBCON & (1 << IDTE));  
2044 - #endif  
2045 - #if defined(USB_CAN_BE_DEVICE)  
2046 - case USB_INT_WAKEUPI:  
2047 - return (UDIEN & (1 << WAKEUPE));  
2048 - 89a: 80 91 e2 00 lds r24, 0x00E2  
2049 - 89e: 84 ff sbrs r24, 4  
2050 - 8a0: 29 c0 rjmp .+82 ; 0x8f4 <__vector_11+0xd4>  
2051 -  
2052 - /* Inline Functions: */  
2053 - static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;  
2054 - static inline void USB_PLL_On(void)  
2055 - {  
2056 - PLLCSR = USB_PLL_PSC;  
2057 - 8a2: 19 bc out 0x29, r1 ; 41  
2058 - PLLCSR = (USB_PLL_PSC | (1 << PLLE));  
2059 - 8a4: 82 e0 ldi r24, 0x02 ; 2  
2060 - 8a6: 89 bd out 0x29, r24 ; 41  
2061 - {  
2062 - if (!(USB_Options & USB_OPT_MANUAL_PLL))  
2063 - {  
2064 - USB_PLL_On();  
2065 - while (!(USB_PLL_IsReady()));  
2066 - 8a8: 09 b4 in r0, 0x29 ; 41  
2067 - 8aa: 00 fe sbrs r0, 0  
2068 - 8ac: fd cf rjmp .-6 ; 0x8a8 <__vector_11+0x88>  
2069 - }  
2070 -  
2071 - static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;  
2072 - static inline void USB_CLK_Unfreeze(void)  
2073 - {  
2074 - USBCON &= ~(1 << FRZCLK);  
2075 - 8ae: 80 91 d8 00 lds r24, 0x00D8  
2076 - 8b2: 8f 7d andi r24, 0xDF ; 223  
2077 - 8b4: 80 93 d8 00 sts 0x00D8, r24  
2078 - USBINT &= ~(1 << IDTI);  
2079 - break;  
2080 - #endif  
2081 - #if defined(USB_CAN_BE_DEVICE)  
2082 - case USB_INT_WAKEUPI:  
2083 - UDINT &= ~(1 << WAKEUPI);  
2084 - 8b8: 80 91 e1 00 lds r24, 0x00E1  
2085 - 8bc: 8f 7e andi r24, 0xEF ; 239  
2086 - 8be: 80 93 e1 00 sts 0x00E1, r24  
2087 - USBCON &= ~(1 << IDTE);  
2088 - break;  
2089 - #endif  
2090 - #if defined(USB_CAN_BE_DEVICE)  
2091 - case USB_INT_WAKEUPI:  
2092 - UDIEN &= ~(1 << WAKEUPE);  
2093 - 8c2: 80 91 e2 00 lds r24, 0x00E2  
2094 - 8c6: 8f 7e andi r24, 0xEF ; 239  
2095 - 8c8: 80 93 e2 00 sts 0x00E2, r24  
2096 - #if defined(USB_CAN_BE_DEVICE)  
2097 - case USB_INT_WAKEUPI:  
2098 - UDIEN |= (1 << WAKEUPE);  
2099 - break;  
2100 - case USB_INT_SUSPI:  
2101 - UDIEN |= (1 << SUSPE);  
2102 - 8cc: 80 91 e2 00 lds r24, 0x00E2  
2103 - 8d0: 81 60 ori r24, 0x01 ; 1  
2104 - 8d2: 80 93 e2 00 sts 0x00E2, r24  
2105 - USB_INT_Clear(USB_INT_WAKEUPI);  
2106 -  
2107 - USB_INT_Disable(USB_INT_WAKEUPI);  
2108 - USB_INT_Enable(USB_INT_SUSPI);  
2109 -  
2110 - if (USB_Device_ConfigurationNumber)  
2111 - 8d6: 80 91 34 02 lds r24, 0x0234  
2112 - 8da: 88 23 and r24, r24  
2113 - 8dc: 11 f0 breq .+4 ; 0x8e2 <__vector_11+0xc2>  
2114 - USB_DeviceState = DEVICE_STATE_Configured;  
2115 - 8de: 84 e0 ldi r24, 0x04 ; 4  
2116 - 8e0: 07 c0 rjmp .+14 ; 0x8f0 <__vector_11+0xd0>  
2117 - }  
2118 -  
2119 - static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;  
2120 - static inline bool USB_Device_IsAddressSet(void)  
2121 - {  
2122 - return (UDADDR & (1 << ADDEN));  
2123 - 8e2: 80 91 e3 00 lds r24, 0x00E3  
2124 - else  
2125 - USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Addressed : DEVICE_STATE_Powered;  
2126 - 8e6: 87 fd sbrc r24, 7  
2127 - 8e8: 02 c0 rjmp .+4 ; 0x8ee <__vector_11+0xce>  
2128 - 8ea: 81 e0 ldi r24, 0x01 ; 1  
2129 - 8ec: 01 c0 rjmp .+2 ; 0x8f0 <__vector_11+0xd0>  
2130 - 8ee: 83 e0 ldi r24, 0x03 ; 3  
2131 - 8f0: 8e bb out 0x1e, r24 ; 30  
2132 -  
2133 - #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)  
2134 - EVENT_USB_Device_Connect();  
2135 - 8f2: 0f dd rcall .-1506 ; 0x312 <EVENT_USB_Device_Connect>  
2136 - case USB_INT_WAKEUPI:  
2137 - return (UDINT & (1 << WAKEUPI));  
2138 - case USB_INT_SUSPI:  
2139 - return (UDINT & (1 << SUSPI));  
2140 - case USB_INT_EORSTI:  
2141 - return (UDINT & (1 << EORSTI));  
2142 - 8f4: 80 91 e1 00 lds r24, 0x00E1  
2143 - #else  
2144 - EVENT_USB_Device_WakeUp();  
2145 - #endif  
2146 - }  
2147 -  
2148 - if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))  
2149 - 8f8: 83 ff sbrs r24, 3  
2150 - 8fa: 26 c0 rjmp .+76 ; 0x948 <__vector_11+0x128>  
2151 - case USB_INT_WAKEUPI:  
2152 - return (UDIEN & (1 << WAKEUPE));  
2153 - case USB_INT_SUSPI:  
2154 - return (UDIEN & (1 << SUSPE));  
2155 - case USB_INT_EORSTI:  
2156 - return (UDIEN & (1 << EORSTE));  
2157 - 8fc: 80 91 e2 00 lds r24, 0x00E2  
2158 - 900: 83 ff sbrs r24, 3  
2159 - 902: 22 c0 rjmp .+68 ; 0x948 <__vector_11+0x128>  
2160 - break;  
2161 - case USB_INT_SUSPI:  
2162 - UDINT &= ~(1 << SUSPI);  
2163 - break;  
2164 - case USB_INT_EORSTI:  
2165 - UDINT &= ~(1 << EORSTI);  
2166 - 904: 80 91 e1 00 lds r24, 0x00E1  
2167 - 908: 87 7f andi r24, 0xF7 ; 247  
2168 - 90a: 80 93 e1 00 sts 0x00E1, r24  
2169 - {  
2170 - USB_INT_Clear(USB_INT_EORSTI);  
2171 -  
2172 - USB_DeviceState = DEVICE_STATE_Default;  
2173 - 90e: 82 e0 ldi r24, 0x02 ; 2  
2174 - 910: 8e bb out 0x1e, r24 ; 30  
2175 - USB_Device_ConfigurationNumber = 0;  
2176 - 912: 10 92 34 02 sts 0x0234, r1  
2177 - #if defined(USB_CAN_BE_DEVICE)  
2178 - case USB_INT_WAKEUPI:  
2179 - UDINT &= ~(1 << WAKEUPI);  
2180 - break;  
2181 - case USB_INT_SUSPI:  
2182 - UDINT &= ~(1 << SUSPI);  
2183 - 916: 80 91 e1 00 lds r24, 0x00E1  
2184 - 91a: 8e 7f andi r24, 0xFE ; 254  
2185 - 91c: 80 93 e1 00 sts 0x00E1, r24  
2186 - #if defined(USB_CAN_BE_DEVICE)  
2187 - case USB_INT_WAKEUPI:  
2188 - UDIEN &= ~(1 << WAKEUPE);  
2189 - break;  
2190 - case USB_INT_SUSPI:  
2191 - UDIEN &= ~(1 << SUSPE);  
2192 - 920: 80 91 e2 00 lds r24, 0x00E2  
2193 - 924: 8e 7f andi r24, 0xFE ; 254  
2194 - 926: 80 93 e2 00 sts 0x00E2, r24  
2195 - USBCON |= (1 << IDTE);  
2196 - break;  
2197 - #endif  
2198 - #if defined(USB_CAN_BE_DEVICE)  
2199 - case USB_INT_WAKEUPI:  
2200 - UDIEN |= (1 << WAKEUPE);  
2201 - 92a: 80 91 e2 00 lds r24, 0x00E2  
2202 - 92e: 80 61 ori r24, 0x10 ; 16  
2203 - 930: 80 93 e2 00 sts 0x00E2, r24  
2204 - uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);  
2205 -  
2206 - if (Number >= ENDPOINT_TOTAL_ENDPOINTS)  
2207 - return false;  
2208 -  
2209 - return Endpoint_ConfigureEndpoint_Prv(Number,  
2210 - 934: 42 e0 ldi r20, 0x02 ; 2  
2211 - 936: 60 e0 ldi r22, 0x00 ; 0  
2212 - 938: 80 e0 ldi r24, 0x00 ; 0  
2213 - 93a: 60 de rcall .-832 ; 0x5fc <Endpoint_ConfigureEndpoint_Prv>  
2214 - break;  
2215 - case USB_INT_SOFI:  
2216 - UDIEN |= (1 << SOFE);  
2217 - break;  
2218 - case USB_INT_RXSTPI:  
2219 - UEIENX |= (1 << RXSTPE);  
2220 - 93c: 80 91 f0 00 lds r24, 0x00F0  
2221 - 940: 88 60 ori r24, 0x08 ; 8  
2222 - 942: 80 93 f0 00 sts 0x00F0, r24  
2223 -  
2224 - #if defined(INTERRUPT_CONTROL_ENDPOINT)  
2225 - USB_INT_Enable(USB_INT_RXSTPI);  
2226 - #endif  
2227 -  
2228 - EVENT_USB_Device_Reset();  
2229 - 946: ad d1 rcall .+858 ; 0xca2 <USB_Event_Stub>  
2230 - USB_ResetInterface();  
2231 -  
2232 - EVENT_USB_UIDChange();  
2233 - }  
2234 - #endif  
2235 -}  
2236 - 948: ff 91 pop r31  
2237 - 94a: ef 91 pop r30  
2238 - 94c: bf 91 pop r27  
2239 - 94e: af 91 pop r26  
2240 - 950: 9f 91 pop r25  
2241 - 952: 8f 91 pop r24  
2242 - 954: 7f 91 pop r23  
2243 - 956: 6f 91 pop r22  
2244 - 958: 5f 91 pop r21  
2245 - 95a: 4f 91 pop r20  
2246 - 95c: 3f 91 pop r19  
2247 - 95e: 2f 91 pop r18  
2248 - 960: 0f 90 pop r0  
2249 - 962: 0f be out 0x3f, r0 ; 63  
2250 - 964: 0f 90 pop r0  
2251 - 966: 1f 90 pop r1  
2252 - 968: 18 95 reti  
2253 -  
2254 -0000096a <__vector_12>:  
2255 -  
2256 -#if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE)  
2257 -ISR(USB_COM_vect, ISR_BLOCK)  
2258 -{  
2259 - 96a: 1f 92 push r1  
2260 - 96c: 0f 92 push r0  
2261 - 96e: 0f b6 in r0, 0x3f ; 63  
2262 - 970: 0f 92 push r0  
2263 - 972: 11 24 eor r1, r1  
2264 - 974: 2f 93 push r18  
2265 - 976: 3f 93 push r19  
2266 - 978: 4f 93 push r20  
2267 - 97a: 5f 93 push r21  
2268 - 97c: 6f 93 push r22  
2269 - 97e: 7f 93 push r23  
2270 - 980: 8f 93 push r24  
2271 - 982: 9f 93 push r25  
2272 - 984: af 93 push r26  
2273 - 986: bf 93 push r27  
2274 - 988: cf 93 push r28  
2275 - 98a: df 93 push r29  
2276 - 98c: ef 93 push r30  
2277 - 98e: ff 93 push r31  
2278 - */  
2279 - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2280 - static inline uint8_t Endpoint_GetCurrentEndpoint(void)  
2281 - {  
2282 - #if !defined(CONTROL_ONLY_DEVICE)  
2283 - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());  
2284 - 990: c0 91 e9 00 lds r28, 0x00E9  
2285 - 994: cf 70 andi r28, 0x0F ; 15  
2286 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.  
2287 - */  
2288 - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2289 - static inline uint8_t Endpoint_GetEndpointDirection(void)  
2290 - {  
2291 - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;  
2292 - 996: 80 91 ec 00 lds r24, 0x00EC  
2293 - 99a: d8 2f mov r29, r24  
2294 - 99c: d1 70 andi r29, 0x01 ; 1  
2295 - 99e: 80 fd sbrc r24, 0  
2296 - 9a0: d0 e8 ldi r29, 0x80 ; 128  
2297 - */  
2298 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2299 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2300 - {  
2301 - #if !defined(CONTROL_ONLY_DEVICE)  
2302 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2303 - 9a2: 10 92 e9 00 sts 0x00E9, r1  
2304 - break;  
2305 - case USB_INT_SOFI:  
2306 - UDIEN &= ~(1 << SOFE);  
2307 - break;  
2308 - case USB_INT_RXSTPI:  
2309 - UEIENX &= ~(1 << RXSTPE);  
2310 - 9a6: 80 91 f0 00 lds r24, 0x00F0  
2311 - 9aa: 87 7f andi r24, 0xF7 ; 247  
2312 - 9ac: 80 93 f0 00 sts 0x00F0, r24  
2313 - static inline void GlobalInterruptEnable(void)  
2314 - {  
2315 - GCC_MEMORY_BARRIER();  
2316 -  
2317 - #if (ARCH == ARCH_AVR8)  
2318 - sei();  
2319 - 9b0: 78 94 sei  
2320 - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);  
2321 - USB_INT_Disable(USB_INT_RXSTPI);  
2322 -  
2323 - GlobalInterruptEnable();  
2324 -  
2325 - USB_Device_ProcessControlRequest();  
2326 - 9b2: 1e d0 rcall .+60 ; 0x9f0 <USB_Device_ProcessControlRequest>  
2327 - 9b4: 10 92 e9 00 sts 0x00E9, r1  
2328 - break;  
2329 - case USB_INT_SOFI:  
2330 - UDIEN |= (1 << SOFE);  
2331 - break;  
2332 - case USB_INT_RXSTPI:  
2333 - UEIENX |= (1 << RXSTPE);  
2334 - 9b8: 80 91 f0 00 lds r24, 0x00F0  
2335 - 9bc: 88 60 ori r24, 0x08 ; 8  
2336 - 9be: 80 93 f0 00 sts 0x00F0, r24  
2337 - */  
2338 - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2339 - static inline uint8_t Endpoint_GetCurrentEndpoint(void)  
2340 - {  
2341 - #if !defined(CONTROL_ONLY_DEVICE)  
2342 - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());  
2343 - 9c2: cd 2b or r28, r29  
2344 - */  
2345 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2346 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2347 - {  
2348 - #if !defined(CONTROL_ONLY_DEVICE)  
2349 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2350 - 9c4: cf 70 andi r28, 0x0F ; 15  
2351 - 9c6: c0 93 e9 00 sts 0x00E9, r28  
2352 -  
2353 - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);  
2354 - USB_INT_Enable(USB_INT_RXSTPI);  
2355 - Endpoint_SelectEndpoint(PrevSelectedEndpoint);  
2356 -}  
2357 - 9ca: ff 91 pop r31  
2358 - 9cc: ef 91 pop r30  
2359 - 9ce: df 91 pop r29  
2360 - 9d0: cf 91 pop r28  
2361 - 9d2: bf 91 pop r27  
2362 - 9d4: af 91 pop r26  
2363 - 9d6: 9f 91 pop r25  
2364 - 9d8: 8f 91 pop r24  
2365 - 9da: 7f 91 pop r23  
2366 - 9dc: 6f 91 pop r22  
2367 - 9de: 5f 91 pop r21  
2368 - 9e0: 4f 91 pop r20  
2369 - 9e2: 3f 91 pop r19  
2370 - 9e4: 2f 91 pop r18  
2371 - 9e6: 0f 90 pop r0  
2372 - 9e8: 0f be out 0x3f, r0 ; 63  
2373 - 9ea: 0f 90 pop r0  
2374 - 9ec: 1f 90 pop r1  
2375 - 9ee: 18 95 reti  
2376 -  
2377 -000009f0 <USB_Device_ProcessControlRequest>:  
2378 -#if !defined(NO_DEVICE_REMOTE_WAKEUP)  
2379 -bool USB_Device_RemoteWakeupEnabled;  
2380 -#endif  
2381 -  
2382 -void USB_Device_ProcessControlRequest(void)  
2383 -{  
2384 - 9f0: 1f 93 push r17  
2385 - 9f2: cf 93 push r28  
2386 - 9f4: df 93 push r29  
2387 - 9f6: cd b7 in r28, 0x3d ; 61  
2388 - 9f8: de b7 in r29, 0x3e ; 62  
2389 - 9fa: aa 97 sbiw r28, 0x2a ; 42  
2390 - 9fc: 0f b6 in r0, 0x3f ; 63  
2391 - 9fe: f8 94 cli  
2392 - a00: de bf out 0x3e, r29 ; 62  
2393 - a02: 0f be out 0x3f, r0 ; 63  
2394 - a04: cd bf out 0x3d, r28 ; 61  
2395 - a06: e8 e3 ldi r30, 0x38 ; 56  
2396 - a08: f2 e0 ldi r31, 0x02 ; 2  
2397 - a0a: 88 e0 ldi r24, 0x08 ; 8  
2398 - a0c: 8e 0f add r24, r30  
2399 - * \return Next byte in the currently selected endpoint's FIFO buffer.  
2400 - */  
2401 - static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2402 - static inline uint8_t Endpoint_Read_8(void)  
2403 - {  
2404 - return UEDATX;  
2405 - a0e: 90 91 f1 00 lds r25, 0x00F1  
2406 - USB_ControlRequest.wLength = Endpoint_Read_16_LE();  
2407 - #else  
2408 - uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;  
2409 -  
2410 - for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)  
2411 - *(RequestHeader++) = Endpoint_Read_8();  
2412 - a12: 91 93 st Z+, r25  
2413 - USB_ControlRequest.wIndex = Endpoint_Read_16_LE();  
2414 - USB_ControlRequest.wLength = Endpoint_Read_16_LE();  
2415 - #else  
2416 - uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;  
2417 -  
2418 - for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)  
2419 - a14: 8e 13 cpse r24, r30  
2420 - a16: fb cf rjmp .-10 ; 0xa0e <USB_Device_ProcessControlRequest+0x1e>  
2421 - *(RequestHeader++) = Endpoint_Read_8();  
2422 - #endif  
2423 -  
2424 - EVENT_USB_Device_ControlRequest();  
2425 - a18: 89 dc rcall .-1774 ; 0x32c <EVENT_USB_Device_ControlRequest>  
2426 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
2427 - */  
2428 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2429 - static inline bool Endpoint_IsSETUPReceived(void)  
2430 - {  
2431 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
2432 - a1a: 80 91 e8 00 lds r24, 0x00E8  
2433 -  
2434 - if (Endpoint_IsSETUPReceived())  
2435 - a1e: 83 ff sbrs r24, 3  
2436 - a20: 28 c1 rjmp .+592 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2437 - {  
2438 - uint8_t bmRequestType = USB_ControlRequest.bmRequestType;  
2439 - a22: 80 91 38 02 lds r24, 0x0238  
2440 -  
2441 - switch (USB_ControlRequest.bRequest)  
2442 - a26: 90 91 39 02 lds r25, 0x0239  
2443 - a2a: 95 30 cpi r25, 0x05 ; 5  
2444 - a2c: 09 f4 brne .+2 ; 0xa30 <USB_Device_ProcessControlRequest+0x40>  
2445 - a2e: 83 c0 rjmp .+262 ; 0xb36 <USB_Device_ProcessControlRequest+0x146>  
2446 - a30: 30 f4 brcc .+12 ; 0xa3e <USB_Device_ProcessControlRequest+0x4e>  
2447 - a32: 91 30 cpi r25, 0x01 ; 1  
2448 - a34: a9 f1 breq .+106 ; 0xaa0 <USB_Device_ProcessControlRequest+0xb0>  
2449 - a36: 68 f0 brcs .+26 ; 0xa52 <USB_Device_ProcessControlRequest+0x62>  
2450 - a38: 93 30 cpi r25, 0x03 ; 3  
2451 - a3a: 91 f1 breq .+100 ; 0xaa0 <USB_Device_ProcessControlRequest+0xb0>  
2452 - a3c: 1a c1 rjmp .+564 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2453 - a3e: 98 30 cpi r25, 0x08 ; 8  
2454 - a40: 09 f4 brne .+2 ; 0xa44 <USB_Device_ProcessControlRequest+0x54>  
2455 - a42: ed c0 rjmp .+474 ; 0xc1e <USB_Device_ProcessControlRequest+0x22e>  
2456 - a44: 99 30 cpi r25, 0x09 ; 9  
2457 - a46: 09 f4 brne .+2 ; 0xa4a <USB_Device_ProcessControlRequest+0x5a>  
2458 - a48: f9 c0 rjmp .+498 ; 0xc3c <USB_Device_ProcessControlRequest+0x24c>  
2459 - a4a: 96 30 cpi r25, 0x06 ; 6  
2460 - a4c: 09 f0 breq .+2 ; 0xa50 <USB_Device_ProcessControlRequest+0x60>  
2461 - a4e: 11 c1 rjmp .+546 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2462 - a50: 93 c0 rjmp .+294 ; 0xb78 <USB_Device_ProcessControlRequest+0x188>  
2463 - {  
2464 - case REQ_GetStatus:  
2465 - if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||  
2466 - a52: 80 38 cpi r24, 0x80 ; 128  
2467 - a54: 21 f0 breq .+8 ; 0xa5e <USB_Device_ProcessControlRequest+0x6e>  
2468 - a56: 82 38 cpi r24, 0x82 ; 130  
2469 - a58: 09 f0 breq .+2 ; 0xa5c <USB_Device_ProcessControlRequest+0x6c>  
2470 - a5a: 0b c1 rjmp .+534 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2471 - a5c: 08 c0 rjmp .+16 ; 0xa6e <USB_Device_ProcessControlRequest+0x7e>  
2472 - Endpoint_ClearOUT();  
2473 -}  
2474 -  
2475 -static void USB_Device_GetStatus(void)  
2476 -{  
2477 - uint8_t CurrentStatus = 0;  
2478 - a5e: 80 91 35 02 lds r24, 0x0235  
2479 - if (USB_Device_CurrentlySelfPowered)  
2480 - CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;  
2481 - #endif  
2482 -  
2483 - #if !defined(NO_DEVICE_REMOTE_WAKEUP)  
2484 - if (USB_Device_RemoteWakeupEnabled)  
2485 - a62: 90 91 36 02 lds r25, 0x0236  
2486 - a66: 99 23 and r25, r25  
2487 - a68: 89 f0 breq .+34 ; 0xa8c <USB_Device_ProcessControlRequest+0x9c>  
2488 - CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;  
2489 - a6a: 82 60 ori r24, 0x02 ; 2  
2490 - a6c: 0f c0 rjmp .+30 ; 0xa8c <USB_Device_ProcessControlRequest+0x9c>  
2491 - break;  
2492 - }  
2493 - case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):  
2494 - {  
2495 - #if !defined(CONTROL_ONLY_DEVICE)  
2496 - uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);  
2497 - a6e: 80 91 3c 02 lds r24, 0x023C  
2498 - a72: 8f 70 andi r24, 0x0F ; 15  
2499 -  
2500 - if (EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS)  
2501 - a74: 85 30 cpi r24, 0x05 ; 5  
2502 - a76: 08 f0 brcs .+2 ; 0xa7a <USB_Device_ProcessControlRequest+0x8a>  
2503 - a78: fc c0 rjmp .+504 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2504 - */  
2505 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2506 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2507 - {  
2508 - #if !defined(CONTROL_ONLY_DEVICE)  
2509 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2510 - a7a: 80 93 e9 00 sts 0x00E9, r24  
2511 - * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.  
2512 - */  
2513 - static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2514 - static inline bool Endpoint_IsStalled(void)  
2515 - {  
2516 - return ((UECONX & (1 << STALLRQ)) ? true : false);  
2517 - a7e: 80 91 eb 00 lds r24, 0x00EB  
2518 - a82: 85 fb bst r24, 5  
2519 - a84: 88 27 eor r24, r24  
2520 - a86: 80 f9 bld r24, 0  
2521 - */  
2522 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2523 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2524 - {  
2525 - #if !defined(CONTROL_ONLY_DEVICE)  
2526 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2527 - a88: 10 92 e9 00 sts 0x00E9, r1  
2528 - * \note This is not applicable for non CONTROL type endpoints.  
2529 - */  
2530 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
2531 - static inline void Endpoint_ClearSETUP(void)  
2532 - {  
2533 - UEINTX &= ~(1 << RXSTPI);  
2534 - a8c: 90 91 e8 00 lds r25, 0x00E8  
2535 - a90: 97 7f andi r25, 0xF7 ; 247  
2536 - a92: 90 93 e8 00 sts 0x00E8, r25  
2537 - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer.  
2538 - */  
2539 - static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;  
2540 - static inline void Endpoint_Write_16_LE(const uint16_t Data)  
2541 - {  
2542 - UEDATX = (Data & 0xFF);  
2543 - a96: 80 93 f1 00 sts 0x00F1, r24  
2544 - UEDATX = (Data >> 8);  
2545 - a9a: 10 92 f1 00 sts 0x00F1, r1  
2546 - a9e: ca c0 rjmp .+404 ; 0xc34 <USB_Device_ProcessControlRequest+0x244>  
2547 - }  
2548 -  
2549 - break;  
2550 - case REQ_ClearFeature:  
2551 - case REQ_SetFeature:  
2552 - if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) ||  
2553 - aa0: 28 2f mov r18, r24  
2554 - aa2: 2d 7f andi r18, 0xFD ; 253  
2555 - aa4: 09 f0 breq .+2 ; 0xaa8 <USB_Device_ProcessControlRequest+0xb8>  
2556 - aa6: e5 c0 rjmp .+458 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2557 - Endpoint_ClearStatusStage();  
2558 -}  
2559 -  
2560 -static void USB_Device_ClearSetFeature(void)  
2561 -{  
2562 - switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)  
2563 - aa8: 88 23 and r24, r24  
2564 - aaa: 19 f0 breq .+6 ; 0xab2 <USB_Device_ProcessControlRequest+0xc2>  
2565 - aac: 82 30 cpi r24, 0x02 ; 2  
2566 - aae: 61 f0 breq .+24 ; 0xac8 <USB_Device_ProcessControlRequest+0xd8>  
2567 - ab0: e0 c0 rjmp .+448 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2568 - {  
2569 - #if !defined(NO_DEVICE_REMOTE_WAKEUP)  
2570 - case REQREC_DEVICE:  
2571 - {  
2572 - if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup)  
2573 - ab2: 80 91 3a 02 lds r24, 0x023A  
2574 - ab6: 81 30 cpi r24, 0x01 ; 1  
2575 - ab8: 09 f0 breq .+2 ; 0xabc <USB_Device_ProcessControlRequest+0xcc>  
2576 - aba: db c0 rjmp .+438 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2577 - USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);  
2578 - abc: 93 30 cpi r25, 0x03 ; 3  
2579 - abe: 09 f0 breq .+2 ; 0xac2 <USB_Device_ProcessControlRequest+0xd2>  
2580 - ac0: 80 e0 ldi r24, 0x00 ; 0  
2581 - ac2: 80 93 36 02 sts 0x0236, r24  
2582 - ac6: 2e c0 rjmp .+92 ; 0xb24 <USB_Device_ProcessControlRequest+0x134>  
2583 - }  
2584 - #endif  
2585 - #if !defined(CONTROL_ONLY_DEVICE)  
2586 - case REQREC_ENDPOINT:  
2587 - {  
2588 - if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt)  
2589 - ac8: 80 91 3a 02 lds r24, 0x023A  
2590 - acc: 81 11 cpse r24, r1  
2591 - ace: 2a c0 rjmp .+84 ; 0xb24 <USB_Device_ProcessControlRequest+0x134>  
2592 - {  
2593 - uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);  
2594 - ad0: 80 91 3c 02 lds r24, 0x023C  
2595 - ad4: 8f 70 andi r24, 0x0F ; 15  
2596 -  
2597 - if (EndpointIndex == ENDPOINT_CONTROLEP || EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS)  
2598 - ad6: 2f ef ldi r18, 0xFF ; 255  
2599 - ad8: 28 0f add r18, r24  
2600 - ada: 24 30 cpi r18, 0x04 ; 4  
2601 - adc: 08 f0 brcs .+2 ; 0xae0 <USB_Device_ProcessControlRequest+0xf0>  
2602 - ade: c9 c0 rjmp .+402 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2603 - */  
2604 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2605 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2606 - {  
2607 - #if !defined(CONTROL_ONLY_DEVICE)  
2608 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2609 - ae0: 80 93 e9 00 sts 0x00E9, r24  
2610 - * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.  
2611 - */  
2612 - static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2613 - static inline bool Endpoint_IsEnabled(void)  
2614 - {  
2615 - return ((UECONX & (1 << EPEN)) ? true : false);  
2616 - ae4: 20 91 eb 00 lds r18, 0x00EB  
2617 - return;  
2618 -  
2619 - Endpoint_SelectEndpoint(EndpointIndex);  
2620 -  
2621 - if (Endpoint_IsEnabled())  
2622 - ae8: 20 ff sbrs r18, 0  
2623 - aea: 1c c0 rjmp .+56 ; 0xb24 <USB_Device_ProcessControlRequest+0x134>  
2624 - {  
2625 - if (USB_ControlRequest.bRequest == REQ_SetFeature)  
2626 - aec: 93 30 cpi r25, 0x03 ; 3  
2627 - aee: 21 f4 brne .+8 ; 0xaf8 <USB_Device_ProcessControlRequest+0x108>  
2628 - * \ingroup Group_EndpointPacketManagement_AVR8  
2629 - */  
2630 - static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;  
2631 - static inline void Endpoint_StallTransaction(void)  
2632 - {  
2633 - UECONX |= (1 << STALLRQ);  
2634 - af0: 80 91 eb 00 lds r24, 0x00EB  
2635 - af4: 80 62 ori r24, 0x20 ; 32  
2636 - af6: 14 c0 rjmp .+40 ; 0xb20 <USB_Device_ProcessControlRequest+0x130>  
2637 - * \ingroup Group_EndpointPacketManagement_AVR8  
2638 - */  
2639 - static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;  
2640 - static inline void Endpoint_ClearStall(void)  
2641 - {  
2642 - UECONX |= (1 << STALLRQC);  
2643 - af8: 90 91 eb 00 lds r25, 0x00EB  
2644 - afc: 90 61 ori r25, 0x10 ; 16  
2645 - afe: 90 93 eb 00 sts 0x00EB, r25  
2646 - * \param[in] Address Endpoint address whose FIFO buffers are to be reset.  
2647 - */  
2648 - static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2649 - static inline void Endpoint_ResetEndpoint(const uint8_t Address)  
2650 - {  
2651 - UERST = (1 << (Address & ENDPOINT_EPNUM_MASK));  
2652 - b02: 21 e0 ldi r18, 0x01 ; 1  
2653 - b04: 30 e0 ldi r19, 0x00 ; 0  
2654 - b06: a9 01 movw r20, r18  
2655 - b08: 02 c0 rjmp .+4 ; 0xb0e <USB_Device_ProcessControlRequest+0x11e>  
2656 - b0a: 44 0f add r20, r20  
2657 - b0c: 55 1f adc r21, r21  
2658 - b0e: 8a 95 dec r24  
2659 - b10: e2 f7 brpl .-8 ; 0xb0a <USB_Device_ProcessControlRequest+0x11a>  
2660 - b12: 40 93 ea 00 sts 0x00EA, r20  
2661 - UERST = 0;  
2662 - b16: 10 92 ea 00 sts 0x00EA, r1  
2663 -  
2664 - /** Resets the data toggle of the currently selected endpoint. */  
2665 - static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;  
2666 - static inline void Endpoint_ResetDataToggle(void)  
2667 - {  
2668 - UECONX |= (1 << RSTDT);  
2669 - b1a: 80 91 eb 00 lds r24, 0x00EB  
2670 - b1e: 88 60 ori r24, 0x08 ; 8  
2671 - b20: 80 93 eb 00 sts 0x00EB, r24  
2672 - */  
2673 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2674 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
2675 - {  
2676 - #if !defined(CONTROL_ONLY_DEVICE)  
2677 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
2678 - b24: 10 92 e9 00 sts 0x00E9, r1  
2679 - * \note This is not applicable for non CONTROL type endpoints.  
2680 - */  
2681 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
2682 - static inline void Endpoint_ClearSETUP(void)  
2683 - {  
2684 - UEINTX &= ~(1 << RXSTPI);  
2685 - b28: 80 91 e8 00 lds r24, 0x00E8  
2686 - b2c: 87 7f andi r24, 0xF7 ; 247  
2687 - b2e: 80 93 e8 00 sts 0x00E8, r24  
2688 -  
2689 - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);  
2690 -  
2691 - Endpoint_ClearSETUP();  
2692 -  
2693 - Endpoint_ClearStatusStage();  
2694 - b32: e2 dd rcall .-1084 ; 0x6f8 <Endpoint_ClearStatusStage>  
2695 - b34: 9e c0 rjmp .+316 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2696 - USB_Device_ClearSetFeature();  
2697 - }  
2698 -  
2699 - break;  
2700 - case REQ_SetAddress:  
2701 - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))  
2702 - b36: 81 11 cpse r24, r1  
2703 - b38: 9c c0 rjmp .+312 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2704 - }  
2705 -}  
2706 -  
2707 -static void USB_Device_SetAddress(void)  
2708 -{  
2709 - uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);  
2710 - b3a: 10 91 3a 02 lds r17, 0x023A  
2711 - b3e: 1f 77 andi r17, 0x7F ; 127  
2712 - #endif  
2713 -  
2714 - static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2715 - static inline void USB_Device_SetDeviceAddress(const uint8_t Address)  
2716 - {  
2717 - UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);  
2718 - b40: 80 91 e3 00 lds r24, 0x00E3  
2719 - b44: 80 78 andi r24, 0x80 ; 128  
2720 - b46: 81 2b or r24, r17  
2721 - b48: 80 93 e3 00 sts 0x00E3, r24  
2722 - b4c: 80 91 e8 00 lds r24, 0x00E8  
2723 - b50: 87 7f andi r24, 0xF7 ; 247  
2724 - b52: 80 93 e8 00 sts 0x00E8, r24  
2725 -  
2726 - USB_Device_SetDeviceAddress(DeviceAddress);  
2727 -  
2728 - Endpoint_ClearSETUP();  
2729 -  
2730 - Endpoint_ClearStatusStage();  
2731 - b56: d0 dd rcall .-1120 ; 0x6f8 <Endpoint_ClearStatusStage>  
2732 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
2733 - */  
2734 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
2735 - static inline bool Endpoint_IsINReady(void)  
2736 - {  
2737 - return ((UEINTX & (1 << TXINI)) ? true : false);  
2738 - b58: 80 91 e8 00 lds r24, 0x00E8  
2739 -  
2740 - while (!(Endpoint_IsINReady()));  
2741 - b5c: 80 ff sbrs r24, 0  
2742 - b5e: fc cf rjmp .-8 ; 0xb58 <USB_Device_ProcessControlRequest+0x168>  
2743 - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;  
2744 - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)  
2745 - {  
2746 - (void)Address;  
2747 -  
2748 - UDADDR |= (1 << ADDEN);  
2749 - b60: 80 91 e3 00 lds r24, 0x00E3  
2750 - b64: 80 68 ori r24, 0x80 ; 128  
2751 - b66: 80 93 e3 00 sts 0x00E3, r24  
2752 -  
2753 - USB_Device_EnableDeviceAddress(DeviceAddress);  
2754 -  
2755 - USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;  
2756 - b6a: 11 11 cpse r17, r1  
2757 - b6c: 02 c0 rjmp .+4 ; 0xb72 <USB_Device_ProcessControlRequest+0x182>  
2758 - b6e: 82 e0 ldi r24, 0x02 ; 2  
2759 - b70: 01 c0 rjmp .+2 ; 0xb74 <USB_Device_ProcessControlRequest+0x184>  
2760 - b72: 83 e0 ldi r24, 0x03 ; 3  
2761 - b74: 8e bb out 0x1e, r24 ; 30  
2762 - b76: 7d c0 rjmp .+250 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2763 - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))  
2764 - USB_Device_SetAddress();  
2765 -  
2766 - break;  
2767 - case REQ_GetDescriptor:  
2768 - if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||  
2769 - b78: 80 58 subi r24, 0x80 ; 128  
2770 - b7a: 82 30 cpi r24, 0x02 ; 2  
2771 - b7c: 08 f0 brcs .+2 ; 0xb80 <USB_Device_ProcessControlRequest+0x190>  
2772 - b7e: 79 c0 rjmp .+242 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2773 - !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))  
2774 - uint8_t DescriptorAddressSpace;  
2775 - #endif  
2776 -  
2777 - #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR)  
2778 - if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL))  
2779 - b80: 80 91 3a 02 lds r24, 0x023A  
2780 - b84: 90 91 3b 02 lds r25, 0x023B  
2781 - b88: 8c 3d cpi r24, 0xDC ; 220  
2782 - b8a: 53 e0 ldi r21, 0x03 ; 3  
2783 - b8c: 95 07 cpc r25, r21  
2784 - b8e: 71 f5 brne .+92 ; 0xbec <USB_Device_ProcessControlRequest+0x1fc>  
2785 - {  
2786 - USB_Descriptor_Header_t Header;  
2787 - uint16_t UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4];  
2788 - } SignatureDescriptor;  
2789 -  
2790 - SignatureDescriptor.Header.Type = DTYPE_String;  
2791 - b90: 83 e0 ldi r24, 0x03 ; 3  
2792 - b92: 8a 83 std Y+2, r24 ; 0x02  
2793 - SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);  
2794 - b94: 8a e2 ldi r24, 0x2A ; 42  
2795 - b96: 89 83 std Y+1, r24 ; 0x01  
2796 - static inline uint_reg_t GetGlobalInterruptMask(void)  
2797 - {  
2798 - GCC_MEMORY_BARRIER();  
2799 -  
2800 - #if (ARCH == ARCH_AVR8)  
2801 - return SREG;  
2802 - b98: 4f b7 in r20, 0x3f ; 63  
2803 - static inline void GlobalInterruptDisable(void)  
2804 - {  
2805 - GCC_MEMORY_BARRIER();  
2806 -  
2807 - #if (ARCH == ARCH_AVR8)  
2808 - cli();  
2809 - b9a: f8 94 cli  
2810 - __builtin_ssrf(AVR32_SR_GM_OFFSET);  
2811 - #elif (ARCH == ARCH_XMEGA)  
2812 - cli();  
2813 - #endif  
2814 -  
2815 - GCC_MEMORY_BARRIER();  
2816 - b9c: de 01 movw r26, r28  
2817 - b9e: 13 96 adiw r26, 0x03 ; 3  
2818 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
2819 - GlobalInterruptDisable();  
2820 -  
2821 - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;  
2822 -  
2823 - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)  
2824 - ba0: 20 e0 ldi r18, 0x00 ; 0  
2825 - static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)  
2826 - {  
2827 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
2828 - GlobalInterruptDisable();  
2829 -  
2830 - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;  
2831 - ba2: 3e e0 ldi r19, 0x0E ; 14  
2832 -  
2833 - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)  
2834 - {  
2835 - uint8_t SerialByte = boot_signature_byte_get(SigReadAddress);  
2836 - ba4: 51 e2 ldi r21, 0x21 ; 33  
2837 - ba6: e3 2f mov r30, r19  
2838 - ba8: f0 e0 ldi r31, 0x00 ; 0  
2839 - baa: 50 93 57 00 sts 0x0057, r21  
2840 - bae: e4 91 lpm r30, Z  
2841 -  
2842 - if (SerialCharNum & 0x01)  
2843 - bb0: 20 ff sbrs r18, 0  
2844 - bb2: 03 c0 rjmp .+6 ; 0xbba <USB_Device_ProcessControlRequest+0x1ca>  
2845 - {  
2846 - SerialByte >>= 4;  
2847 - bb4: e2 95 swap r30  
2848 - bb6: ef 70 andi r30, 0x0F ; 15  
2849 - SigReadAddress++;  
2850 - bb8: 3f 5f subi r19, 0xFF ; 255  
2851 - }  
2852 -  
2853 - SerialByte &= 0x0F;  
2854 - bba: ef 70 andi r30, 0x0F ; 15  
2855 - bbc: 8e 2f mov r24, r30  
2856 - bbe: 90 e0 ldi r25, 0x00 ; 0  
2857 -  
2858 - UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?  
2859 - bc0: ea 30 cpi r30, 0x0A ; 10  
2860 - bc2: 10 f0 brcs .+4 ; 0xbc8 <USB_Device_ProcessControlRequest+0x1d8>  
2861 - bc4: c7 96 adiw r24, 0x37 ; 55  
2862 - bc6: 01 c0 rjmp .+2 ; 0xbca <USB_Device_ProcessControlRequest+0x1da>  
2863 - bc8: c0 96 adiw r24, 0x30 ; 48  
2864 - bca: 8d 93 st X+, r24  
2865 - bcc: 9d 93 st X+, r25  
2866 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();  
2867 - GlobalInterruptDisable();  
2868 -  
2869 - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;  
2870 -  
2871 - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)  
2872 - bce: 2f 5f subi r18, 0xFF ; 255  
2873 - bd0: 24 31 cpi r18, 0x14 ; 20  
2874 - bd2: 49 f7 brne .-46 ; 0xba6 <USB_Device_ProcessControlRequest+0x1b6>  
2875 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)  
2876 - {  
2877 - GCC_MEMORY_BARRIER();  
2878 -  
2879 - #if (ARCH == ARCH_AVR8)  
2880 - SREG = GlobalIntState;  
2881 - bd4: 4f bf out 0x3f, r20 ; 63  
2882 - * \note This is not applicable for non CONTROL type endpoints.  
2883 - */  
2884 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
2885 - static inline void Endpoint_ClearSETUP(void)  
2886 - {  
2887 - UEINTX &= ~(1 << RXSTPI);  
2888 - bd6: 80 91 e8 00 lds r24, 0x00E8  
2889 - bda: 87 7f andi r24, 0xF7 ; 247  
2890 - bdc: 80 93 e8 00 sts 0x00E8, r24  
2891 -  
2892 - USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);  
2893 -  
2894 - Endpoint_ClearSETUP();  
2895 -  
2896 - Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));  
2897 - be0: 6a e2 ldi r22, 0x2A ; 42  
2898 - be2: 70 e0 ldi r23, 0x00 ; 0  
2899 - be4: ce 01 movw r24, r28  
2900 - be6: 01 96 adiw r24, 0x01 ; 1  
2901 - be8: 53 dc rcall .-1882 ; 0x490 <Endpoint_Write_Control_Stream_LE>  
2902 - bea: 13 c0 rjmp .+38 ; 0xc12 <USB_Device_ProcessControlRequest+0x222>  
2903 - USB_Device_GetInternalSerialDescriptor();  
2904 - return;  
2905 - }  
2906 - #endif  
2907 -  
2908 - if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,  
2909 - bec: 60 91 3c 02 lds r22, 0x023C  
2910 - bf0: 70 91 3d 02 lds r23, 0x023D  
2911 - bf4: ae 01 movw r20, r28  
2912 - bf6: 4f 5f subi r20, 0xFF ; 255  
2913 - bf8: 5f 4f sbci r21, 0xFF ; 255  
2914 - bfa: 18 dc rcall .-2000 ; 0x42c <CALLBACK_USB_GetDescriptor>  
2915 - bfc: bc 01 movw r22, r24  
2916 - bfe: 89 2b or r24, r25  
2917 - c00: c1 f1 breq .+112 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2918 - c02: 90 91 e8 00 lds r25, 0x00E8  
2919 - c06: 97 7f andi r25, 0xF7 ; 247  
2920 - c08: 90 93 e8 00 sts 0x00E8, r25  
2921 - #if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE)  
2922 - Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);  
2923 - #elif defined(USE_EEPROM_DESCRIPTORS)  
2924 - Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);  
2925 - #elif defined(USE_FLASH_DESCRIPTORS)  
2926 - Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);  
2927 - c0c: 89 81 ldd r24, Y+1 ; 0x01  
2928 - c0e: 9a 81 ldd r25, Y+2 ; 0x02  
2929 - c10: 9b dc rcall .-1738 ; 0x548 <Endpoint_Write_Control_PStream_LE>  
2930 - */  
2931 - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;  
2932 - static inline void Endpoint_ClearOUT(void)  
2933 - {  
2934 - #if !defined(CONTROL_ONLY_DEVICE)  
2935 - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));  
2936 - c12: 80 91 e8 00 lds r24, 0x00E8  
2937 - c16: 8b 77 andi r24, 0x7B ; 123  
2938 - c18: 80 93 e8 00 sts 0x00E8, r24  
2939 - c1c: 2a c0 rjmp .+84 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2940 - USB_Device_GetDescriptor();  
2941 - }  
2942 -  
2943 - break;  
2944 - case REQ_GetConfiguration:  
2945 - if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))  
2946 - c1e: 80 38 cpi r24, 0x80 ; 128  
2947 - c20: 41 f5 brne .+80 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2948 - * \note This is not applicable for non CONTROL type endpoints.  
2949 - */  
2950 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
2951 - static inline void Endpoint_ClearSETUP(void)  
2952 - {  
2953 - UEINTX &= ~(1 << RXSTPI);  
2954 - c22: 80 91 e8 00 lds r24, 0x00E8  
2955 - c26: 87 7f andi r24, 0xF7 ; 247  
2956 - c28: 80 93 e8 00 sts 0x00E8, r24  
2957 -  
2958 -static void USB_Device_GetConfiguration(void)  
2959 -{  
2960 - Endpoint_ClearSETUP();  
2961 -  
2962 - Endpoint_Write_8(USB_Device_ConfigurationNumber);  
2963 - c2c: 80 91 34 02 lds r24, 0x0234  
2964 - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.  
2965 - */  
2966 - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;  
2967 - static inline void Endpoint_Write_8(const uint8_t Data)  
2968 - {  
2969 - UEDATX = Data;  
2970 - c30: 80 93 f1 00 sts 0x00F1, r24  
2971 - */  
2972 - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;  
2973 - static inline void Endpoint_ClearIN(void)  
2974 - {  
2975 - #if !defined(CONTROL_ONLY_DEVICE)  
2976 - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));  
2977 - c34: 80 91 e8 00 lds r24, 0x00E8  
2978 - c38: 8e 77 andi r24, 0x7E ; 126  
2979 - c3a: 79 cf rjmp .-270 ; 0xb2e <USB_Device_ProcessControlRequest+0x13e>  
2980 - if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))  
2981 - USB_Device_GetConfiguration();  
2982 -  
2983 - break;  
2984 - case REQ_SetConfiguration:  
2985 - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))  
2986 - c3c: 81 11 cpse r24, r1  
2987 - c3e: 19 c0 rjmp .+50 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2988 -}  
2989 -  
2990 -static void USB_Device_SetConfiguration(void)  
2991 -{  
2992 - #if defined(FIXED_NUM_CONFIGURATIONS)  
2993 - if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS)  
2994 - c40: 90 91 3a 02 lds r25, 0x023A  
2995 - c44: 92 30 cpi r25, 0x02 ; 2  
2996 - c46: a8 f4 brcc .+42 ; 0xc72 <USB_Device_ProcessControlRequest+0x282>  
2997 - * \note This is not applicable for non CONTROL type endpoints.  
2998 - */  
2999 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
3000 - static inline void Endpoint_ClearSETUP(void)  
3001 - {  
3002 - UEINTX &= ~(1 << RXSTPI);  
3003 - c48: 80 91 e8 00 lds r24, 0x00E8  
3004 - c4c: 87 7f andi r24, 0xF7 ; 247  
3005 - c4e: 80 93 e8 00 sts 0x00E8, r24  
3006 - #endif  
3007 - #endif  
3008 -  
3009 - Endpoint_ClearSETUP();  
3010 -  
3011 - USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;  
3012 - c52: 90 93 34 02 sts 0x0234, r25  
3013 -  
3014 - Endpoint_ClearStatusStage();  
3015 - c56: 50 dd rcall .-1376 ; 0x6f8 <Endpoint_ClearStatusStage>  
3016 -  
3017 - if (USB_Device_ConfigurationNumber)  
3018 - c58: 80 91 34 02 lds r24, 0x0234  
3019 - c5c: 81 11 cpse r24, r1  
3020 - c5e: 06 c0 rjmp .+12 ; 0xc6c <USB_Device_ProcessControlRequest+0x27c>  
3021 - }  
3022 -  
3023 - static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;  
3024 - static inline bool USB_Device_IsAddressSet(void)  
3025 - {  
3026 - return (UDADDR & (1 << ADDEN));  
3027 - c60: 80 91 e3 00 lds r24, 0x00E3  
3028 - USB_DeviceState = DEVICE_STATE_Configured;  
3029 - else  
3030 - USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;  
3031 - c64: 87 fd sbrc r24, 7  
3032 - c66: 02 c0 rjmp .+4 ; 0xc6c <USB_Device_ProcessControlRequest+0x27c>  
3033 - c68: 81 e0 ldi r24, 0x01 ; 1  
3034 - c6a: 01 c0 rjmp .+2 ; 0xc6e <USB_Device_ProcessControlRequest+0x27e>  
3035 - c6c: 84 e0 ldi r24, 0x04 ; 4  
3036 - c6e: 8e bb out 0x1e, r24 ; 30  
3037 -  
3038 - EVENT_USB_Device_ConfigurationChanged();  
3039 - c70: 54 db rcall .-2392 ; 0x31a <EVENT_USB_Device_ConfigurationChanged>  
3040 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
3041 - */  
3042 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3043 - static inline bool Endpoint_IsSETUPReceived(void)  
3044 - {  
3045 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
3046 - c72: 80 91 e8 00 lds r24, 0x00E8  
3047 - default:  
3048 - break;  
3049 - }  
3050 - }  
3051 -  
3052 - if (Endpoint_IsSETUPReceived())  
3053 - c76: 83 ff sbrs r24, 3  
3054 - c78: 0a c0 rjmp .+20 ; 0xc8e <USB_Device_ProcessControlRequest+0x29e>  
3055 - * \note This is not applicable for non CONTROL type endpoints.  
3056 - */  
3057 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
3058 - static inline void Endpoint_ClearSETUP(void)  
3059 - {  
3060 - UEINTX &= ~(1 << RXSTPI);  
3061 - c7a: 80 91 e8 00 lds r24, 0x00E8  
3062 - c7e: 87 7f andi r24, 0xF7 ; 247  
3063 - c80: 80 93 e8 00 sts 0x00E8, r24  
3064 - * \ingroup Group_EndpointPacketManagement_AVR8  
3065 - */  
3066 - static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;  
3067 - static inline void Endpoint_StallTransaction(void)  
3068 - {  
3069 - UECONX |= (1 << STALLRQ);  
3070 - c84: 80 91 eb 00 lds r24, 0x00EB  
3071 - c88: 80 62 ori r24, 0x20 ; 32  
3072 - c8a: 80 93 eb 00 sts 0x00EB, r24  
3073 - {  
3074 - Endpoint_ClearSETUP();  
3075 - Endpoint_StallTransaction();  
3076 - }  
3077 -}  
3078 - c8e: aa 96 adiw r28, 0x2a ; 42  
3079 - c90: 0f b6 in r0, 0x3f ; 63  
3080 - c92: f8 94 cli  
3081 - c94: de bf out 0x3e, r29 ; 62  
3082 - c96: 0f be out 0x3f, r0 ; 63  
3083 - c98: cd bf out 0x3d, r28 ; 61  
3084 - c9a: df 91 pop r29  
3085 - c9c: cf 91 pop r28  
3086 - c9e: 1f 91 pop r17  
3087 - ca0: 08 95 ret  
3088 -  
3089 -00000ca2 <USB_Event_Stub>:  
3090 -#define __INCLUDE_FROM_EVENTS_C  
3091 -#define __INCLUDE_FROM_USB_DRIVER  
3092 -#include "Events.h"  
3093 -  
3094 -void USB_Event_Stub(void)  
3095 -{  
3096 - ca2: 08 95 ret  
3097 -  
3098 -00000ca4 <USB_USBTask>:  
3099 -#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)  
3100 -volatile uint8_t USB_DeviceState;  
3101 -#endif  
3102 -  
3103 -void USB_USBTask(void)  
3104 -{  
3105 - ca4: cf 93 push r28  
3106 -}  
3107 -  
3108 -#if defined(USB_CAN_BE_DEVICE)  
3109 -static void USB_DeviceTask(void)  
3110 -{  
3111 - if (USB_DeviceState == DEVICE_STATE_Unattached)  
3112 - ca6: 8e b3 in r24, 0x1e ; 30  
3113 - ca8: 88 23 and r24, r24  
3114 - caa: 99 f0 breq .+38 ; 0xcd2 <USB_USBTask+0x2e>  
3115 - */  
3116 - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3117 - static inline uint8_t Endpoint_GetCurrentEndpoint(void)  
3118 - {  
3119 - #if !defined(CONTROL_ONLY_DEVICE)  
3120 - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());  
3121 - cac: c0 91 e9 00 lds r28, 0x00E9  
3122 - cb0: cf 70 andi r28, 0x0F ; 15  
3123 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.  
3124 - */  
3125 - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3126 - static inline uint8_t Endpoint_GetEndpointDirection(void)  
3127 - {  
3128 - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;  
3129 - cb2: 90 91 ec 00 lds r25, 0x00EC  
3130 - cb6: 89 2f mov r24, r25  
3131 - cb8: 81 70 andi r24, 0x01 ; 1  
3132 - cba: 90 fd sbrc r25, 0  
3133 - cbc: 80 e8 ldi r24, 0x80 ; 128  
3134 - */  
3135 - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3136 - static inline uint8_t Endpoint_GetCurrentEndpoint(void)  
3137 - {  
3138 - #if !defined(CONTROL_ONLY_DEVICE)  
3139 - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());  
3140 - cbe: c8 2b or r28, r24  
3141 - */  
3142 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
3143 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
3144 - {  
3145 - #if !defined(CONTROL_ONLY_DEVICE)  
3146 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
3147 - cc0: 10 92 e9 00 sts 0x00E9, r1  
3148 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
3149 - */  
3150 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3151 - static inline bool Endpoint_IsSETUPReceived(void)  
3152 - {  
3153 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
3154 - cc4: 80 91 e8 00 lds r24, 0x00E8  
3155 -  
3156 - uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();  
3157 -  
3158 - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);  
3159 -  
3160 - if (Endpoint_IsSETUPReceived())  
3161 - cc8: 83 fd sbrc r24, 3  
3162 - USB_Device_ProcessControlRequest();  
3163 - cca: 92 de rcall .-732 ; 0x9f0 <USB_Device_ProcessControlRequest>  
3164 - */  
3165 - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;  
3166 - static inline void Endpoint_SelectEndpoint(const uint8_t Address)  
3167 - {  
3168 - #if !defined(CONTROL_ONLY_DEVICE)  
3169 - UENUM = (Address & ENDPOINT_EPNUM_MASK);  
3170 - ccc: cf 70 andi r28, 0x0F ; 15  
3171 - cce: c0 93 e9 00 sts 0x00E9, r28  
3172 - #elif defined(USB_CAN_BE_HOST)  
3173 - USB_HostTask();  
3174 - #elif defined(USB_CAN_BE_DEVICE)  
3175 - USB_DeviceTask();  
3176 - #endif  
3177 -}  
3178 - cd2: cf 91 pop r28  
3179 - cd4: 08 95 ret  
3180 -  
3181 -00000cd6 <CDC_Device_ConfigureEndpoints>:  
3182 -  
3183 -void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,  
3184 - FILE* const Stream)  
3185 -{  
3186 - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW);  
3187 - fdev_set_udata(Stream, CDCInterfaceInfo);  
3188 - cd6: cf 93 push r28  
3189 - cd8: df 93 push r29  
3190 - cda: ec 01 movw r28, r24  
3191 - cdc: fc 01 movw r30, r24  
3192 - cde: 70 96 adiw r30, 0x10 ; 16  
3193 - ce0: 8b e0 ldi r24, 0x0B ; 11  
3194 - ce2: df 01 movw r26, r30  
3195 - ce4: 1d 92 st X+, r1  
3196 - ce6: 8a 95 dec r24  
3197 - ce8: e9 f7 brne .-6 ; 0xce4 <CDC_Device_ConfigureEndpoints+0xe>  
3198 - cea: 82 e0 ldi r24, 0x02 ; 2  
3199 - cec: 8c 83 std Y+4, r24 ; 0x04  
3200 - cee: 89 87 std Y+9, r24 ; 0x09  
3201 - cf0: 83 e0 ldi r24, 0x03 ; 3  
3202 - cf2: 8e 87 std Y+14, r24 ; 0x0e  
3203 - cf4: 61 e0 ldi r22, 0x01 ; 1  
3204 - cf6: ce 01 movw r24, r28  
3205 - cf8: 01 96 adiw r24, 0x01 ; 1  
3206 - cfa: b5 dc rcall .-1686 ; 0x666 <Endpoint_ConfigureEndpointTable>  
3207 - cfc: 88 23 and r24, r24  
3208 - cfe: 61 f0 breq .+24 ; 0xd18 <CDC_Device_ConfigureEndpoints+0x42>  
3209 - d00: 61 e0 ldi r22, 0x01 ; 1  
3210 - d02: ce 01 movw r24, r28  
3211 - d04: 06 96 adiw r24, 0x06 ; 6  
3212 - d06: af dc rcall .-1698 ; 0x666 <Endpoint_ConfigureEndpointTable>  
3213 - d08: 88 23 and r24, r24  
3214 - d0a: 31 f0 breq .+12 ; 0xd18 <CDC_Device_ConfigureEndpoints+0x42>  
3215 - d0c: 61 e0 ldi r22, 0x01 ; 1  
3216 - d0e: ce 01 movw r24, r28  
3217 - d10: 0b 96 adiw r24, 0x0b ; 11  
3218 - d12: df 91 pop r29  
3219 - d14: cf 91 pop r28  
3220 - d16: a7 cc rjmp .-1714 ; 0x666 <Endpoint_ConfigureEndpointTable>  
3221 - d18: 80 e0 ldi r24, 0x00 ; 0  
3222 - d1a: df 91 pop r29  
3223 - d1c: cf 91 pop r28  
3224 - d1e: 08 95 ret  
3225 -  
3226 -00000d20 <CDC_Device_SendByte>:  
3227 - d20: 0f 93 push r16  
3228 - d22: 1f 93 push r17  
3229 - d24: cf 93 push r28  
3230 - d26: 2e b3 in r18, 0x1e ; 30  
3231 - d28: 24 30 cpi r18, 0x04 ; 4  
3232 - d2a: f9 f4 brne .+62 ; 0xd6a <CDC_Device_SendByte+0x4a>  
3233 - d2c: fc 01 movw r30, r24  
3234 - d2e: 04 89 ldd r16, Z+20 ; 0x14  
3235 - d30: 15 89 ldd r17, Z+21 ; 0x15  
3236 - d32: 26 89 ldd r18, Z+22 ; 0x16  
3237 - d34: 37 89 ldd r19, Z+23 ; 0x17  
3238 - d36: 01 2b or r16, r17  
3239 - d38: 02 2b or r16, r18  
3240 - d3a: 03 2b or r16, r19  
3241 - d3c: b1 f0 breq .+44 ; 0xd6a <CDC_Device_SendByte+0x4a>  
3242 - d3e: c6 2f mov r28, r22  
3243 - d40: 81 81 ldd r24, Z+1 ; 0x01  
3244 - d42: 8f 70 andi r24, 0x0F ; 15  
3245 - d44: 80 93 e9 00 sts 0x00E9, r24  
3246 - d48: 80 91 e8 00 lds r24, 0x00E8  
3247 - d4c: 85 ff sbrs r24, 5  
3248 - d4e: 04 c0 rjmp .+8 ; 0xd58 <CDC_Device_SendByte+0x38>  
3249 - d50: c0 93 f1 00 sts 0x00F1, r28  
3250 - d54: 80 e0 ldi r24, 0x00 ; 0  
3251 - d56: 0a c0 rjmp .+20 ; 0xd6c <CDC_Device_SendByte+0x4c>  
3252 - d58: 80 91 e8 00 lds r24, 0x00E8  
3253 - d5c: 8e 77 andi r24, 0x7E ; 126  
3254 - d5e: 80 93 e8 00 sts 0x00E8, r24  
3255 - d62: e7 dc rcall .-1586 ; 0x732 <Endpoint_WaitUntilReady>  
3256 - d64: 88 23 and r24, r24  
3257 - d66: a1 f3 breq .-24 ; 0xd50 <CDC_Device_SendByte+0x30>  
3258 - d68: 01 c0 rjmp .+2 ; 0xd6c <CDC_Device_SendByte+0x4c>  
3259 - d6a: 82 e0 ldi r24, 0x02 ; 2  
3260 - d6c: cf 91 pop r28  
3261 - d6e: 1f 91 pop r17  
3262 - d70: 0f 91 pop r16  
3263 - d72: 08 95 ret  
3264 -  
3265 -00000d74 <CDC_Device_Flush>:  
3266 - d74: 2e b3 in r18, 0x1e ; 30  
3267 - d76: 24 30 cpi r18, 0x04 ; 4  
3268 - d78: 21 f5 brne .+72 ; 0xdc2 <CDC_Device_Flush+0x4e>  
3269 - d7a: fc 01 movw r30, r24  
3270 - d7c: 44 89 ldd r20, Z+20 ; 0x14  
3271 - d7e: 55 89 ldd r21, Z+21 ; 0x15  
3272 - d80: 66 89 ldd r22, Z+22 ; 0x16  
3273 - d82: 77 89 ldd r23, Z+23 ; 0x17  
3274 - d84: 45 2b or r20, r21  
3275 - d86: 46 2b or r20, r22  
3276 - d88: 47 2b or r20, r23  
3277 - d8a: d9 f0 breq .+54 ; 0xdc2 <CDC_Device_Flush+0x4e>  
3278 - d8c: 81 81 ldd r24, Z+1 ; 0x01  
3279 - d8e: 8f 70 andi r24, 0x0F ; 15  
3280 - d90: 80 93 e9 00 sts 0x00E9, r24  
3281 - d94: 80 91 f2 00 lds r24, 0x00F2  
3282 - d98: 88 23 and r24, r24  
3283 - d9a: 89 f0 breq .+34 ; 0xdbe <CDC_Device_Flush+0x4a>  
3284 - d9c: 90 91 e8 00 lds r25, 0x00E8  
3285 - da0: 80 91 e8 00 lds r24, 0x00E8  
3286 - da4: 8e 77 andi r24, 0x7E ; 126  
3287 - da6: 80 93 e8 00 sts 0x00E8, r24  
3288 - daa: 95 fd sbrc r25, 5  
3289 - dac: 08 c0 rjmp .+16 ; 0xdbe <CDC_Device_Flush+0x4a>  
3290 - dae: c1 dc rcall .-1662 ; 0x732 <Endpoint_WaitUntilReady>  
3291 - db0: 81 11 cpse r24, r1  
3292 - db2: 08 c0 rjmp .+16 ; 0xdc4 <CDC_Device_Flush+0x50>  
3293 - db4: 80 91 e8 00 lds r24, 0x00E8  
3294 - db8: 8e 77 andi r24, 0x7E ; 126  
3295 - dba: 80 93 e8 00 sts 0x00E8, r24  
3296 - dbe: 80 e0 ldi r24, 0x00 ; 0  
3297 - dc0: 08 95 ret  
3298 - dc2: 82 e0 ldi r24, 0x02 ; 2  
3299 - dc4: 08 95 ret  
3300 -  
3301 -00000dc6 <CDC_Device_USBTask>:  
3302 - dc6: 2e b3 in r18, 0x1e ; 30  
3303 - dc8: 24 30 cpi r18, 0x04 ; 4  
3304 - dca: 89 f4 brne .+34 ; 0xdee <CDC_Device_USBTask+0x28>  
3305 - dcc: fc 01 movw r30, r24  
3306 - dce: 44 89 ldd r20, Z+20 ; 0x14  
3307 - dd0: 55 89 ldd r21, Z+21 ; 0x15  
3308 - dd2: 66 89 ldd r22, Z+22 ; 0x16  
3309 - dd4: 77 89 ldd r23, Z+23 ; 0x17  
3310 - dd6: 45 2b or r20, r21  
3311 - dd8: 46 2b or r20, r22  
3312 - dda: 47 2b or r20, r23  
3313 - ddc: 41 f0 breq .+16 ; 0xdee <CDC_Device_USBTask+0x28>  
3314 - dde: 21 81 ldd r18, Z+1 ; 0x01  
3315 - de0: 2f 70 andi r18, 0x0F ; 15  
3316 - de2: 20 93 e9 00 sts 0x00E9, r18  
3317 - de6: 20 91 e8 00 lds r18, 0x00E8  
3318 - dea: 20 fd sbrc r18, 0  
3319 - dec: c3 cf rjmp .-122 ; 0xd74 <CDC_Device_Flush>  
3320 - dee: 08 95 ret  
3321 -  
3322 -00000df0 <CDC_Device_ReceiveByte>:  
3323 - df0: 2e b3 in r18, 0x1e ; 30  
3324 - df2: 24 30 cpi r18, 0x04 ; 4  
3325 - df4: 19 f0 breq .+6 ; 0xdfc <CDC_Device_ReceiveByte+0xc>  
3326 - df6: 8f ef ldi r24, 0xFF ; 255  
3327 - df8: 9f ef ldi r25, 0xFF ; 255  
3328 - dfa: 08 95 ret  
3329 - dfc: fc 01 movw r30, r24  
3330 - dfe: 44 89 ldd r20, Z+20 ; 0x14  
3331 - e00: 55 89 ldd r21, Z+21 ; 0x15  
3332 - e02: 66 89 ldd r22, Z+22 ; 0x16  
3333 - e04: 77 89 ldd r23, Z+23 ; 0x17  
3334 - e06: 45 2b or r20, r21  
3335 - e08: 46 2b or r20, r22  
3336 - e0a: 47 2b or r20, r23  
3337 - e0c: a1 f3 breq .-24 ; 0xdf6 <CDC_Device_ReceiveByte+0x6>  
3338 - e0e: 86 81 ldd r24, Z+6 ; 0x06  
3339 - e10: 8f 70 andi r24, 0x0F ; 15  
3340 - e12: 80 93 e9 00 sts 0x00E9, r24  
3341 - e16: 80 91 e8 00 lds r24, 0x00E8  
3342 - e1a: 82 ff sbrs r24, 2  
3343 - e1c: ec cf rjmp .-40 ; 0xdf6 <CDC_Device_ReceiveByte+0x6>  
3344 - e1e: 80 91 f2 00 lds r24, 0x00F2  
3345 - e22: 88 23 and r24, r24  
3346 - e24: 21 f0 breq .+8 ; 0xe2e <CDC_Device_ReceiveByte+0x3e>  
3347 - e26: 20 91 f1 00 lds r18, 0x00F1  
3348 - e2a: 30 e0 ldi r19, 0x00 ; 0  
3349 - e2c: 02 c0 rjmp .+4 ; 0xe32 <CDC_Device_ReceiveByte+0x42>  
3350 - e2e: 2f ef ldi r18, 0xFF ; 255  
3351 - e30: 3f ef ldi r19, 0xFF ; 255  
3352 - e32: 80 91 f2 00 lds r24, 0x00F2  
3353 - e36: 81 11 cpse r24, r1  
3354 - e38: 05 c0 rjmp .+10 ; 0xe44 <CDC_Device_ReceiveByte+0x54>  
3355 - e3a: 80 91 e8 00 lds r24, 0x00E8  
3356 - e3e: 8b 77 andi r24, 0x7B ; 123  
3357 - e40: 80 93 e8 00 sts 0x00E8, r24  
3358 - e44: c9 01 movw r24, r18  
3359 - e46: 08 95 ret  
3360 -  
3361 -00000e48 <CDC_Device_Event_Stub>:  
3362 - return ReceivedByte;  
3363 -}  
3364 -#endif  
3365 -  
3366 -void CDC_Device_Event_Stub(void)  
3367 -{  
3368 - e48: 08 95 ret  
3369 -  
3370 -00000e4a <CDC_Device_ProcessControlRequest>:  
3371 -#define __INCLUDE_FROM_CDC_DRIVER  
3372 -#define __INCLUDE_FROM_CDC_DEVICE_C  
3373 -#include "CDCClassDevice.h"  
3374 -  
3375 -void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)  
3376 -{  
3377 - e4a: cf 93 push r28  
3378 - e4c: df 93 push r29  
3379 - e4e: ec 01 movw r28, r24  
3380 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.  
3381 - */  
3382 - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3383 - static inline bool Endpoint_IsSETUPReceived(void)  
3384 - {  
3385 - return ((UEINTX & (1 << RXSTPI)) ? true : false);  
3386 - e50: 80 91 e8 00 lds r24, 0x00E8  
3387 - if (!(Endpoint_IsSETUPReceived()))  
3388 - e54: 83 ff sbrs r24, 3  
3389 - e56: a5 c0 rjmp .+330 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3390 - return;  
3391 -  
3392 - if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber)  
3393 - e58: 88 81 ld r24, Y  
3394 - e5a: 90 e0 ldi r25, 0x00 ; 0  
3395 - e5c: 20 91 3c 02 lds r18, 0x023C  
3396 - e60: 30 91 3d 02 lds r19, 0x023D  
3397 - e64: 28 17 cp r18, r24  
3398 - e66: 39 07 cpc r19, r25  
3399 - e68: 09 f0 breq .+2 ; 0xe6c <CDC_Device_ProcessControlRequest+0x22>  
3400 - e6a: 9b c0 rjmp .+310 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3401 - return;  
3402 -  
3403 - switch (USB_ControlRequest.bRequest)  
3404 - e6c: 80 91 39 02 lds r24, 0x0239  
3405 - e70: 81 32 cpi r24, 0x21 ; 33  
3406 - e72: 61 f0 breq .+24 ; 0xe8c <CDC_Device_ProcessControlRequest+0x42>  
3407 - e74: 20 f4 brcc .+8 ; 0xe7e <CDC_Device_ProcessControlRequest+0x34>  
3408 - e76: 80 32 cpi r24, 0x20 ; 32  
3409 - e78: 09 f4 brne .+2 ; 0xe7c <CDC_Device_ProcessControlRequest+0x32>  
3410 - e7a: 3e c0 rjmp .+124 ; 0xef8 <CDC_Device_ProcessControlRequest+0xae>  
3411 - e7c: 92 c0 rjmp .+292 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3412 - e7e: 82 32 cpi r24, 0x22 ; 34  
3413 - e80: 09 f4 brne .+2 ; 0xe84 <CDC_Device_ProcessControlRequest+0x3a>  
3414 - e82: 6b c0 rjmp .+214 ; 0xf5a <CDC_Device_ProcessControlRequest+0x110>  
3415 - e84: 83 32 cpi r24, 0x23 ; 35  
3416 - e86: 09 f4 brne .+2 ; 0xe8a <CDC_Device_ProcessControlRequest+0x40>  
3417 - e88: 7c c0 rjmp .+248 ; 0xf82 <CDC_Device_ProcessControlRequest+0x138>  
3418 - e8a: 8b c0 rjmp .+278 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3419 - {  
3420 - case CDC_REQ_GetLineEncoding:  
3421 - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))  
3422 - e8c: 80 91 38 02 lds r24, 0x0238  
3423 - e90: 81 3a cpi r24, 0xA1 ; 161  
3424 - e92: 09 f0 breq .+2 ; 0xe96 <CDC_Device_ProcessControlRequest+0x4c>  
3425 - e94: 86 c0 rjmp .+268 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3426 - * \note This is not applicable for non CONTROL type endpoints.  
3427 - */  
3428 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
3429 - static inline void Endpoint_ClearSETUP(void)  
3430 - {  
3431 - UEINTX &= ~(1 << RXSTPI);  
3432 - e96: 80 91 e8 00 lds r24, 0x00E8  
3433 - e9a: 87 7f andi r24, 0xF7 ; 247  
3434 - e9c: 80 93 e8 00 sts 0x00E8, r24  
3435 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.  
3436 - */  
3437 - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3438 - static inline bool Endpoint_IsINReady(void)  
3439 - {  
3440 - return ((UEINTX & (1 << TXINI)) ? true : false);  
3441 - ea0: 80 91 e8 00 lds r24, 0x00E8  
3442 - {  
3443 - Endpoint_ClearSETUP();  
3444 -  
3445 - while (!(Endpoint_IsINReady()));  
3446 - ea4: 80 ff sbrs r24, 0  
3447 - ea6: fc cf rjmp .-8 ; 0xea0 <CDC_Device_ProcessControlRequest+0x56>  
3448 -  
3449 - Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);  
3450 - ea8: 8c 89 ldd r24, Y+20 ; 0x14  
3451 - eaa: 9d 89 ldd r25, Y+21 ; 0x15  
3452 - eac: ae 89 ldd r26, Y+22 ; 0x16  
3453 - eae: bf 89 ldd r27, Y+23 ; 0x17  
3454 - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer.  
3455 - */  
3456 - static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;  
3457 - static inline void Endpoint_Write_32_LE(const uint32_t Data)  
3458 - {  
3459 - UEDATX = (Data & 0xFF);  
3460 - eb0: 80 93 f1 00 sts 0x00F1, r24  
3461 - UEDATX = (Data >> 8);  
3462 - eb4: 49 2f mov r20, r25  
3463 - eb6: 5a 2f mov r21, r26  
3464 - eb8: 6b 2f mov r22, r27  
3465 - eba: 77 27 eor r23, r23  
3466 - ebc: 40 93 f1 00 sts 0x00F1, r20  
3467 - UEDATX = (Data >> 16);  
3468 - ec0: ad 01 movw r20, r26  
3469 - ec2: 66 27 eor r22, r22  
3470 - ec4: 77 27 eor r23, r23  
3471 - ec6: 40 93 f1 00 sts 0x00F1, r20  
3472 - UEDATX = (Data >> 24);  
3473 - eca: 8b 2f mov r24, r27  
3474 - ecc: 99 27 eor r25, r25  
3475 - ece: aa 27 eor r26, r26  
3476 - ed0: bb 27 eor r27, r27  
3477 - ed2: 80 93 f1 00 sts 0x00F1, r24  
3478 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);  
3479 - ed6: 88 8d ldd r24, Y+24 ; 0x18  
3480 - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer.  
3481 - */  
3482 - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;  
3483 - static inline void Endpoint_Write_8(const uint8_t Data)  
3484 - {  
3485 - UEDATX = Data;  
3486 - ed8: 80 93 f1 00 sts 0x00F1, r24  
3487 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);  
3488 - edc: 89 8d ldd r24, Y+25 ; 0x19  
3489 - ede: 80 93 f1 00 sts 0x00F1, r24  
3490 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);  
3491 - ee2: 8a 8d ldd r24, Y+26 ; 0x1a  
3492 - ee4: 80 93 f1 00 sts 0x00F1, r24  
3493 - */  
3494 - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;  
3495 - static inline void Endpoint_ClearIN(void)  
3496 - {  
3497 - #if !defined(CONTROL_ONLY_DEVICE)  
3498 - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));  
3499 - ee8: 80 91 e8 00 lds r24, 0x00E8  
3500 - eec: 8e 77 andi r24, 0x7E ; 126  
3501 - eee: 80 93 e8 00 sts 0x00E8, r24  
3502 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);  
3503 - }  
3504 -  
3505 - break;  
3506 - }  
3507 -}  
3508 - ef2: df 91 pop r29  
3509 - ef4: cf 91 pop r28  
3510 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);  
3511 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);  
3512 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);  
3513 -  
3514 - Endpoint_ClearIN();  
3515 - Endpoint_ClearStatusStage();  
3516 - ef6: 00 cc rjmp .-2048 ; 0x6f8 <Endpoint_ClearStatusStage>  
3517 - }  
3518 -  
3519 - break;  
3520 - case CDC_REQ_SetLineEncoding:  
3521 - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))  
3522 - ef8: 80 91 38 02 lds r24, 0x0238  
3523 - efc: 81 32 cpi r24, 0x21 ; 33  
3524 - efe: 09 f0 breq .+2 ; 0xf02 <CDC_Device_ProcessControlRequest+0xb8>  
3525 - f00: 50 c0 rjmp .+160 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3526 - * \note This is not applicable for non CONTROL type endpoints.  
3527 - */  
3528 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
3529 - static inline void Endpoint_ClearSETUP(void)  
3530 - {  
3531 - UEINTX &= ~(1 << RXSTPI);  
3532 - f02: 80 91 e8 00 lds r24, 0x00E8  
3533 - f06: 87 7f andi r24, 0xF7 ; 247  
3534 - f08: 80 93 e8 00 sts 0x00E8, r24  
3535 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.  
3536 - */  
3537 - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3538 - static inline bool Endpoint_IsOUTReceived(void)  
3539 - {  
3540 - return ((UEINTX & (1 << RXOUTI)) ? true : false);  
3541 - f0c: 80 91 e8 00 lds r24, 0x00E8  
3542 - {  
3543 - Endpoint_ClearSETUP();  
3544 -  
3545 - while (!(Endpoint_IsOUTReceived()))  
3546 - f10: 82 fd sbrc r24, 2  
3547 - f12: 04 c0 rjmp .+8 ; 0xf1c <CDC_Device_ProcessControlRequest+0xd2>  
3548 - {  
3549 - if (USB_DeviceState == DEVICE_STATE_Unattached)  
3550 - f14: 8e b3 in r24, 0x1e ; 30  
3551 - f16: 81 11 cpse r24, r1  
3552 - f18: f9 cf rjmp .-14 ; 0xf0c <CDC_Device_ProcessControlRequest+0xc2>  
3553 - f1a: 43 c0 rjmp .+134 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3554 - {  
3555 - uint32_t Value;  
3556 - uint8_t Bytes[4];  
3557 - } Data;  
3558 -  
3559 - Data.Bytes[0] = UEDATX;  
3560 - f1c: 30 91 f1 00 lds r19, 0x00F1  
3561 - Data.Bytes[1] = UEDATX;  
3562 - f20: 20 91 f1 00 lds r18, 0x00F1  
3563 - Data.Bytes[2] = UEDATX;  
3564 - f24: 90 91 f1 00 lds r25, 0x00F1  
3565 - Data.Bytes[3] = UEDATX;  
3566 - f28: 80 91 f1 00 lds r24, 0x00F1  
3567 - return;  
3568 - }  
3569 -  
3570 - CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();  
3571 - f2c: 3c 8b std Y+20, r19 ; 0x14  
3572 - f2e: 2d 8b std Y+21, r18 ; 0x15  
3573 - f30: 9e 8b std Y+22, r25 ; 0x16  
3574 - f32: 8f 8b std Y+23, r24 ; 0x17  
3575 - * \return Next byte in the currently selected endpoint's FIFO buffer.  
3576 - */  
3577 - static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;  
3578 - static inline uint8_t Endpoint_Read_8(void)  
3579 - {  
3580 - return UEDATX;  
3581 - f34: 80 91 f1 00 lds r24, 0x00F1  
3582 - CDCInterfaceInfo->State.LineEncoding.CharFormat = Endpoint_Read_8();  
3583 - f38: 88 8f std Y+24, r24 ; 0x18  
3584 - f3a: 80 91 f1 00 lds r24, 0x00F1  
3585 - CDCInterfaceInfo->State.LineEncoding.ParityType = Endpoint_Read_8();  
3586 - f3e: 89 8f std Y+25, r24 ; 0x19  
3587 - f40: 80 91 f1 00 lds r24, 0x00F1  
3588 - CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8();  
3589 - f44: 8a 8f std Y+26, r24 ; 0x1a  
3590 - */  
3591 - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;  
3592 - static inline void Endpoint_ClearOUT(void)  
3593 - {  
3594 - #if !defined(CONTROL_ONLY_DEVICE)  
3595 - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));  
3596 - f46: 80 91 e8 00 lds r24, 0x00E8  
3597 - f4a: 8b 77 andi r24, 0x7B ; 123  
3598 - f4c: 80 93 e8 00 sts 0x00E8, r24  
3599 -  
3600 - Endpoint_ClearOUT();  
3601 - Endpoint_ClearStatusStage();  
3602 - f50: d3 db rcall .-2138 ; 0x6f8 <Endpoint_ClearStatusStage>  
3603 -  
3604 - EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);  
3605 - f52: ce 01 movw r24, r28  
3606 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);  
3607 - }  
3608 -  
3609 - break;  
3610 - }  
3611 -}  
3612 - f54: df 91 pop r29  
3613 - f56: cf 91 pop r28  
3614 - CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8();  
3615 -  
3616 - Endpoint_ClearOUT();  
3617 - Endpoint_ClearStatusStage();  
3618 -  
3619 - EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);  
3620 - f58: 24 ca rjmp .-3000 ; 0x3a2 <EVENT_CDC_Device_LineEncodingChanged>  
3621 - }  
3622 -  
3623 - break;  
3624 - case CDC_REQ_SetControlLineState:  
3625 - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))  
3626 - f5a: 80 91 38 02 lds r24, 0x0238  
3627 - f5e: 81 32 cpi r24, 0x21 ; 33  
3628 - f60: 01 f5 brne .+64 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3629 - * \note This is not applicable for non CONTROL type endpoints.  
3630 - */  
3631 - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;  
3632 - static inline void Endpoint_ClearSETUP(void)  
3633 - {  
3634 - UEINTX &= ~(1 << RXSTPI);  
3635 - f62: 80 91 e8 00 lds r24, 0x00E8  
3636 - f66: 87 7f andi r24, 0xF7 ; 247  
3637 - f68: 80 93 e8 00 sts 0x00E8, r24  
3638 - {  
3639 - Endpoint_ClearSETUP();  
3640 - Endpoint_ClearStatusStage();  
3641 - f6c: c5 db rcall .-2166 ; 0x6f8 <Endpoint_ClearStatusStage>  
3642 -  
3643 - CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;  
3644 - f6e: 80 91 3a 02 lds r24, 0x023A  
3645 - f72: 90 91 3b 02 lds r25, 0x023B  
3646 - f76: 99 8b std Y+17, r25 ; 0x11  
3647 - f78: 88 8b std Y+16, r24 ; 0x10  
3648 -  
3649 - EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);  
3650 - f7a: ce 01 movw r24, r28  
3651 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);  
3652 - }  
3653 -  
3654 - break;  
3655 - }  
3656 -}  
3657 - f7c: df 91 pop r29  
3658 - f7e: cf 91 pop r28  
3659 - Endpoint_ClearSETUP();  
3660 - Endpoint_ClearStatusStage();  
3661 -  
3662 - CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;  
3663 -  
3664 - EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);  
3665 - f80: 63 cf rjmp .-314 ; 0xe48 <CDC_Device_Event_Stub>  
3666 - }  
3667 -  
3668 - break;  
3669 - case CDC_REQ_SendBreak:  
3670 - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))  
3671 - f82: 80 91 38 02 lds r24, 0x0238  
3672 - f86: 81 32 cpi r24, 0x21 ; 33  
3673 - f88: 61 f4 brne .+24 ; 0xfa2 <CDC_Device_ProcessControlRequest+0x158>  
3674 - f8a: 80 91 e8 00 lds r24, 0x00E8  
3675 - f8e: 87 7f andi r24, 0xF7 ; 247  
3676 - f90: 80 93 e8 00 sts 0x00E8, r24  
3677 - {  
3678 - Endpoint_ClearSETUP();  
3679 - Endpoint_ClearStatusStage();  
3680 - f94: b1 db rcall .-2206 ; 0x6f8 <Endpoint_ClearStatusStage>  
3681 -  
3682 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);  
3683 - f96: 60 91 3a 02 lds r22, 0x023A  
3684 - f9a: ce 01 movw r24, r28  
3685 - }  
3686 -  
3687 - break;  
3688 - }  
3689 -}  
3690 - f9c: df 91 pop r29  
3691 - f9e: cf 91 pop r28  
3692 - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))  
3693 - {  
3694 - Endpoint_ClearSETUP();  
3695 - Endpoint_ClearStatusStage();  
3696 -  
3697 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);  
3698 - fa0: 53 cf rjmp .-346 ; 0xe48 <CDC_Device_Event_Stub>  
3699 - }  
3700 -  
3701 - break;  
3702 - }  
3703 -}  
3704 - fa2: df 91 pop r29  
3705 - fa4: cf 91 pop r28  
3706 - fa6: 08 95 ret  
3707 -  
3708 -00000fa8 <__udivmodsi4>:  
3709 - fa8: a1 e2 ldi r26, 0x21 ; 33  
3710 - faa: 1a 2e mov r1, r26  
3711 - fac: aa 1b sub r26, r26  
3712 - fae: bb 1b sub r27, r27  
3713 - fb0: fd 01 movw r30, r26  
3714 - fb2: 0d c0 rjmp .+26 ; 0xfce <__udivmodsi4_ep>  
3715 -  
3716 -00000fb4 <__udivmodsi4_loop>:  
3717 - fb4: aa 1f adc r26, r26  
3718 - fb6: bb 1f adc r27, r27  
3719 - fb8: ee 1f adc r30, r30  
3720 - fba: ff 1f adc r31, r31  
3721 - fbc: a2 17 cp r26, r18  
3722 - fbe: b3 07 cpc r27, r19  
3723 - fc0: e4 07 cpc r30, r20  
3724 - fc2: f5 07 cpc r31, r21  
3725 - fc4: 20 f0 brcs .+8 ; 0xfce <__udivmodsi4_ep>  
3726 - fc6: a2 1b sub r26, r18  
3727 - fc8: b3 0b sbc r27, r19  
3728 - fca: e4 0b sbc r30, r20  
3729 - fcc: f5 0b sbc r31, r21  
3730 -  
3731 -00000fce <__udivmodsi4_ep>:  
3732 - fce: 66 1f adc r22, r22  
3733 - fd0: 77 1f adc r23, r23  
3734 - fd2: 88 1f adc r24, r24  
3735 - fd4: 99 1f adc r25, r25  
3736 - fd6: 1a 94 dec r1  
3737 - fd8: 69 f7 brne .-38 ; 0xfb4 <__udivmodsi4_loop>  
3738 - fda: 60 95 com r22  
3739 - fdc: 70 95 com r23  
3740 - fde: 80 95 com r24  
3741 - fe0: 90 95 com r25  
3742 - fe2: 9b 01 movw r18, r22  
3743 - fe4: ac 01 movw r20, r24  
3744 - fe6: bd 01 movw r22, r26  
3745 - fe8: cf 01 movw r24, r30  
3746 - fea: 08 95 ret  
3747 -  
3748 -00000fec <_exit>:  
3749 - fec: f8 94 cli  
3750 -  
3751 -00000fee <__stop_program>:  
3752 - fee: ff cf rjmp .-2 ; 0xfee <__stop_program>  
gadget/USB_gadget.map deleted
@@ -1,1493 +0,0 @@ @@ -1,1493 +0,0 @@
1 -Membre d'archive inclu pour satisfaire la référence par fichier (symbole)  
2 -  
3 -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
4 - obj/HIDParser.o (__mulhi3)  
5 -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
6 - obj/USB_gadget.o (__udivmodsi4)  
7 -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
8 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o (exit)  
9 -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
10 - obj/USB_gadget.o (__do_copy_data)  
11 -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
12 - obj/USB_gadget.o (__do_clear_bss)  
13 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
14 - obj/RNDISClassDevice.o (memcpy_P)  
15 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
16 - obj/CDCClassDevice.o (__strlen_P)  
17 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
18 - obj/HIDClassDevice.o (memcmp)  
19 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
20 - obj/HIDClassDevice.o (memcpy)  
21 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
22 - obj/HIDClassDevice.o (memset)  
23 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
24 - obj/EndpointStream_AVR8.o (eeprom_read_byte)  
25 -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
26 - obj/EndpointStream_AVR8.o (eeprom_update_byte)  
27 -  
28 -Allocation des symboles communs  
29 -Symbole commun taille fichier  
30 -  
31 -USB_IsInitialized 0x1 obj/USBTask.o  
32 -USB_Device_ConfigurationNumber  
33 - 0x1 obj/DeviceStandardReq.o  
34 -USB_Device_CurrentlySelfPowered  
35 - 0x1 obj/DeviceStandardReq.o  
36 -USB_ControlRequest 0x8 obj/USBTask.o  
37 -USB_Device_RemoteWakeupEnabled  
38 - 0x1 obj/DeviceStandardReq.o  
39 -  
40 -Sections d'entrée éliminées  
41 -  
42 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
43 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
44 - .text 0x0000000000000000 0x0 obj/USB_gadget.o  
45 - .text 0x0000000000000000 0x0 obj/Descriptors.o  
46 - .data 0x0000000000000000 0x0 obj/Descriptors.o  
47 - .bss 0x0000000000000000 0x0 obj/Descriptors.o  
48 - .text 0x0000000000000000 0x0 obj/HIDParser.o  
49 - .data 0x0000000000000000 0x0 obj/HIDParser.o  
50 - .bss 0x0000000000000000 0x0 obj/HIDParser.o  
51 - .text.USB_ProcessHIDReport  
52 - 0x0000000000000000 0x6fa obj/HIDParser.o  
53 - .text.USB_GetHIDReportItemInfo  
54 - 0x0000000000000000 0xbc obj/HIDParser.o  
55 - .text.USB_SetHIDReportItemInfo  
56 - 0x0000000000000000 0xc0 obj/HIDParser.o  
57 - .text.USB_GetHIDReportSize  
58 - 0x0000000000000000 0x54 obj/HIDParser.o  
59 - .debug_info 0x0000000000000000 0x738 obj/HIDParser.o  
60 - .debug_abbrev 0x0000000000000000 0x21e obj/HIDParser.o  
61 - .debug_loc 0x0000000000000000 0xa78 obj/HIDParser.o  
62 - .debug_aranges  
63 - 0x0000000000000000 0x38 obj/HIDParser.o  
64 - .debug_ranges 0x0000000000000000 0xd0 obj/HIDParser.o  
65 - .debug_line 0x0000000000000000 0x56f obj/HIDParser.o  
66 - .debug_str 0x0000000000000000 0x6c4 obj/HIDParser.o  
67 - .comment 0x0000000000000000 0x12 obj/HIDParser.o  
68 - .debug_frame 0x0000000000000000 0x11c obj/HIDParser.o  
69 - .text 0x0000000000000000 0x0 obj/Device_AVR8.o  
70 - .data 0x0000000000000000 0x0 obj/Device_AVR8.o  
71 - .bss 0x0000000000000000 0x0 obj/Device_AVR8.o  
72 - .text.USB_Device_SendRemoteWakeup  
73 - 0x0000000000000000 0x2a obj/Device_AVR8.o  
74 - .debug_info 0x0000000000000000 0xd2 obj/Device_AVR8.o  
75 - .debug_abbrev 0x0000000000000000 0x80 obj/Device_AVR8.o  
76 - .debug_aranges  
77 - 0x0000000000000000 0x20 obj/Device_AVR8.o  
78 - .debug_ranges 0x0000000000000000 0x10 obj/Device_AVR8.o  
79 - .debug_line 0x0000000000000000 0xfe obj/Device_AVR8.o  
80 - .debug_str 0x0000000000000000 0x200 obj/Device_AVR8.o  
81 - .comment 0x0000000000000000 0x12 obj/Device_AVR8.o  
82 - .debug_frame 0x0000000000000000 0x24 obj/Device_AVR8.o  
83 - .text 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o  
84 - .data 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o  
85 - .bss 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o  
86 - .text.Endpoint_Discard_Stream  
87 - 0x0000000000000000 0x80 obj/EndpointStream_AVR8.o  
88 - .text.Endpoint_Null_Stream  
89 - 0x0000000000000000 0x80 obj/EndpointStream_AVR8.o  
90 - .text.Endpoint_Write_Stream_LE  
91 - 0x0000000000000000 0x96 obj/EndpointStream_AVR8.o  
92 - .text.Endpoint_Write_Stream_BE  
93 - 0x0000000000000000 0xa2 obj/EndpointStream_AVR8.o  
94 - .text.Endpoint_Read_Stream_LE  
95 - 0x0000000000000000 0x96 obj/EndpointStream_AVR8.o  
96 - .text.Endpoint_Read_Stream_BE  
97 - 0x0000000000000000 0xa2 obj/EndpointStream_AVR8.o  
98 - .text.Endpoint_Write_PStream_LE  
99 - 0x0000000000000000 0x9a obj/EndpointStream_AVR8.o  
100 - .text.Endpoint_Write_PStream_BE  
101 - 0x0000000000000000 0xa4 obj/EndpointStream_AVR8.o  
102 - .text.Endpoint_Write_EStream_LE  
103 - 0x0000000000000000 0x9e obj/EndpointStream_AVR8.o  
104 - .text.Endpoint_Write_EStream_BE  
105 - 0x0000000000000000 0xa6 obj/EndpointStream_AVR8.o  
106 - .text.Endpoint_Read_EStream_LE  
107 - 0x0000000000000000 0x9e obj/EndpointStream_AVR8.o  
108 - .text.Endpoint_Read_EStream_BE  
109 - 0x0000000000000000 0xa6 obj/EndpointStream_AVR8.o  
110 - .text.Endpoint_Write_Control_Stream_BE  
111 - 0x0000000000000000 0xc2 obj/EndpointStream_AVR8.o  
112 - .text.Endpoint_Read_Control_Stream_LE  
113 - 0x0000000000000000 0x74 obj/EndpointStream_AVR8.o  
114 - .text.Endpoint_Read_Control_Stream_BE  
115 - 0x0000000000000000 0x76 obj/EndpointStream_AVR8.o  
116 - .text.Endpoint_Write_Control_PStream_BE  
117 - 0x0000000000000000 0xc4 obj/EndpointStream_AVR8.o  
118 - .text.Endpoint_Write_Control_EStream_LE  
119 - 0x0000000000000000 0xea obj/EndpointStream_AVR8.o  
120 - .text.Endpoint_Write_Control_EStream_BE  
121 - 0x0000000000000000 0xf6 obj/EndpointStream_AVR8.o  
122 - .text.Endpoint_Read_Control_EStream_LE  
123 - 0x0000000000000000 0x88 obj/EndpointStream_AVR8.o  
124 - .text.Endpoint_Read_Control_EStream_BE  
125 - 0x0000000000000000 0x86 obj/EndpointStream_AVR8.o  
126 - .text 0x0000000000000000 0x0 obj/Endpoint_AVR8.o  
127 - .data 0x0000000000000000 0x0 obj/Endpoint_AVR8.o  
128 - .bss 0x0000000000000000 0x0 obj/Endpoint_AVR8.o  
129 - .text.Endpoint_ClearEndpoints  
130 - 0x0000000000000000 0x28 obj/Endpoint_AVR8.o  
131 - .text 0x0000000000000000 0x0 obj/Host_AVR8.o  
132 - .data 0x0000000000000000 0x0 obj/Host_AVR8.o  
133 - .bss 0x0000000000000000 0x0 obj/Host_AVR8.o  
134 - .debug_info 0x0000000000000000 0x56 obj/Host_AVR8.o  
135 - .debug_abbrev 0x0000000000000000 0x26 obj/Host_AVR8.o  
136 - .debug_aranges  
137 - 0x0000000000000000 0x18 obj/Host_AVR8.o  
138 - .debug_line 0x0000000000000000 0x1a obj/Host_AVR8.o  
139 - .debug_str 0x0000000000000000 0x19f obj/Host_AVR8.o  
140 - .comment 0x0000000000000000 0x12 obj/Host_AVR8.o  
141 - .text 0x0000000000000000 0x0 obj/PipeStream_AVR8.o  
142 - .data 0x0000000000000000 0x0 obj/PipeStream_AVR8.o  
143 - .bss 0x0000000000000000 0x0 obj/PipeStream_AVR8.o  
144 - .debug_info 0x0000000000000000 0x56 obj/PipeStream_AVR8.o  
145 - .debug_abbrev 0x0000000000000000 0x26 obj/PipeStream_AVR8.o  
146 - .debug_aranges  
147 - 0x0000000000000000 0x18 obj/PipeStream_AVR8.o  
148 - .debug_line 0x0000000000000000 0x1a obj/PipeStream_AVR8.o  
149 - .debug_str 0x0000000000000000 0x1a5 obj/PipeStream_AVR8.o  
150 - .comment 0x0000000000000000 0x12 obj/PipeStream_AVR8.o  
151 - .text 0x0000000000000000 0x0 obj/Pipe_AVR8.o  
152 - .data 0x0000000000000000 0x0 obj/Pipe_AVR8.o  
153 - .bss 0x0000000000000000 0x0 obj/Pipe_AVR8.o  
154 - .debug_info 0x0000000000000000 0x56 obj/Pipe_AVR8.o  
155 - .debug_abbrev 0x0000000000000000 0x26 obj/Pipe_AVR8.o  
156 - .debug_aranges  
157 - 0x0000000000000000 0x18 obj/Pipe_AVR8.o  
158 - .debug_line 0x0000000000000000 0x1a obj/Pipe_AVR8.o  
159 - .debug_str 0x0000000000000000 0x19f obj/Pipe_AVR8.o  
160 - .comment 0x0000000000000000 0x12 obj/Pipe_AVR8.o  
161 - .text 0x0000000000000000 0x0 obj/USBController_AVR8.o  
162 - .data 0x0000000000000000 0x0 obj/USBController_AVR8.o  
163 - .bss 0x0000000000000000 0x0 obj/USBController_AVR8.o  
164 - .text.USB_Disable  
165 - 0x0000000000000000 0x2e obj/USBController_AVR8.o  
166 - .text 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o  
167 - .data 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o  
168 - .bss 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o  
169 - .text 0x0000000000000000 0x0 obj/ConfigDescriptors.o  
170 - .data 0x0000000000000000 0x0 obj/ConfigDescriptors.o  
171 - .bss 0x0000000000000000 0x0 obj/ConfigDescriptors.o  
172 - .text.USB_GetNextDescriptor  
173 - 0x0000000000000000 0x3c obj/ConfigDescriptors.o  
174 - .text.USB_GetNextDescriptorOfType  
175 - 0x0000000000000000 0x48 obj/ConfigDescriptors.o  
176 - .text.USB_GetNextDescriptorOfTypeBefore  
177 - 0x0000000000000000 0x58 obj/ConfigDescriptors.o  
178 - .text.USB_GetNextDescriptorOfTypeAfter  
179 - 0x0000000000000000 0x3e obj/ConfigDescriptors.o  
180 - .text.USB_GetNextDescriptorComp  
181 - 0x0000000000000000 0x66 obj/ConfigDescriptors.o  
182 - .debug_info 0x0000000000000000 0x3cd obj/ConfigDescriptors.o  
183 - .debug_abbrev 0x0000000000000000 0x183 obj/ConfigDescriptors.o  
184 - .debug_loc 0x0000000000000000 0x5bd obj/ConfigDescriptors.o  
185 - .debug_aranges  
186 - 0x0000000000000000 0x40 obj/ConfigDescriptors.o  
187 - .debug_ranges 0x0000000000000000 0x30 obj/ConfigDescriptors.o  
188 - .debug_line 0x0000000000000000 0x1ce obj/ConfigDescriptors.o  
189 - .debug_str 0x0000000000000000 0x3e8 obj/ConfigDescriptors.o  
190 - .comment 0x0000000000000000 0x12 obj/ConfigDescriptors.o  
191 - .debug_frame 0x0000000000000000 0x108 obj/ConfigDescriptors.o  
192 - .text 0x0000000000000000 0x0 obj/DeviceStandardReq.o  
193 - .data 0x0000000000000000 0x0 obj/DeviceStandardReq.o  
194 - .bss 0x0000000000000000 0x0 obj/DeviceStandardReq.o  
195 - .text 0x0000000000000000 0x0 obj/Events.o  
196 - .data 0x0000000000000000 0x0 obj/Events.o  
197 - .bss 0x0000000000000000 0x0 obj/Events.o  
198 - .text 0x0000000000000000 0x0 obj/HostStandardReq.o  
199 - .data 0x0000000000000000 0x0 obj/HostStandardReq.o  
200 - .bss 0x0000000000000000 0x0 obj/HostStandardReq.o  
201 - .debug_info 0x0000000000000000 0x56 obj/HostStandardReq.o  
202 - .debug_abbrev 0x0000000000000000 0x26 obj/HostStandardReq.o  
203 - .debug_aranges  
204 - 0x0000000000000000 0x18 obj/HostStandardReq.o  
205 - .debug_line 0x0000000000000000 0x1a obj/HostStandardReq.o  
206 - .debug_str 0x0000000000000000 0x1a0 obj/HostStandardReq.o  
207 - .comment 0x0000000000000000 0x12 obj/HostStandardReq.o  
208 - .text 0x0000000000000000 0x0 obj/USBTask.o  
209 - .data 0x0000000000000000 0x0 obj/USBTask.o  
210 - .bss 0x0000000000000000 0x0 obj/USBTask.o  
211 - .text 0x0000000000000000 0x0 obj/AudioClassDevice.o  
212 - .data 0x0000000000000000 0x0 obj/AudioClassDevice.o  
213 - .bss 0x0000000000000000 0x0 obj/AudioClassDevice.o  
214 - .text.Audio_Device_ConfigureEndpoints  
215 - 0x0000000000000000 0x32 obj/AudioClassDevice.o  
216 - .text.Audio_Device_Event_Stub  
217 - 0x0000000000000000 0x2 obj/AudioClassDevice.o  
218 - .text.Audio_Device_ProcessControlRequest  
219 - 0x0000000000000000 0x2e4 obj/AudioClassDevice.o  
220 - .debug_info 0x0000000000000000 0x8ea obj/AudioClassDevice.o  
221 - .debug_abbrev 0x0000000000000000 0x205 obj/AudioClassDevice.o  
222 - .debug_loc 0x0000000000000000 0x37c obj/AudioClassDevice.o  
223 - .debug_aranges  
224 - 0x0000000000000000 0x30 obj/AudioClassDevice.o  
225 - .debug_ranges 0x0000000000000000 0x20 obj/AudioClassDevice.o  
226 - .debug_line 0x0000000000000000 0x3e3 obj/AudioClassDevice.o  
227 - .debug_str 0x0000000000000000 0x6ac obj/AudioClassDevice.o  
228 - .comment 0x0000000000000000 0x12 obj/AudioClassDevice.o  
229 - .debug_frame 0x0000000000000000 0xa8 obj/AudioClassDevice.o  
230 - .text 0x0000000000000000 0x0 obj/CDCClassDevice.o  
231 - .data 0x0000000000000000 0x0 obj/CDCClassDevice.o  
232 - .bss 0x0000000000000000 0x0 obj/CDCClassDevice.o  
233 - .text.CDC_Device_SendString  
234 - 0x0000000000000000 0x40 obj/CDCClassDevice.o  
235 - .text.CDC_Device_SendString_P  
236 - 0x0000000000000000 0x50 obj/CDCClassDevice.o  
237 - .text.CDC_Device_SendData  
238 - 0x0000000000000000 0x32 obj/CDCClassDevice.o  
239 - .text.CDC_Device_SendData_P  
240 - 0x0000000000000000 0x32 obj/CDCClassDevice.o  
241 - .text.CDC_Device_putchar  
242 - 0x0000000000000000 0x22 obj/CDCClassDevice.o  
243 - .text.CDC_Device_BytesReceived  
244 - 0x0000000000000000 0x48 obj/CDCClassDevice.o  
245 - .text.CDC_Device_getchar  
246 - 0x0000000000000000 0x14 obj/CDCClassDevice.o  
247 - .text.CDC_Device_getchar_Blocking  
248 - 0x0000000000000000 0x30 obj/CDCClassDevice.o  
249 - .rodata 0x0000000000000000 0x8 obj/CDCClassDevice.o  
250 - .text.CDC_Device_SendControlLineStateChange  
251 - 0x0000000000000000 0x8c obj/CDCClassDevice.o  
252 - .text.CDC_Device_CreateStream  
253 - 0x0000000000000000 0x26 obj/CDCClassDevice.o  
254 - .text.CDC_Device_CreateBlockingStream  
255 - 0x0000000000000000 0x26 obj/CDCClassDevice.o  
256 - .text 0x0000000000000000 0x0 obj/HIDClassDevice.o  
257 - .data 0x0000000000000000 0x0 obj/HIDClassDevice.o  
258 - .bss 0x0000000000000000 0x0 obj/HIDClassDevice.o  
259 - .text.HID_Device_ProcessControlRequest  
260 - 0x0000000000000000 0x282 obj/HIDClassDevice.o  
261 - .text.HID_Device_ConfigureEndpoints  
262 - 0x0000000000000000 0x28 obj/HIDClassDevice.o  
263 - .text.HID_Device_USBTask  
264 - 0x0000000000000000 0x18c obj/HIDClassDevice.o  
265 - .debug_info 0x0000000000000000 0x9f5 obj/HIDClassDevice.o  
266 - .debug_abbrev 0x0000000000000000 0x264 obj/HIDClassDevice.o  
267 - .debug_loc 0x0000000000000000 0x44b obj/HIDClassDevice.o  
268 - .debug_aranges  
269 - 0x0000000000000000 0x30 obj/HIDClassDevice.o  
270 - .debug_ranges 0x0000000000000000 0x20 obj/HIDClassDevice.o  
271 - .debug_line 0x0000000000000000 0x4ed obj/HIDClassDevice.o  
272 - .debug_str 0x0000000000000000 0x6fe obj/HIDClassDevice.o  
273 - .comment 0x0000000000000000 0x12 obj/HIDClassDevice.o  
274 - .debug_frame 0x0000000000000000 0xe8 obj/HIDClassDevice.o  
275 - .text 0x0000000000000000 0x0 obj/MassStorageClassDevice.o  
276 - .data 0x0000000000000000 0x0 obj/MassStorageClassDevice.o  
277 - .bss 0x0000000000000000 0x0 obj/MassStorageClassDevice.o  
278 - .text.MS_Device_ProcessControlRequest  
279 - 0x0000000000000000 0x86 obj/MassStorageClassDevice.o  
280 - .text.MS_Device_ConfigureEndpoints  
281 - 0x0000000000000000 0x3e obj/MassStorageClassDevice.o  
282 - .text.MS_Device_USBTask  
283 - 0x0000000000000000 0x232 obj/MassStorageClassDevice.o  
284 - .debug_info 0x0000000000000000 0x949 obj/MassStorageClassDevice.o  
285 - .debug_abbrev 0x0000000000000000 0x2a8 obj/MassStorageClassDevice.o  
286 - .debug_loc 0x0000000000000000 0x2b8 obj/MassStorageClassDevice.o  
287 - .debug_aranges  
288 - 0x0000000000000000 0x30 obj/MassStorageClassDevice.o  
289 - .debug_ranges 0x0000000000000000 0x20 obj/MassStorageClassDevice.o  
290 - .debug_line 0x0000000000000000 0x479 obj/MassStorageClassDevice.o  
291 - .debug_str 0x0000000000000000 0x7f8 obj/MassStorageClassDevice.o  
292 - .comment 0x0000000000000000 0x12 obj/MassStorageClassDevice.o  
293 - .debug_frame 0x0000000000000000 0x80 obj/MassStorageClassDevice.o  
294 - .text 0x0000000000000000 0x0 obj/MIDIClassDevice.o  
295 - .data 0x0000000000000000 0x0 obj/MIDIClassDevice.o  
296 - .bss 0x0000000000000000 0x0 obj/MIDIClassDevice.o  
297 - .text.MIDI_Device_ConfigureEndpoints  
298 - 0x0000000000000000 0x32 obj/MIDIClassDevice.o  
299 - .text.MIDI_Device_SendEventPacket  
300 - 0x0000000000000000 0x44 obj/MIDIClassDevice.o  
301 - .text.MIDI_Device_Flush  
302 - 0x0000000000000000 0x2a obj/MIDIClassDevice.o  
303 - .text.MIDI_Device_USBTask  
304 - 0x0000000000000000 0x20 obj/MIDIClassDevice.o  
305 - .text.MIDI_Device_ReceiveEventPacket  
306 - 0x0000000000000000 0x48 obj/MIDIClassDevice.o  
307 - .debug_info 0x0000000000000000 0x629 obj/MIDIClassDevice.o  
308 - .debug_abbrev 0x0000000000000000 0x22b obj/MIDIClassDevice.o  
309 - .debug_loc 0x0000000000000000 0x304 obj/MIDIClassDevice.o  
310 - .debug_aranges  
311 - 0x0000000000000000 0x40 obj/MIDIClassDevice.o  
312 - .debug_ranges 0x0000000000000000 0x30 obj/MIDIClassDevice.o  
313 - .debug_line 0x0000000000000000 0x320 obj/MIDIClassDevice.o  
314 - .debug_str 0x0000000000000000 0x66d obj/MIDIClassDevice.o  
315 - .comment 0x0000000000000000 0x12 obj/MIDIClassDevice.o  
316 - .debug_frame 0x0000000000000000 0x70 obj/MIDIClassDevice.o  
317 - .text 0x0000000000000000 0x0 obj/PrinterClassDevice.o  
318 - .data 0x0000000000000000 0x0 obj/PrinterClassDevice.o  
319 - .bss 0x0000000000000000 0x0 obj/PrinterClassDevice.o  
320 - .text.PRNT_Device_ConfigureEndpoints  
321 - 0x0000000000000000 0x38 obj/PrinterClassDevice.o  
322 - .text.PRNT_Device_SendString  
323 - 0x0000000000000000 0x30 obj/PrinterClassDevice.o  
324 - .text.PRNT_Device_SendData  
325 - 0x0000000000000000 0x22 obj/PrinterClassDevice.o  
326 - .text.PRNT_Device_SendByte  
327 - 0x0000000000000000 0x3e obj/PrinterClassDevice.o  
328 - .text.PRNT_Device_putchar  
329 - 0x0000000000000000 0x22 obj/PrinterClassDevice.o  
330 - .text.PRNT_Device_Flush  
331 - 0x0000000000000000 0x44 obj/PrinterClassDevice.o  
332 - .text.PRNT_Device_USBTask  
333 - 0x0000000000000000 0x9a obj/PrinterClassDevice.o  
334 - .text.PRNT_Device_BytesReceived  
335 - 0x0000000000000000 0x38 obj/PrinterClassDevice.o  
336 - .text.PRNT_Device_ReceiveByte  
337 - 0x0000000000000000 0x48 obj/PrinterClassDevice.o  
338 - .text.PRNT_Device_getchar  
339 - 0x0000000000000000 0x14 obj/PrinterClassDevice.o  
340 - .text.PRNT_Device_getchar_Blocking  
341 - 0x0000000000000000 0x30 obj/PrinterClassDevice.o  
342 - .text.PRNT_Device_CreateStream  
343 - 0x0000000000000000 0x26 obj/PrinterClassDevice.o  
344 - .text.PRNT_Device_CreateBlockingStream  
345 - 0x0000000000000000 0x26 obj/PrinterClassDevice.o  
346 - .text.PRNT_Device_Event_Stub  
347 - 0x0000000000000000 0x2 obj/PrinterClassDevice.o  
348 - .text.PRNT_Device_ProcessControlRequest  
349 - 0x0000000000000000 0xd6 obj/PrinterClassDevice.o  
350 - .debug_info 0x0000000000000000 0xcd3 obj/PrinterClassDevice.o  
351 - .debug_abbrev 0x0000000000000000 0x343 obj/PrinterClassDevice.o  
352 - .debug_loc 0x0000000000000000 0x837 obj/PrinterClassDevice.o  
353 - .debug_aranges  
354 - 0x0000000000000000 0x90 obj/PrinterClassDevice.o  
355 - .debug_ranges 0x0000000000000000 0x80 obj/PrinterClassDevice.o  
356 - .debug_line 0x0000000000000000 0x67f obj/PrinterClassDevice.o  
357 - .debug_str 0x0000000000000000 0x936 obj/PrinterClassDevice.o  
358 - .comment 0x0000000000000000 0x12 obj/PrinterClassDevice.o  
359 - .debug_frame 0x0000000000000000 0x13c obj/PrinterClassDevice.o  
360 - .text 0x0000000000000000 0x0 obj/RNDISClassDevice.o  
361 - .data 0x0000000000000000 0x0 obj/RNDISClassDevice.o  
362 - .bss 0x0000000000000000 0x0 obj/RNDISClassDevice.o  
363 - .text.RNDIS_Device_ProcessControlRequest  
364 - 0x0000000000000000 0x4ec obj/RNDISClassDevice.o  
365 - .text.RNDIS_Device_ConfigureEndpoints  
366 - 0x0000000000000000 0x64 obj/RNDISClassDevice.o  
367 - .rodata 0x0000000000000000 0x8 obj/RNDISClassDevice.o  
368 - .text.RNDIS_Device_USBTask  
369 - 0x0000000000000000 0x7e obj/RNDISClassDevice.o  
370 - .text.RNDIS_Device_IsPacketReceived  
371 - 0x0000000000000000 0x26 obj/RNDISClassDevice.o  
372 - .text.RNDIS_Device_ReadPacket  
373 - 0x0000000000000000 0xb4 obj/RNDISClassDevice.o  
374 - .text.RNDIS_Device_SendPacket  
375 - 0x0000000000000000 0xd2 obj/RNDISClassDevice.o  
376 - .progmem.data 0x0000000000000000 0x6c obj/RNDISClassDevice.o  
377 - .debug_info 0x0000000000000000 0x1154 obj/RNDISClassDevice.o  
378 - .debug_abbrev 0x0000000000000000 0x36f obj/RNDISClassDevice.o  
379 - .debug_loc 0x0000000000000000 0xdce obj/RNDISClassDevice.o  
380 - .debug_aranges  
381 - 0x0000000000000000 0x48 obj/RNDISClassDevice.o  
382 - .debug_ranges 0x0000000000000000 0x88 obj/RNDISClassDevice.o  
383 - .debug_line 0x0000000000000000 0x692 obj/RNDISClassDevice.o  
384 - .debug_str 0x0000000000000000 0xd6e obj/RNDISClassDevice.o  
385 - .comment 0x0000000000000000 0x12 obj/RNDISClassDevice.o  
386 - .debug_frame 0x0000000000000000 0x10c obj/RNDISClassDevice.o  
387 - .text 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o  
388 - .data 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o  
389 - .bss 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o  
390 - .debug_info 0x0000000000000000 0x56 obj/AndroidAccessoryClassHost.o  
391 - .debug_abbrev 0x0000000000000000 0x26 obj/AndroidAccessoryClassHost.o  
392 - .debug_aranges  
393 - 0x0000000000000000 0x18 obj/AndroidAccessoryClassHost.o  
394 - .debug_line 0x0000000000000000 0x1a obj/AndroidAccessoryClassHost.o  
395 - .debug_str 0x0000000000000000 0x1b0 obj/AndroidAccessoryClassHost.o  
396 - .comment 0x0000000000000000 0x12 obj/AndroidAccessoryClassHost.o  
397 - .text 0x0000000000000000 0x0 obj/AudioClassHost.o  
398 - .data 0x0000000000000000 0x0 obj/AudioClassHost.o  
399 - .bss 0x0000000000000000 0x0 obj/AudioClassHost.o  
400 - .debug_info 0x0000000000000000 0x56 obj/AudioClassHost.o  
401 - .debug_abbrev 0x0000000000000000 0x26 obj/AudioClassHost.o  
402 - .debug_aranges  
403 - 0x0000000000000000 0x18 obj/AudioClassHost.o  
404 - .debug_line 0x0000000000000000 0x1a obj/AudioClassHost.o  
405 - .debug_str 0x0000000000000000 0x1a5 obj/AudioClassHost.o  
406 - .comment 0x0000000000000000 0x12 obj/AudioClassHost.o  
407 - .text 0x0000000000000000 0x0 obj/CDCClassHost.o  
408 - .data 0x0000000000000000 0x0 obj/CDCClassHost.o  
409 - .bss 0x0000000000000000 0x0 obj/CDCClassHost.o  
410 - .debug_info 0x0000000000000000 0x56 obj/CDCClassHost.o  
411 - .debug_abbrev 0x0000000000000000 0x26 obj/CDCClassHost.o  
412 - .debug_aranges  
413 - 0x0000000000000000 0x18 obj/CDCClassHost.o  
414 - .debug_line 0x0000000000000000 0x1a obj/CDCClassHost.o  
415 - .debug_str 0x0000000000000000 0x1a3 obj/CDCClassHost.o  
416 - .comment 0x0000000000000000 0x12 obj/CDCClassHost.o  
417 - .text 0x0000000000000000 0x0 obj/HIDClassHost.o  
418 - .data 0x0000000000000000 0x0 obj/HIDClassHost.o  
419 - .bss 0x0000000000000000 0x0 obj/HIDClassHost.o  
420 - .debug_info 0x0000000000000000 0x56 obj/HIDClassHost.o  
421 - .debug_abbrev 0x0000000000000000 0x26 obj/HIDClassHost.o  
422 - .debug_aranges  
423 - 0x0000000000000000 0x18 obj/HIDClassHost.o  
424 - .debug_line 0x0000000000000000 0x1a obj/HIDClassHost.o  
425 - .debug_str 0x0000000000000000 0x1a3 obj/HIDClassHost.o  
426 - .comment 0x0000000000000000 0x12 obj/HIDClassHost.o  
427 - .text 0x0000000000000000 0x0 obj/MassStorageClassHost.o  
428 - .data 0x0000000000000000 0x0 obj/MassStorageClassHost.o  
429 - .bss 0x0000000000000000 0x0 obj/MassStorageClassHost.o  
430 - .debug_info 0x0000000000000000 0x56 obj/MassStorageClassHost.o  
431 - .debug_abbrev 0x0000000000000000 0x26 obj/MassStorageClassHost.o  
432 - .debug_aranges  
433 - 0x0000000000000000 0x18 obj/MassStorageClassHost.o  
434 - .debug_line 0x0000000000000000 0x1a obj/MassStorageClassHost.o  
435 - .debug_str 0x0000000000000000 0x1ab obj/MassStorageClassHost.o  
436 - .comment 0x0000000000000000 0x12 obj/MassStorageClassHost.o  
437 - .text 0x0000000000000000 0x0 obj/MIDIClassHost.o  
438 - .data 0x0000000000000000 0x0 obj/MIDIClassHost.o  
439 - .bss 0x0000000000000000 0x0 obj/MIDIClassHost.o  
440 - .debug_info 0x0000000000000000 0x56 obj/MIDIClassHost.o  
441 - .debug_abbrev 0x0000000000000000 0x26 obj/MIDIClassHost.o  
442 - .debug_aranges  
443 - 0x0000000000000000 0x18 obj/MIDIClassHost.o  
444 - .debug_line 0x0000000000000000 0x1a obj/MIDIClassHost.o  
445 - .debug_str 0x0000000000000000 0x1a4 obj/MIDIClassHost.o  
446 - .comment 0x0000000000000000 0x12 obj/MIDIClassHost.o  
447 - .text 0x0000000000000000 0x0 obj/PrinterClassHost.o  
448 - .data 0x0000000000000000 0x0 obj/PrinterClassHost.o  
449 - .bss 0x0000000000000000 0x0 obj/PrinterClassHost.o  
450 - .debug_info 0x0000000000000000 0x56 obj/PrinterClassHost.o  
451 - .debug_abbrev 0x0000000000000000 0x26 obj/PrinterClassHost.o  
452 - .debug_aranges  
453 - 0x0000000000000000 0x18 obj/PrinterClassHost.o  
454 - .debug_line 0x0000000000000000 0x1a obj/PrinterClassHost.o  
455 - .debug_str 0x0000000000000000 0x1a7 obj/PrinterClassHost.o  
456 - .comment 0x0000000000000000 0x12 obj/PrinterClassHost.o  
457 - .text 0x0000000000000000 0x0 obj/RNDISClassHost.o  
458 - .data 0x0000000000000000 0x0 obj/RNDISClassHost.o  
459 - .bss 0x0000000000000000 0x0 obj/RNDISClassHost.o  
460 - .debug_info 0x0000000000000000 0x56 obj/RNDISClassHost.o  
461 - .debug_abbrev 0x0000000000000000 0x26 obj/RNDISClassHost.o  
462 - .debug_aranges  
463 - 0x0000000000000000 0x18 obj/RNDISClassHost.o  
464 - .debug_line 0x0000000000000000 0x1a obj/RNDISClassHost.o  
465 - .debug_str 0x0000000000000000 0x1a5 obj/RNDISClassHost.o  
466 - .comment 0x0000000000000000 0x12 obj/RNDISClassHost.o  
467 - .text 0x0000000000000000 0x0 obj/StillImageClassHost.o  
468 - .data 0x0000000000000000 0x0 obj/StillImageClassHost.o  
469 - .bss 0x0000000000000000 0x0 obj/StillImageClassHost.o  
470 - .debug_info 0x0000000000000000 0x56 obj/StillImageClassHost.o  
471 - .debug_abbrev 0x0000000000000000 0x26 obj/StillImageClassHost.o  
472 - .debug_aranges  
473 - 0x0000000000000000 0x18 obj/StillImageClassHost.o  
474 - .debug_line 0x0000000000000000 0x1a obj/StillImageClassHost.o  
475 - .debug_str 0x0000000000000000 0x1aa obj/StillImageClassHost.o  
476 - .comment 0x0000000000000000 0x12 obj/StillImageClassHost.o  
477 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
478 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
479 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
480 - .text.libgcc.mul  
481 - 0x0000000000000000 0x22 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
482 - .text.libgcc.div  
483 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
484 - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
485 - .text.libgcc.prologue  
486 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
487 - .text.libgcc.builtins  
488 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
489 - .text.libgcc.fmul  
490 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
491 - .text.libgcc.fixed  
492 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
493 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
494 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
495 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
496 - .text.libgcc.mul  
497 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
498 - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
499 - .text.libgcc.prologue  
500 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
501 - .text.libgcc.builtins  
502 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
503 - .text.libgcc.fmul  
504 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
505 - .text.libgcc.fixed  
506 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
507 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
508 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
509 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
510 - .text.libgcc.mul  
511 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
512 - .text.libgcc.div  
513 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
514 - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
515 - .text.libgcc.prologue  
516 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
517 - .text.libgcc.builtins  
518 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
519 - .text.libgcc.fmul  
520 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
521 - .text.libgcc.fixed  
522 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
523 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
524 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
525 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
526 - .text.libgcc.mul  
527 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
528 - .text.libgcc.div  
529 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
530 - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
531 - .text.libgcc.prologue  
532 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
533 - .text.libgcc.builtins  
534 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
535 - .text.libgcc.fmul  
536 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
537 - .text.libgcc.fixed  
538 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
539 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
540 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
541 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
542 - .text.libgcc.mul  
543 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
544 - .text.libgcc.div  
545 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
546 - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
547 - .text.libgcc.prologue  
548 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
549 - .text.libgcc.builtins  
550 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
551 - .text.libgcc.fmul  
552 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
553 - .text.libgcc.fixed  
554 - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
555 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
556 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
557 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
558 - .text.avr-libc  
559 - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
560 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
561 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
562 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
563 - .text.avr-libc  
564 - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
565 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
566 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
567 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
568 - .text.avr-libc  
569 - 0x0000000000000000 0x1a /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
570 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
571 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
572 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
573 - .text.avr-libc  
574 - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
575 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
576 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
577 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
578 - .text.avr-libc  
579 - 0x0000000000000000 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
580 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
581 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
582 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
583 - .text.avr-libc  
584 - 0x0000000000000000 0x10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
585 - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
586 - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
587 - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
588 - .text.avr-libc  
589 - 0x0000000000000000 0x24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
590 -  
591 -Configuration mémoire  
592 -  
593 -Nom Origine Longueur Attributs  
594 -text 0x0000000000000000 0x0000000000010000 xr  
595 -data 0x0000000000800060 0x000000000000ffa0 rw !x  
596 -eeprom 0x0000000000810000 0x0000000000010000 rw !x  
597 -fuse 0x0000000000820000 0x0000000000000400 rw !x  
598 -lock 0x0000000000830000 0x0000000000000400 rw !x  
599 -signature 0x0000000000840000 0x0000000000000400 rw !x  
600 -user_signatures 0x0000000000850000 0x0000000000000400 rw !x  
601 -*default* 0x0000000000000000 0xffffffffffffffff  
602 -  
603 -Script de l'éditeurs de liens and table de projection mémoire  
604 -  
605 -Adresse de la section .data initialisé à 0x800100  
606 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
607 -LOAD obj/USB_gadget.o  
608 -LOAD obj/Descriptors.o  
609 -LOAD obj/HIDParser.o  
610 -LOAD obj/Device_AVR8.o  
611 -LOAD obj/EndpointStream_AVR8.o  
612 -LOAD obj/Endpoint_AVR8.o  
613 -LOAD obj/Host_AVR8.o  
614 -LOAD obj/PipeStream_AVR8.o  
615 -LOAD obj/Pipe_AVR8.o  
616 -LOAD obj/USBController_AVR8.o  
617 -LOAD obj/USBInterrupt_AVR8.o  
618 -LOAD obj/ConfigDescriptors.o  
619 -LOAD obj/DeviceStandardReq.o  
620 -LOAD obj/Events.o  
621 -LOAD obj/HostStandardReq.o  
622 -LOAD obj/USBTask.o  
623 -LOAD obj/AudioClassDevice.o  
624 -LOAD obj/CDCClassDevice.o  
625 -LOAD obj/HIDClassDevice.o  
626 -LOAD obj/MassStorageClassDevice.o  
627 -LOAD obj/MIDIClassDevice.o  
628 -LOAD obj/PrinterClassDevice.o  
629 -LOAD obj/RNDISClassDevice.o  
630 -LOAD obj/AndroidAccessoryClassHost.o  
631 -LOAD obj/AudioClassHost.o  
632 -LOAD obj/CDCClassHost.o  
633 -LOAD obj/HIDClassHost.o  
634 -LOAD obj/MassStorageClassHost.o  
635 -LOAD obj/MIDIClassHost.o  
636 -LOAD obj/PrinterClassHost.o  
637 -LOAD obj/RNDISClassHost.o  
638 -LOAD obj/StillImageClassHost.o  
639 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libm.a  
640 -START GROUP  
641 -LOAD /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a  
642 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libm.a  
643 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a  
644 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a  
645 -END GROUP  
646 -  
647 -.hash  
648 - *(.hash)  
649 -  
650 -.dynsym  
651 - *(.dynsym)  
652 -  
653 -.dynstr  
654 - *(.dynstr)  
655 -  
656 -.gnu.version  
657 - *(.gnu.version)  
658 -  
659 -.gnu.version_d  
660 - *(.gnu.version_d)  
661 -  
662 -.gnu.version_r  
663 - *(.gnu.version_r)  
664 -  
665 -.rel.init  
666 - *(.rel.init)  
667 -  
668 -.rela.init  
669 - *(.rela.init)  
670 -  
671 -.rel.text  
672 - *(.rel.text)  
673 - *(.rel.text.*)  
674 - *(.rel.gnu.linkonce.t*)  
675 -  
676 -.rela.text  
677 - *(.rela.text)  
678 - *(.rela.text.*)  
679 - *(.rela.gnu.linkonce.t*)  
680 -  
681 -.rel.fini  
682 - *(.rel.fini)  
683 -  
684 -.rela.fini  
685 - *(.rela.fini)  
686 -  
687 -.rel.rodata  
688 - *(.rel.rodata)  
689 - *(.rel.rodata.*)  
690 - *(.rel.gnu.linkonce.r*)  
691 -  
692 -.rela.rodata  
693 - *(.rela.rodata)  
694 - *(.rela.rodata.*)  
695 - *(.rela.gnu.linkonce.r*)  
696 -  
697 -.rel.data  
698 - *(.rel.data)  
699 - *(.rel.data.*)  
700 - *(.rel.gnu.linkonce.d*)  
701 -  
702 -.rela.data  
703 - *(.rela.data)  
704 - *(.rela.data.*)  
705 - *(.rela.gnu.linkonce.d*)  
706 -  
707 -.rel.ctors  
708 - *(.rel.ctors)  
709 -  
710 -.rela.ctors  
711 - *(.rela.ctors)  
712 -  
713 -.rel.dtors  
714 - *(.rel.dtors)  
715 -  
716 -.rela.dtors  
717 - *(.rela.dtors)  
718 -  
719 -.rel.got  
720 - *(.rel.got)  
721 -  
722 -.rela.got  
723 - *(.rela.got)  
724 -  
725 -.rel.bss  
726 - *(.rel.bss)  
727 -  
728 -.rela.bss  
729 - *(.rela.bss)  
730 -  
731 -.rel.plt  
732 - *(.rel.plt)  
733 -  
734 -.rela.plt  
735 - *(.rela.plt)  
736 -  
737 -.text 0x0000000000000000 0xff0  
738 - *(.vectors)  
739 - .vectors 0x0000000000000000 0x74 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
740 - 0x0000000000000000 __vectors  
741 - 0x0000000000000000 __vector_default  
742 - *(.vectors)  
743 - *(.progmem.gcc*)  
744 - 0x0000000000000074 . = ALIGN (0x2)  
745 - 0x0000000000000074 __trampolines_start = .  
746 - *(.trampolines)  
747 - .trampolines 0x0000000000000074 0x0 linker stubs  
748 - *(.trampolines*)  
749 - 0x0000000000000074 __trampolines_end = .  
750 - *(.progmem*)  
751 - .progmem.data 0x0000000000000074 0x9e obj/Descriptors.o  
752 - 0x0000000000000074 ProductString  
753 - 0x00000000000000a4 ManufacturerString  
754 - 0x00000000000000be LanguageString  
755 - 0x00000000000000c2 ConfigurationDescriptor  
756 - 0x0000000000000100 DeviceDescriptor  
757 - 0x0000000000000112 . = ALIGN (0x2)  
758 - *(.jumptables)  
759 - *(.jumptables*)  
760 - *(.lowtext)  
761 - *(.lowtext*)  
762 - 0x0000000000000112 __ctors_start = .  
763 - *(.ctors)  
764 - 0x0000000000000112 __ctors_end = .  
765 - 0x0000000000000112 __dtors_start = .  
766 - *(.dtors)  
767 - 0x0000000000000112 __dtors_end = .  
768 - SORT(*)(.ctors)  
769 - SORT(*)(.dtors)  
770 - *(.init0)  
771 - .init0 0x0000000000000112 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
772 - 0x0000000000000112 __init  
773 - *(.init0)  
774 - *(.init1)  
775 - *(.init1)  
776 - *(.init2)  
777 - .init2 0x0000000000000112 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
778 - *(.init2)  
779 - *(.init3)  
780 - *(.init3)  
781 - *(.init4)  
782 - .init4 0x000000000000011e 0x16 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
783 - 0x000000000000011e __do_copy_data  
784 - .init4 0x0000000000000134 0x10 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
785 - 0x0000000000000134 __do_clear_bss  
786 - *(.init4)  
787 - *(.init5)  
788 - *(.init5)  
789 - *(.init6)  
790 - *(.init6)  
791 - *(.init7)  
792 - *(.init7)  
793 - *(.init8)  
794 - *(.init8)  
795 - *(.init9)  
796 - .init9 0x0000000000000144 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
797 - *(.init9)  
798 - *(.text)  
799 - .text 0x0000000000000148 0x2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
800 - 0x0000000000000148 __vector_22  
801 - 0x0000000000000148 __vector_28  
802 - 0x0000000000000148 __vector_1  
803 - 0x0000000000000148 __vector_24  
804 - 0x0000000000000148 __bad_interrupt  
805 - 0x0000000000000148 __vector_6  
806 - 0x0000000000000148 __vector_3  
807 - 0x0000000000000148 __vector_25  
808 - 0x0000000000000148 __vector_13  
809 - 0x0000000000000148 __vector_17  
810 - 0x0000000000000148 __vector_19  
811 - 0x0000000000000148 __vector_7  
812 - 0x0000000000000148 __vector_27  
813 - 0x0000000000000148 __vector_5  
814 - 0x0000000000000148 __vector_4  
815 - 0x0000000000000148 __vector_9  
816 - 0x0000000000000148 __vector_2  
817 - 0x0000000000000148 __vector_21  
818 - 0x0000000000000148 __vector_15  
819 - 0x0000000000000148 __vector_8  
820 - 0x0000000000000148 __vector_26  
821 - 0x0000000000000148 __vector_14  
822 - 0x0000000000000148 __vector_10  
823 - 0x0000000000000148 __vector_16  
824 - 0x0000000000000148 __vector_18  
825 - 0x0000000000000148 __vector_20  
826 - 0x000000000000014a . = ALIGN (0x2)  
827 - *(.text.*)  
828 - .text.LEDs_SetAllLEDs  
829 - 0x000000000000014a 0xc obj/USB_gadget.o  
830 - .text.RingBuffer_Insert  
831 - 0x0000000000000156 0x36 obj/USB_gadget.o  
832 - .text.RingBuffer_Remove  
833 - 0x000000000000018c 0x32 obj/USB_gadget.o  
834 - .text.SetupHardware  
835 - 0x00000000000001be 0x3c obj/USB_gadget.o  
836 - 0x00000000000001be SetupHardware  
837 - .text.startup.main  
838 - 0x00000000000001fa 0x118 obj/USB_gadget.o  
839 - 0x00000000000001fa main  
840 - .text.EVENT_USB_Device_Connect  
841 - 0x0000000000000312 0x4 obj/USB_gadget.o  
842 - 0x0000000000000312 EVENT_USB_Device_Connect  
843 - .text.EVENT_USB_Device_Disconnect  
844 - 0x0000000000000316 0x4 obj/USB_gadget.o  
845 - 0x0000000000000316 EVENT_USB_Device_Disconnect  
846 - .text.EVENT_USB_Device_ConfigurationChanged  
847 - 0x000000000000031a 0x12 obj/USB_gadget.o  
848 - 0x000000000000031a EVENT_USB_Device_ConfigurationChanged  
849 - .text.EVENT_USB_Device_ControlRequest  
850 - 0x000000000000032c 0x6 obj/USB_gadget.o  
851 - 0x000000000000032c EVENT_USB_Device_ControlRequest  
852 - .text.__vector_23  
853 - 0x0000000000000332 0x70 obj/USB_gadget.o  
854 - 0x0000000000000332 __vector_23  
855 - .text.EVENT_CDC_Device_LineEncodingChanged  
856 - 0x00000000000003a2 0x8a obj/USB_gadget.o  
857 - 0x00000000000003a2 EVENT_CDC_Device_LineEncodingChanged  
858 - .text.CALLBACK_USB_GetDescriptor  
859 - 0x000000000000042c 0x64 obj/Descriptors.o  
860 - 0x000000000000042c CALLBACK_USB_GetDescriptor  
861 - .text.Endpoint_Write_Control_Stream_LE  
862 - 0x0000000000000490 0xb8 obj/EndpointStream_AVR8.o  
863 - 0x0000000000000490 Endpoint_Write_Control_Stream_LE  
864 - .text.Endpoint_Write_Control_PStream_LE  
865 - 0x0000000000000548 0xb4 obj/EndpointStream_AVR8.o  
866 - 0x0000000000000548 Endpoint_Write_Control_PStream_LE  
867 - .text.Endpoint_ConfigureEndpoint_Prv  
868 - 0x00000000000005fc 0x6a obj/Endpoint_AVR8.o  
869 - 0x00000000000005fc Endpoint_ConfigureEndpoint_Prv  
870 - .text.Endpoint_ConfigureEndpointTable  
871 - 0x0000000000000666 0x92 obj/Endpoint_AVR8.o  
872 - 0x0000000000000666 Endpoint_ConfigureEndpointTable  
873 - .text.Endpoint_ClearStatusStage  
874 - 0x00000000000006f8 0x3a obj/Endpoint_AVR8.o  
875 - 0x00000000000006f8 Endpoint_ClearStatusStage  
876 - .text.Endpoint_WaitUntilReady  
877 - 0x0000000000000732 0x62 obj/Endpoint_AVR8.o  
878 - 0x0000000000000732 Endpoint_WaitUntilReady  
879 - .text.USB_ResetInterface  
880 - 0x0000000000000794 0x6e obj/USBController_AVR8.o  
881 - 0x0000000000000794 USB_ResetInterface  
882 - .text.USB_Init  
883 - 0x0000000000000802 0x12 obj/USBController_AVR8.o  
884 - 0x0000000000000802 USB_Init  
885 - .text.USB_INT_DisableAllInterrupts  
886 - 0x0000000000000814 0x6 obj/USBInterrupt_AVR8.o  
887 - 0x0000000000000814 USB_INT_DisableAllInterrupts  
888 - .text.USB_INT_ClearAllInterrupts  
889 - 0x000000000000081a 0x6 obj/USBInterrupt_AVR8.o  
890 - 0x000000000000081a USB_INT_ClearAllInterrupts  
891 - .text.__vector_11  
892 - 0x0000000000000820 0x14a obj/USBInterrupt_AVR8.o  
893 - 0x0000000000000820 __vector_11  
894 - .text.__vector_12  
895 - 0x000000000000096a 0x86 obj/USBInterrupt_AVR8.o  
896 - 0x000000000000096a __vector_12  
897 - .text.USB_Device_ProcessControlRequest  
898 - 0x00000000000009f0 0x2b2 obj/DeviceStandardReq.o  
899 - 0x00000000000009f0 USB_Device_ProcessControlRequest  
900 - .text.USB_Event_Stub  
901 - 0x0000000000000ca2 0x2 obj/Events.o  
902 - 0x0000000000000ca2 EVENT_USB_Device_WakeUp  
903 - 0x0000000000000ca2 USB_Event_Stub  
904 - 0x0000000000000ca2 EVENT_USB_Device_Suspend  
905 - 0x0000000000000ca2 EVENT_USB_Device_StartOfFrame  
906 - 0x0000000000000ca2 EVENT_USB_Device_Reset  
907 - .text.USB_USBTask  
908 - 0x0000000000000ca4 0x32 obj/USBTask.o  
909 - 0x0000000000000ca4 USB_USBTask  
910 - .text.CDC_Device_ConfigureEndpoints  
911 - 0x0000000000000cd6 0x4a obj/CDCClassDevice.o  
912 - 0x0000000000000cd6 CDC_Device_ConfigureEndpoints  
913 - .text.CDC_Device_SendByte  
914 - 0x0000000000000d20 0x54 obj/CDCClassDevice.o  
915 - 0x0000000000000d20 CDC_Device_SendByte  
916 - .text.CDC_Device_Flush  
917 - 0x0000000000000d74 0x52 obj/CDCClassDevice.o  
918 - 0x0000000000000d74 CDC_Device_Flush  
919 - .text.CDC_Device_USBTask  
920 - 0x0000000000000dc6 0x2a obj/CDCClassDevice.o  
921 - 0x0000000000000dc6 CDC_Device_USBTask  
922 - .text.CDC_Device_ReceiveByte  
923 - 0x0000000000000df0 0x58 obj/CDCClassDevice.o  
924 - 0x0000000000000df0 CDC_Device_ReceiveByte  
925 - .text.CDC_Device_Event_Stub  
926 - 0x0000000000000e48 0x2 obj/CDCClassDevice.o  
927 - 0x0000000000000e48 EVENT_CDC_Device_ControLineStateChanged  
928 - 0x0000000000000e48 EVENT_CDC_Device_BreakSent  
929 - 0x0000000000000e48 CDC_Device_Event_Stub  
930 - .text.CDC_Device_ProcessControlRequest  
931 - 0x0000000000000e4a 0x15e obj/CDCClassDevice.o  
932 - 0x0000000000000e4a CDC_Device_ProcessControlRequest  
933 - .text.libgcc.div  
934 - 0x0000000000000fa8 0x44 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
935 - 0x0000000000000fa8 __udivmodsi4  
936 - 0x0000000000000fec . = ALIGN (0x2)  
937 - *(.fini9)  
938 - .fini9 0x0000000000000fec 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
939 - 0x0000000000000fec exit  
940 - 0x0000000000000fec _exit  
941 - *(.fini9)  
942 - *(.fini8)  
943 - *(.fini8)  
944 - *(.fini7)  
945 - *(.fini7)  
946 - *(.fini6)  
947 - *(.fini6)  
948 - *(.fini5)  
949 - *(.fini5)  
950 - *(.fini4)  
951 - *(.fini4)  
952 - *(.fini3)  
953 - *(.fini3)  
954 - *(.fini2)  
955 - *(.fini2)  
956 - *(.fini1)  
957 - *(.fini1)  
958 - *(.fini0)  
959 - .fini0 0x0000000000000fec 0x4 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
960 - *(.fini0)  
961 - 0x0000000000000ff0 _etext = .  
962 -  
963 -.data 0x0000000000800100 0x1c address de chargement 0x0000000000000ff0  
964 - 0x0000000000800100 PROVIDE (__data_start, .)  
965 - *(.data)  
966 - .data 0x0000000000800100 0x1b obj/USB_gadget.o  
967 - 0x0000000000800100 VirtualSerial_CDC_Interface  
968 - *(.data*)  
969 - *(.rodata)  
970 - *(.rodata*)  
971 - *(.gnu.linkonce.d*)  
972 - 0x000000000080011c . = ALIGN (0x2)  
973 - *fill* 0x000000000080011b 0x1  
974 - 0x000000000080011c _edata = .  
975 - 0x000000000080011c PROVIDE (__data_end, .)  
976 -  
977 -.bss 0x000000000080011c 0x124  
978 - 0x000000000080011c PROVIDE (__bss_start, .)  
979 - *(.bss)  
980 - .bss 0x000000000080011c 0x118 obj/USB_gadget.o  
981 - *(.bss*)  
982 - *(COMMON)  
983 - COMMON 0x0000000000800234 0x3 obj/DeviceStandardReq.o  
984 - 0x0000000000800234 USB_Device_ConfigurationNumber  
985 - 0x0000000000800235 USB_Device_CurrentlySelfPowered  
986 - 0x0000000000800236 USB_Device_RemoteWakeupEnabled  
987 - COMMON 0x0000000000800237 0x9 obj/USBTask.o  
988 - 0x0000000000800237 USB_IsInitialized  
989 - 0x0000000000800238 USB_ControlRequest  
990 - 0x0000000000800240 PROVIDE (__bss_end, .)  
991 - 0x0000000000000ff0 __data_load_start = LOADADDR (.data)  
992 - 0x000000000000100c __data_load_end = (__data_load_start + SIZEOF (.data))  
993 -  
994 -.noinit 0x0000000000800240 0x0  
995 - 0x0000000000800240 PROVIDE (__noinit_start, .)  
996 - *(.noinit*)  
997 - 0x0000000000800240 PROVIDE (__noinit_end, .)  
998 - 0x0000000000800240 _end = .  
999 - 0x0000000000800240 PROVIDE (__heap_start, .)  
1000 -  
1001 -.eeprom 0x0000000000810000 0x0  
1002 - *(.eeprom*)  
1003 - 0x0000000000810000 __eeprom_end = .  
1004 -  
1005 -.fuse  
1006 - *(.fuse)  
1007 - *(.lfuse)  
1008 - *(.hfuse)  
1009 - *(.efuse)  
1010 -  
1011 -.lock  
1012 - *(.lock*)  
1013 -  
1014 -.signature  
1015 - *(.signature*)  
1016 -  
1017 -.user_signatures  
1018 - *(.user_signatures*)  
1019 -  
1020 -.stab  
1021 - *(.stab)  
1022 -  
1023 -.stabstr  
1024 - *(.stabstr)  
1025 -  
1026 -.stab.excl  
1027 - *(.stab.excl)  
1028 -  
1029 -.stab.exclstr  
1030 - *(.stab.exclstr)  
1031 -  
1032 -.stab.index  
1033 - *(.stab.index)  
1034 -  
1035 -.stab.indexstr  
1036 - *(.stab.indexstr)  
1037 -  
1038 -.comment 0x0000000000000000 0x11  
1039 - *(.comment)  
1040 - .comment 0x0000000000000000 0x11 obj/USB_gadget.o  
1041 - 0x12 (taille avant relaxe)  
1042 - .comment 0x0000000000000011 0x12 obj/Descriptors.o  
1043 - .comment 0x0000000000000011 0x12 obj/EndpointStream_AVR8.o  
1044 - .comment 0x0000000000000011 0x12 obj/Endpoint_AVR8.o  
1045 - .comment 0x0000000000000011 0x12 obj/USBController_AVR8.o  
1046 - .comment 0x0000000000000011 0x12 obj/USBInterrupt_AVR8.o  
1047 - .comment 0x0000000000000011 0x12 obj/DeviceStandardReq.o  
1048 - .comment 0x0000000000000011 0x12 obj/Events.o  
1049 - .comment 0x0000000000000011 0x12 obj/USBTask.o  
1050 - .comment 0x0000000000000011 0x12 obj/CDCClassDevice.o  
1051 -  
1052 -.note.gnu.avr.deviceinfo  
1053 - 0x0000000000000000 0x40  
1054 - .note.gnu.avr.deviceinfo  
1055 - 0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1056 -  
1057 -.note.gnu.build-id  
1058 - *(.note.gnu.build-id)  
1059 -  
1060 -.debug  
1061 - *(.debug)  
1062 -  
1063 -.line  
1064 - *(.line)  
1065 -  
1066 -.debug_srcinfo  
1067 - *(.debug_srcinfo)  
1068 -  
1069 -.debug_sfnames  
1070 - *(.debug_sfnames)  
1071 -  
1072 -.debug_aranges 0x0000000000000000 0x308  
1073 - *(.debug_aranges)  
1074 - .debug_aranges  
1075 - 0x0000000000000000 0x70 obj/USB_gadget.o  
1076 - .debug_aranges  
1077 - 0x0000000000000070 0x20 obj/Descriptors.o  
1078 - .debug_aranges  
1079 - 0x0000000000000090 0xc8 obj/EndpointStream_AVR8.o  
1080 - .debug_aranges  
1081 - 0x0000000000000158 0x40 obj/Endpoint_AVR8.o  
1082 - .debug_aranges  
1083 - 0x0000000000000198 0x30 obj/USBController_AVR8.o  
1084 - .debug_aranges  
1085 - 0x00000000000001c8 0x38 obj/USBInterrupt_AVR8.o  
1086 - .debug_aranges  
1087 - 0x0000000000000200 0x20 obj/DeviceStandardReq.o  
1088 - .debug_aranges  
1089 - 0x0000000000000220 0x20 obj/Events.o  
1090 - .debug_aranges  
1091 - 0x0000000000000240 0x20 obj/USBTask.o  
1092 - .debug_aranges  
1093 - 0x0000000000000260 0xa8 obj/CDCClassDevice.o  
1094 -  
1095 -.debug_pubnames  
1096 - *(.debug_pubnames)  
1097 -  
1098 -.debug_info 0x0000000000000000 0x5bcc  
1099 - *(.debug_info .gnu.linkonce.wi.*)  
1100 - .debug_info 0x0000000000000000 0xdeb obj/USB_gadget.o  
1101 - .debug_info 0x0000000000000deb 0x779 obj/Descriptors.o  
1102 - .debug_info 0x0000000000001564 0x17c4 obj/EndpointStream_AVR8.o  
1103 - .debug_info 0x0000000000002d28 0x602 obj/Endpoint_AVR8.o  
1104 - .debug_info 0x000000000000332a 0x458 obj/USBController_AVR8.o  
1105 - .debug_info 0x0000000000003782 0x6fa obj/USBInterrupt_AVR8.o  
1106 - .debug_info 0x0000000000003e7c 0xa66 obj/DeviceStandardReq.o  
1107 - .debug_info 0x00000000000048e2 0x78 obj/Events.o  
1108 - .debug_info 0x000000000000495a 0x254 obj/USBTask.o  
1109 - .debug_info 0x0000000000004bae 0x101e obj/CDCClassDevice.o  
1110 -  
1111 -.debug_abbrev 0x0000000000000000 0x158c  
1112 - *(.debug_abbrev)  
1113 - .debug_abbrev 0x0000000000000000 0x3dc obj/USB_gadget.o  
1114 - .debug_abbrev 0x00000000000003dc 0x136 obj/Descriptors.o  
1115 - .debug_abbrev 0x0000000000000512 0x1fd obj/EndpointStream_AVR8.o  
1116 - .debug_abbrev 0x000000000000070f 0x20c obj/Endpoint_AVR8.o  
1117 - .debug_abbrev 0x000000000000091b 0x18d obj/USBController_AVR8.o  
1118 - .debug_abbrev 0x0000000000000aa8 0x237 obj/USBInterrupt_AVR8.o  
1119 - .debug_abbrev 0x0000000000000cdf 0x2c2 obj/DeviceStandardReq.o  
1120 - .debug_abbrev 0x0000000000000fa1 0x44 obj/Events.o  
1121 - .debug_abbrev 0x0000000000000fe5 0x168 obj/USBTask.o  
1122 - .debug_abbrev 0x000000000000114d 0x43f obj/CDCClassDevice.o  
1123 -  
1124 -.debug_line 0x0000000000000000 0x36c6  
1125 - *(.debug_line .debug_line.* .debug_line_end)  
1126 - .debug_line 0x0000000000000000 0x7e9 obj/USB_gadget.o  
1127 - .debug_line 0x00000000000007e9 0x183 obj/Descriptors.o  
1128 - .debug_line 0x000000000000096c 0x13ad obj/EndpointStream_AVR8.o  
1129 - .debug_line 0x0000000000001d19 0x461 obj/Endpoint_AVR8.o  
1130 - .debug_line 0x000000000000217a 0x287 obj/USBController_AVR8.o  
1131 - .debug_line 0x0000000000002401 0x44f obj/USBInterrupt_AVR8.o  
1132 - .debug_line 0x0000000000002850 0x44d obj/DeviceStandardReq.o  
1133 - .debug_line 0x0000000000002c9d 0x4f obj/Events.o  
1134 - .debug_line 0x0000000000002cec 0x14b obj/USBTask.o  
1135 - .debug_line 0x0000000000002e37 0x88f obj/CDCClassDevice.o  
1136 -  
1137 -.debug_frame 0x0000000000000000 0x8cc  
1138 - *(.debug_frame)  
1139 - .debug_frame 0x0000000000000000 0x114 obj/USB_gadget.o  
1140 - .debug_frame 0x0000000000000114 0x24 obj/Descriptors.o  
1141 - .debug_frame 0x0000000000000138 0x3bc obj/EndpointStream_AVR8.o  
1142 - .debug_frame 0x00000000000004f4 0x84 obj/Endpoint_AVR8.o  
1143 - .debug_frame 0x0000000000000578 0x44 obj/USBController_AVR8.o  
1144 - .debug_frame 0x00000000000005bc 0xec obj/USBInterrupt_AVR8.o  
1145 - .debug_frame 0x00000000000006a8 0x3c obj/DeviceStandardReq.o  
1146 - .debug_frame 0x00000000000006e4 0x24 obj/Events.o  
1147 - .debug_frame 0x0000000000000708 0x2c obj/USBTask.o  
1148 - .debug_frame 0x0000000000000734 0x198 obj/CDCClassDevice.o  
1149 -  
1150 -.debug_str 0x0000000000000000 0x246c  
1151 - *(.debug_str)  
1152 - .debug_str 0x0000000000000000 0x92e obj/USB_gadget.o  
1153 - 0x9bb (taille avant relaxe)  
1154 - .debug_str 0x000000000000092e 0x918 obj/Descriptors.o  
1155 - 0xb51 (taille avant relaxe)  
1156 - .debug_str 0x0000000000001246 0x5cb obj/EndpointStream_AVR8.o  
1157 - 0x852 (taille avant relaxe)  
1158 - .debug_str 0x0000000000001811 0x1f7 obj/Endpoint_AVR8.o  
1159 - 0x612 (taille avant relaxe)  
1160 - .debug_str 0x0000000000001a08 0x261 obj/USBController_AVR8.o  
1161 - 0x528 (taille avant relaxe)  
1162 - .debug_str 0x0000000000001c69 0x12e obj/USBInterrupt_AVR8.o  
1163 - 0x57d (taille avant relaxe)  
1164 - .debug_str 0x0000000000001d97 0x3ab obj/DeviceStandardReq.o  
1165 - 0x9c4 (taille avant relaxe)  
1166 - .debug_str 0x0000000000002142 0x31 obj/Events.o  
1167 - 0x1a6 (taille avant relaxe)  
1168 - .debug_str 0x0000000000002173 0x3f obj/USBTask.o  
1169 - 0x377 (taille avant relaxe)  
1170 - .debug_str 0x00000000000021b2 0x2ba obj/CDCClassDevice.o  
1171 - 0xa64 (taille avant relaxe)  
1172 -  
1173 -.debug_loc 0x0000000000000000 0x3926  
1174 - *(.debug_loc)  
1175 - .debug_loc 0x0000000000000000 0x406 obj/USB_gadget.o  
1176 - .debug_loc 0x0000000000000406 0x186 obj/Descriptors.o  
1177 - .debug_loc 0x000000000000058c 0x1e78 obj/EndpointStream_AVR8.o  
1178 - .debug_loc 0x0000000000002404 0x3df obj/Endpoint_AVR8.o  
1179 - .debug_loc 0x00000000000027e3 0x33b obj/USBInterrupt_AVR8.o  
1180 - .debug_loc 0x0000000000002b1e 0x306 obj/DeviceStandardReq.o  
1181 - .debug_loc 0x0000000000002e24 0x49 obj/USBTask.o  
1182 - .debug_loc 0x0000000000002e6d 0xab9 obj/CDCClassDevice.o  
1183 -  
1184 -.debug_macinfo  
1185 - *(.debug_macinfo)  
1186 -  
1187 -.debug_weaknames  
1188 - *(.debug_weaknames)  
1189 -  
1190 -.debug_funcnames  
1191 - *(.debug_funcnames)  
1192 -  
1193 -.debug_typenames  
1194 - *(.debug_typenames)  
1195 -  
1196 -.debug_varnames  
1197 - *(.debug_varnames)  
1198 -  
1199 -.debug_pubtypes  
1200 - *(.debug_pubtypes)  
1201 -  
1202 -.debug_ranges 0x0000000000000000 0x420  
1203 - *(.debug_ranges)  
1204 - .debug_ranges 0x0000000000000000 0x60 obj/USB_gadget.o  
1205 - .debug_ranges 0x0000000000000060 0x10 obj/Descriptors.o  
1206 - .debug_ranges 0x0000000000000070 0x1f8 obj/EndpointStream_AVR8.o  
1207 - .debug_ranges 0x0000000000000268 0x78 obj/Endpoint_AVR8.o  
1208 - .debug_ranges 0x00000000000002e0 0x20 obj/USBController_AVR8.o  
1209 - .debug_ranges 0x0000000000000300 0x40 obj/USBInterrupt_AVR8.o  
1210 - .debug_ranges 0x0000000000000340 0x28 obj/DeviceStandardReq.o  
1211 - .debug_ranges 0x0000000000000368 0x10 obj/Events.o  
1212 - .debug_ranges 0x0000000000000378 0x10 obj/USBTask.o  
1213 - .debug_ranges 0x0000000000000388 0x98 obj/CDCClassDevice.o  
1214 -  
1215 -.debug_macro  
1216 - *(.debug_macro)  
1217 -OUTPUT(USB_gadget.elf elf32-avr)  
1218 -LOAD linker stubs  
1219 -  
1220 -Table de référence croisé  
1221 -  
1222 -Symbole Fichier  
1223 -Audio_Device_ConfigureEndpoints obj/AudioClassDevice.o  
1224 -Audio_Device_Event_Stub obj/AudioClassDevice.o  
1225 -Audio_Device_ProcessControlRequest obj/AudioClassDevice.o  
1226 -CALLBACK_Audio_Device_GetSetEndpointProperty obj/AudioClassDevice.o  
1227 -CALLBACK_Audio_Device_GetSetInterfaceProperty obj/AudioClassDevice.o  
1228 -CALLBACK_HIDParser_FilterHIDReportItem obj/HIDParser.o  
1229 -CALLBACK_HID_Device_CreateHIDReport obj/HIDClassDevice.o  
1230 -CALLBACK_HID_Device_ProcessHIDReport obj/HIDClassDevice.o  
1231 -CALLBACK_MS_Device_SCSICommandReceived obj/MassStorageClassDevice.o  
1232 -CALLBACK_USB_GetDescriptor obj/Descriptors.o  
1233 - obj/DeviceStandardReq.o  
1234 -CDC_Device_BytesReceived obj/CDCClassDevice.o  
1235 -CDC_Device_ConfigureEndpoints obj/CDCClassDevice.o  
1236 - obj/USB_gadget.o  
1237 -CDC_Device_CreateBlockingStream obj/CDCClassDevice.o  
1238 -CDC_Device_CreateStream obj/CDCClassDevice.o  
1239 -CDC_Device_Event_Stub obj/CDCClassDevice.o  
1240 -CDC_Device_Flush obj/CDCClassDevice.o  
1241 -CDC_Device_ProcessControlRequest obj/CDCClassDevice.o  
1242 - obj/USB_gadget.o  
1243 -CDC_Device_ReceiveByte obj/CDCClassDevice.o  
1244 - obj/USB_gadget.o  
1245 -CDC_Device_SendByte obj/CDCClassDevice.o  
1246 - obj/USB_gadget.o  
1247 -CDC_Device_SendControlLineStateChange obj/CDCClassDevice.o  
1248 -CDC_Device_SendData obj/CDCClassDevice.o  
1249 -CDC_Device_SendData_P obj/CDCClassDevice.o  
1250 -CDC_Device_SendString obj/CDCClassDevice.o  
1251 -CDC_Device_SendString_P obj/CDCClassDevice.o  
1252 -CDC_Device_USBTask obj/CDCClassDevice.o  
1253 - obj/USB_gadget.o  
1254 -ConfigurationDescriptor obj/Descriptors.o  
1255 -DeviceDescriptor obj/Descriptors.o  
1256 -EVENT_Audio_Device_StreamStartStop obj/AudioClassDevice.o  
1257 -EVENT_CDC_Device_BreakSent obj/CDCClassDevice.o  
1258 -EVENT_CDC_Device_ControLineStateChanged obj/CDCClassDevice.o  
1259 -EVENT_CDC_Device_LineEncodingChanged obj/USB_gadget.o  
1260 -EVENT_PRNT_Device_SoftReset obj/PrinterClassDevice.o  
1261 -EVENT_USB_Device_ConfigurationChanged obj/USB_gadget.o  
1262 - obj/DeviceStandardReq.o  
1263 -EVENT_USB_Device_Connect obj/USB_gadget.o  
1264 - obj/USBInterrupt_AVR8.o  
1265 -EVENT_USB_Device_ControlRequest obj/USB_gadget.o  
1266 - obj/DeviceStandardReq.o  
1267 -EVENT_USB_Device_Disconnect obj/USB_gadget.o  
1268 - obj/USBInterrupt_AVR8.o  
1269 -EVENT_USB_Device_Reset obj/Events.o  
1270 - obj/USBInterrupt_AVR8.o  
1271 -EVENT_USB_Device_StartOfFrame obj/Events.o  
1272 - obj/USBInterrupt_AVR8.o  
1273 -EVENT_USB_Device_Suspend obj/Events.o  
1274 -EVENT_USB_Device_WakeUp obj/Events.o  
1275 -Endpoint_ClearEndpoints obj/Endpoint_AVR8.o  
1276 -Endpoint_ClearStatusStage obj/Endpoint_AVR8.o  
1277 - obj/PrinterClassDevice.o  
1278 - obj/MassStorageClassDevice.o  
1279 - obj/HIDClassDevice.o  
1280 - obj/CDCClassDevice.o  
1281 - obj/AudioClassDevice.o  
1282 - obj/DeviceStandardReq.o  
1283 -Endpoint_ConfigureEndpointTable obj/Endpoint_AVR8.o  
1284 - obj/RNDISClassDevice.o  
1285 - obj/PrinterClassDevice.o  
1286 - obj/MIDIClassDevice.o  
1287 - obj/MassStorageClassDevice.o  
1288 - obj/HIDClassDevice.o  
1289 - obj/CDCClassDevice.o  
1290 - obj/AudioClassDevice.o  
1291 -Endpoint_ConfigureEndpoint_Prv obj/Endpoint_AVR8.o  
1292 - obj/USBInterrupt_AVR8.o  
1293 - obj/USBController_AVR8.o  
1294 -Endpoint_Discard_Stream obj/EndpointStream_AVR8.o  
1295 -Endpoint_Null_Stream obj/EndpointStream_AVR8.o  
1296 -Endpoint_Read_Control_EStream_BE obj/EndpointStream_AVR8.o  
1297 -Endpoint_Read_Control_EStream_LE obj/EndpointStream_AVR8.o  
1298 -Endpoint_Read_Control_Stream_BE obj/EndpointStream_AVR8.o  
1299 -Endpoint_Read_Control_Stream_LE obj/EndpointStream_AVR8.o  
1300 - obj/RNDISClassDevice.o  
1301 - obj/HIDClassDevice.o  
1302 - obj/AudioClassDevice.o  
1303 -Endpoint_Read_EStream_BE obj/EndpointStream_AVR8.o  
1304 -Endpoint_Read_EStream_LE obj/EndpointStream_AVR8.o  
1305 -Endpoint_Read_Stream_BE obj/EndpointStream_AVR8.o  
1306 -Endpoint_Read_Stream_LE obj/EndpointStream_AVR8.o  
1307 - obj/RNDISClassDevice.o  
1308 - obj/MIDIClassDevice.o  
1309 - obj/MassStorageClassDevice.o  
1310 -Endpoint_WaitUntilReady obj/Endpoint_AVR8.o  
1311 - obj/RNDISClassDevice.o  
1312 - obj/PrinterClassDevice.o  
1313 - obj/MIDIClassDevice.o  
1314 - obj/CDCClassDevice.o  
1315 - obj/EndpointStream_AVR8.o  
1316 -Endpoint_Write_Control_EStream_BE obj/EndpointStream_AVR8.o  
1317 -Endpoint_Write_Control_EStream_LE obj/EndpointStream_AVR8.o  
1318 -Endpoint_Write_Control_PStream_BE obj/EndpointStream_AVR8.o  
1319 -Endpoint_Write_Control_PStream_LE obj/EndpointStream_AVR8.o  
1320 - obj/DeviceStandardReq.o  
1321 -Endpoint_Write_Control_Stream_BE obj/EndpointStream_AVR8.o  
1322 -Endpoint_Write_Control_Stream_LE obj/EndpointStream_AVR8.o  
1323 - obj/RNDISClassDevice.o  
1324 - obj/PrinterClassDevice.o  
1325 - obj/HIDClassDevice.o  
1326 - obj/AudioClassDevice.o  
1327 - obj/DeviceStandardReq.o  
1328 -Endpoint_Write_EStream_BE obj/EndpointStream_AVR8.o  
1329 -Endpoint_Write_EStream_LE obj/EndpointStream_AVR8.o  
1330 -Endpoint_Write_PStream_BE obj/EndpointStream_AVR8.o  
1331 -Endpoint_Write_PStream_LE obj/EndpointStream_AVR8.o  
1332 - obj/CDCClassDevice.o  
1333 -Endpoint_Write_Stream_BE obj/EndpointStream_AVR8.o  
1334 -Endpoint_Write_Stream_LE obj/EndpointStream_AVR8.o  
1335 - obj/RNDISClassDevice.o  
1336 - obj/PrinterClassDevice.o  
1337 - obj/MIDIClassDevice.o  
1338 - obj/MassStorageClassDevice.o  
1339 - obj/HIDClassDevice.o  
1340 - obj/CDCClassDevice.o  
1341 -HID_Device_ConfigureEndpoints obj/HIDClassDevice.o  
1342 -HID_Device_ProcessControlRequest obj/HIDClassDevice.o  
1343 -HID_Device_USBTask obj/HIDClassDevice.o  
1344 -LanguageString obj/Descriptors.o  
1345 -MIDI_Device_ConfigureEndpoints obj/MIDIClassDevice.o  
1346 -MIDI_Device_Flush obj/MIDIClassDevice.o  
1347 -MIDI_Device_ReceiveEventPacket obj/MIDIClassDevice.o  
1348 -MIDI_Device_SendEventPacket obj/MIDIClassDevice.o  
1349 -MIDI_Device_USBTask obj/MIDIClassDevice.o  
1350 -MS_Device_ConfigureEndpoints obj/MassStorageClassDevice.o  
1351 -MS_Device_ProcessControlRequest obj/MassStorageClassDevice.o  
1352 -MS_Device_USBTask obj/MassStorageClassDevice.o  
1353 -ManufacturerString obj/Descriptors.o  
1354 -PRNT_Device_BytesReceived obj/PrinterClassDevice.o  
1355 -PRNT_Device_ConfigureEndpoints obj/PrinterClassDevice.o  
1356 -PRNT_Device_CreateBlockingStream obj/PrinterClassDevice.o  
1357 -PRNT_Device_CreateStream obj/PrinterClassDevice.o  
1358 -PRNT_Device_Event_Stub obj/PrinterClassDevice.o  
1359 -PRNT_Device_Flush obj/PrinterClassDevice.o  
1360 -PRNT_Device_ProcessControlRequest obj/PrinterClassDevice.o  
1361 -PRNT_Device_ReceiveByte obj/PrinterClassDevice.o  
1362 -PRNT_Device_SendByte obj/PrinterClassDevice.o  
1363 -PRNT_Device_SendData obj/PrinterClassDevice.o  
1364 -PRNT_Device_SendString obj/PrinterClassDevice.o  
1365 -PRNT_Device_USBTask obj/PrinterClassDevice.o  
1366 -ProductString obj/Descriptors.o  
1367 -RNDIS_Device_ConfigureEndpoints obj/RNDISClassDevice.o  
1368 -RNDIS_Device_IsPacketReceived obj/RNDISClassDevice.o  
1369 -RNDIS_Device_ProcessControlRequest obj/RNDISClassDevice.o  
1370 -RNDIS_Device_ReadPacket obj/RNDISClassDevice.o  
1371 -RNDIS_Device_SendPacket obj/RNDISClassDevice.o  
1372 -RNDIS_Device_USBTask obj/RNDISClassDevice.o  
1373 -SetupHardware obj/USB_gadget.o  
1374 -USB_ControlRequest obj/USBTask.o  
1375 - obj/RNDISClassDevice.o  
1376 - obj/PrinterClassDevice.o  
1377 - obj/MassStorageClassDevice.o  
1378 - obj/HIDClassDevice.o  
1379 - obj/CDCClassDevice.o  
1380 - obj/AudioClassDevice.o  
1381 - obj/DeviceStandardReq.o  
1382 - obj/Endpoint_AVR8.o  
1383 - obj/EndpointStream_AVR8.o  
1384 -USB_Device_ConfigurationNumber obj/DeviceStandardReq.o  
1385 - obj/USBInterrupt_AVR8.o  
1386 - obj/USBController_AVR8.o  
1387 -USB_Device_CurrentlySelfPowered obj/DeviceStandardReq.o  
1388 - obj/USBController_AVR8.o  
1389 -USB_Device_ProcessControlRequest obj/DeviceStandardReq.o  
1390 - obj/USBTask.o  
1391 - obj/USBInterrupt_AVR8.o  
1392 -USB_Device_RemoteWakeupEnabled obj/DeviceStandardReq.o  
1393 - obj/USBController_AVR8.o  
1394 -USB_Device_SendRemoteWakeup obj/Device_AVR8.o  
1395 -USB_Disable obj/USBController_AVR8.o  
1396 -USB_Event_Stub obj/Events.o  
1397 -USB_GetHIDReportItemInfo obj/HIDParser.o  
1398 -USB_GetHIDReportSize obj/HIDParser.o  
1399 -USB_GetNextDescriptorComp obj/ConfigDescriptors.o  
1400 -USB_GetNextDescriptorOfType obj/ConfigDescriptors.o  
1401 -USB_GetNextDescriptorOfTypeAfter obj/ConfigDescriptors.o  
1402 -USB_GetNextDescriptorOfTypeBefore obj/ConfigDescriptors.o  
1403 -USB_INT_ClearAllInterrupts obj/USBInterrupt_AVR8.o  
1404 - obj/USBController_AVR8.o  
1405 -USB_INT_DisableAllInterrupts obj/USBInterrupt_AVR8.o  
1406 - obj/USBController_AVR8.o  
1407 -USB_Init obj/USBController_AVR8.o  
1408 - obj/USB_gadget.o  
1409 -USB_IsInitialized obj/USBTask.o  
1410 - obj/USBController_AVR8.o  
1411 -USB_ProcessHIDReport obj/HIDParser.o  
1412 -USB_ResetInterface obj/USBController_AVR8.o  
1413 -USB_SetHIDReportItemInfo obj/HIDParser.o  
1414 -USB_USBTask obj/USBTask.o  
1415 - obj/PrinterClassDevice.o  
1416 - obj/CDCClassDevice.o  
1417 - obj/USB_gadget.o  
1418 -VirtualSerial_CDC_Interface obj/USB_gadget.o  
1419 -__bad_interrupt /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1420 -__bss_end /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
1421 -__bss_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
1422 -__data_end /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
1423 -__data_load_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
1424 -__data_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
1425 -__do_clear_bss /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o)  
1426 - obj/USBTask.o  
1427 - obj/DeviceStandardReq.o  
1428 - obj/USB_gadget.o  
1429 -__do_copy_data /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o)  
1430 - obj/RNDISClassDevice.o  
1431 - obj/CDCClassDevice.o  
1432 - obj/USB_gadget.o  
1433 -__heap_end /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1434 -__init /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1435 -__mulhi3 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o)  
1436 - obj/HIDParser.o  
1437 -__stack /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1438 -__strlen_P /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o)  
1439 - obj/CDCClassDevice.o  
1440 -__udivmodsi4 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o)  
1441 - obj/USB_gadget.o  
1442 -__vector_1 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1443 -__vector_10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1444 -__vector_11 obj/USBInterrupt_AVR8.o  
1445 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1446 -__vector_12 obj/USBInterrupt_AVR8.o  
1447 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1448 -__vector_13 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1449 -__vector_14 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1450 -__vector_15 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1451 -__vector_16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1452 -__vector_17 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1453 -__vector_18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1454 -__vector_19 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1455 -__vector_2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1456 -__vector_20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1457 -__vector_21 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1458 -__vector_22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1459 -__vector_23 obj/USB_gadget.o  
1460 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1461 -__vector_24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1462 -__vector_25 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1463 -__vector_26 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1464 -__vector_27 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1465 -__vector_28 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1466 -__vector_3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1467 -__vector_4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1468 -__vector_5 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1469 -__vector_6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1470 -__vector_7 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1471 -__vector_8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1472 -__vector_9 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1473 -__vector_default /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1474 -__vectors /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1475 -_exit /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
1476 -eeprom_read_byte /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o)  
1477 - obj/EndpointStream_AVR8.o  
1478 -eeprom_update_byte /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
1479 - obj/EndpointStream_AVR8.o  
1480 -eeprom_update_r18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o)  
1481 -exit /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o)  
1482 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1483 -main obj/USB_gadget.o  
1484 - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o  
1485 -memcmp /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o)  
1486 - obj/HIDClassDevice.o  
1487 -memcpy /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o)  
1488 - obj/RNDISClassDevice.o  
1489 - obj/HIDClassDevice.o  
1490 -memcpy_P /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o)  
1491 - obj/RNDISClassDevice.o  
1492 -memset /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o)  
1493 - obj/HIDClassDevice.o  
gadget/USB_gadget.sym deleted
@@ -1,168 +0,0 @@ @@ -1,168 +0,0 @@
1 - U CALLBACK_Audio_Device_GetSetEndpointProperty  
2 - U CALLBACK_Audio_Device_GetSetInterfaceProperty  
3 - U CALLBACK_HID_Device_CreateHIDReport  
4 - U CALLBACK_HID_Device_ProcessHIDReport  
5 - U CALLBACK_HIDParser_FilterHIDReportItem  
6 - U CALLBACK_MS_Device_SCSICommandReceived  
7 -00000000 W __heap_end  
8 -00000000 a __tmp_reg__  
9 -00000000 a __tmp_reg__  
10 -00000000 a __tmp_reg__  
11 -00000000 a __tmp_reg__  
12 -00000000 a __tmp_reg__  
13 -00000000 a __tmp_reg__  
14 -00000000 a __tmp_reg__  
15 -00000000 a __tmp_reg__  
16 -00000000 a __tmp_reg__  
17 -00000000 a __tmp_reg__  
18 -00000000 W __vector_default  
19 -00000000 T __vectors  
20 -00000001 a __zero_reg__  
21 -00000001 a __zero_reg__  
22 -00000001 a __zero_reg__  
23 -00000001 a __zero_reg__  
24 -00000001 a __zero_reg__  
25 -00000001 a __zero_reg__  
26 -00000001 a __zero_reg__  
27 -00000001 a __zero_reg__  
28 -00000001 a __zero_reg__  
29 -00000001 a __zero_reg__  
30 -0000003d a __SP_L__  
31 -0000003d a __SP_L__  
32 -0000003d a __SP_L__  
33 -0000003d a __SP_L__  
34 -0000003d a __SP_L__  
35 -0000003d a __SP_L__  
36 -0000003d a __SP_L__  
37 -0000003d a __SP_L__  
38 -0000003d a __SP_L__  
39 -0000003d a __SP_L__  
40 -0000003e a __SP_H__  
41 -0000003e a __SP_H__  
42 -0000003e a __SP_H__  
43 -0000003e a __SP_H__  
44 -0000003e a __SP_H__  
45 -0000003e a __SP_H__  
46 -0000003e a __SP_H__  
47 -0000003e a __SP_H__  
48 -0000003e a __SP_H__  
49 -0000003e a __SP_H__  
50 -0000003f a __SREG__  
51 -0000003f a __SREG__  
52 -0000003f a __SREG__  
53 -0000003f a __SREG__  
54 -0000003f a __SREG__  
55 -0000003f a __SREG__  
56 -0000003f a __SREG__  
57 -0000003f a __SREG__  
58 -0000003f a __SREG__  
59 -0000003f a __SREG__  
60 -00000074 T ProductString  
61 -00000074 T __trampolines_end  
62 -00000074 T __trampolines_start  
63 -000000a4 T ManufacturerString  
64 -000000be T LanguageString  
65 -000000c2 T ConfigurationDescriptor  
66 -00000100 T DeviceDescriptor  
67 -00000112 T __ctors_end  
68 -00000112 T __ctors_start  
69 -00000112 T __dtors_end  
70 -00000112 T __dtors_start  
71 -00000112 W __init  
72 -0000011e T __do_copy_data  
73 -00000134 T __do_clear_bss  
74 -0000013c t .do_clear_bss_loop  
75 -0000013e t .do_clear_bss_start  
76 -00000148 T __bad_interrupt  
77 -00000148 W __vector_1  
78 -00000148 W __vector_10  
79 -00000148 W __vector_13  
80 -00000148 W __vector_14  
81 -00000148 W __vector_15  
82 -00000148 W __vector_16  
83 -00000148 W __vector_17  
84 -00000148 W __vector_18  
85 -00000148 W __vector_19  
86 -00000148 W __vector_2  
87 -00000148 W __vector_20  
88 -00000148 W __vector_21  
89 -00000148 W __vector_22  
90 -00000148 W __vector_24  
91 -00000148 W __vector_25  
92 -00000148 W __vector_26  
93 -00000148 W __vector_27  
94 -00000148 W __vector_28  
95 -00000148 W __vector_3  
96 -00000148 W __vector_4  
97 -00000148 W __vector_5  
98 -00000148 W __vector_6  
99 -00000148 W __vector_7  
100 -00000148 W __vector_8  
101 -00000148 W __vector_9  
102 -0000014a t LEDs_SetAllLEDs  
103 -00000156 t RingBuffer_Insert  
104 -0000018c t RingBuffer_Remove  
105 -000001be T SetupHardware  
106 -000001fa T main  
107 -000002ff W __stack  
108 -00000312 T EVENT_USB_Device_Connect  
109 -00000316 T EVENT_USB_Device_Disconnect  
110 -0000031a T EVENT_USB_Device_ConfigurationChanged  
111 -0000032c T EVENT_USB_Device_ControlRequest  
112 -00000332 T __vector_23  
113 -000003a2 T EVENT_CDC_Device_LineEncodingChanged  
114 -0000042c T CALLBACK_USB_GetDescriptor  
115 -00000490 T Endpoint_Write_Control_Stream_LE  
116 -00000548 T Endpoint_Write_Control_PStream_LE  
117 -000005fc T Endpoint_ConfigureEndpoint_Prv  
118 -00000666 T Endpoint_ConfigureEndpointTable  
119 -000006f8 T Endpoint_ClearStatusStage  
120 -00000732 T Endpoint_WaitUntilReady  
121 -00000794 T USB_ResetInterface  
122 -00000802 T USB_Init  
123 -00000814 T USB_INT_DisableAllInterrupts  
124 -0000081a T USB_INT_ClearAllInterrupts  
125 -00000820 T __vector_11  
126 -0000096a T __vector_12  
127 -000009f0 T USB_Device_ProcessControlRequest  
128 -00000ca2 W EVENT_USB_Device_Reset  
129 -00000ca2 W EVENT_USB_Device_StartOfFrame  
130 -00000ca2 W EVENT_USB_Device_Suspend  
131 -00000ca2 W EVENT_USB_Device_WakeUp  
132 -00000ca2 T USB_Event_Stub  
133 -00000ca4 T USB_USBTask  
134 -00000cd6 T CDC_Device_ConfigureEndpoints  
135 -00000d20 T CDC_Device_SendByte  
136 -00000d74 T CDC_Device_Flush  
137 -00000dc6 T CDC_Device_USBTask  
138 -00000df0 T CDC_Device_ReceiveByte  
139 -00000e48 T CDC_Device_Event_Stub  
140 -00000e48 W EVENT_CDC_Device_BreakSent  
141 -00000e48 W EVENT_CDC_Device_ControLineStateChanged  
142 -00000e4a T CDC_Device_ProcessControlRequest  
143 -00000fa8 T __udivmodsi4  
144 -00000fb4 t __udivmodsi4_loop  
145 -00000fce t __udivmodsi4_ep  
146 -00000fec W exit  
147 -00000fec T _exit  
148 -00000fee t __stop_program  
149 -00000ff0 A __data_load_start  
150 -00000ff0 T _etext  
151 -0000100c A __data_load_end  
152 -00800100 D __data_start  
153 -00800100 D VirtualSerial_CDC_Interface  
154 -0080011c B __bss_start  
155 -0080011c D __data_end  
156 -0080011c D _edata  
157 -0080011c b USARTtoUSB_Buffer_Data  
158 -0080019c b USARTtoUSB_Buffer  
159 -008001a8 b USBtoUSART_Buffer_Data  
160 -00800228 b USBtoUSART_Buffer  
161 -00800234 B USB_Device_ConfigurationNumber  
162 -00800235 B USB_Device_CurrentlySelfPowered  
163 -00800236 B USB_Device_RemoteWakeupEnabled  
164 -00800237 B USB_IsInitialized  
165 -00800238 B USB_ControlRequest  
166 -00800240 B __bss_end  
167 -00800240 N _end  
168 -00810000 N __eeprom_end  
lufa/Config/LUFAConfig.h deleted
@@ -1,93 +0,0 @@ @@ -1,93 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - * \brief LUFA Library Configuration Header File  
33 - *  
34 - * This header file is used to configure LUFA's compile time options,  
35 - * as an alternative to the compile time constants supplied through  
36 - * a makefile.  
37 - *  
38 - * For information on what each token does, refer to the LUFA  
39 - * manual section "Summary of Compile Tokens".  
40 - */  
41 -  
42 -#ifndef _LUFA_CONFIG_H_  
43 -#define _LUFA_CONFIG_H_  
44 -  
45 - #if (ARCH == ARCH_AVR8)  
46 -  
47 - /* Non-USB Related Configuration Tokens: */  
48 -// #define DISABLE_TERMINAL_CODES  
49 -  
50 - /* USB Class Driver Related Tokens: */  
51 -// #define HID_HOST_BOOT_PROTOCOL_ONLY  
52 -// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}  
53 -// #define HID_USAGE_STACK_DEPTH {Insert Value Here}  
54 -// #define HID_MAX_COLLECTIONS {Insert Value Here}  
55 -// #define HID_MAX_REPORTITEMS {Insert Value Here}  
56 -// #define HID_MAX_REPORT_IDS {Insert Value Here}  
57 -// #define NO_CLASS_DRIVER_AUTOFLUSH  
58 -  
59 - /* General USB Driver Related Tokens: */  
60 -// #define ORDERED_EP_CONFIG  
61 - #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)  
62 - #define USB_DEVICE_ONLY  
63 -// #define USB_HOST_ONLY  
64 -// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}  
65 -// #define NO_LIMITED_CONTROLLER_CONNECT  
66 -// #define NO_SOF_EVENTS  
67 -  
68 - /* USB Device Mode Driver Related Tokens: */  
69 -// #define USE_RAM_DESCRIPTORS  
70 - #define USE_FLASH_DESCRIPTORS  
71 -// #define USE_EEPROM_DESCRIPTORS  
72 -// #define NO_INTERNAL_SERIAL  
73 - #define FIXED_CONTROL_ENDPOINT_SIZE 8  
74 - #define DEVICE_STATE_AS_GPIOR 0  
75 - #define FIXED_NUM_CONFIGURATIONS 1  
76 -// #define CONTROL_ONLY_DEVICE  
77 - #define INTERRUPT_CONTROL_ENDPOINT  
78 -// #define NO_DEVICE_REMOTE_WAKEUP  
79 -// #define NO_DEVICE_SELF_POWER  
80 -  
81 - /* USB Host Mode Driver Related Tokens: */  
82 -// #define HOST_STATE_AS_GPIOR 0  
83 -// #define USB_HOST_TIMEOUT_MS {Insert Value Here}  
84 -// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}  
85 -// #define NO_AUTO_VBUS_MANAGEMENT  
86 -// #define INVERTED_VBUS_ENABLE_LINE  
87 -  
88 - #else  
89 -  
90 - #error Unsupported architecture for this LUFA configuration file.  
91 -  
92 - #endif  
93 -#endif  
lufa/Descriptors.c deleted
@@ -1,245 +0,0 @@ @@ -1,245 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special  
34 - * computer-readable structures which the host requests upon device enumeration, to determine  
35 - * the device's capabilities and functions.  
36 - */  
37 -  
38 -#include "Descriptors.h"  
39 -  
40 -  
41 -/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall  
42 - * device characteristics, including the supported USB version, control endpoint size and the  
43 - * number of device configurations. The descriptor is read out by the USB host when the enumeration  
44 - * process begins.  
45 - */  
46 -const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =  
47 -{  
48 - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},  
49 -  
50 - .USBSpecification = VERSION_BCD(1,1,0),  
51 - .Class = CDC_CSCP_CDCClass,  
52 - .SubClass = CDC_CSCP_NoSpecificSubclass,  
53 - .Protocol = CDC_CSCP_NoSpecificProtocol,  
54 -  
55 - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,  
56 -  
57 - .VendorID = 0x03EB,  
58 - .ProductID = 0x204B,  
59 - .ReleaseNumber = VERSION_BCD(0,0,1),  
60 -  
61 - .ManufacturerStrIndex = STRING_ID_Manufacturer,  
62 - .ProductStrIndex = STRING_ID_Product,  
63 - .SerialNumStrIndex = USE_INTERNAL_SERIAL,  
64 -  
65 - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS  
66 -};  
67 -  
68 -/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage  
69 - * of the device in one of its supported configurations, including information about any device interfaces  
70 - * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting  
71 - * a configuration so that the host may correctly communicate with the USB device.  
72 - */  
73 -const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =  
74 -{  
75 - .Config =  
76 - {  
77 - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},  
78 -  
79 - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),  
80 - .TotalInterfaces = 2,  
81 -  
82 - .ConfigurationNumber = 1,  
83 - .ConfigurationStrIndex = NO_DESCRIPTOR,  
84 -  
85 - .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),  
86 -  
87 - .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)  
88 - },  
89 -  
90 - .CDC_CCI_Interface =  
91 - {  
92 - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},  
93 -  
94 - .InterfaceNumber = INTERFACE_ID_CDC_CCI,  
95 - .AlternateSetting = 0,  
96 -  
97 - .TotalEndpoints = 1,  
98 -  
99 - .Class = CDC_CSCP_CDCClass,  
100 - .SubClass = CDC_CSCP_ACMSubclass,  
101 - .Protocol = CDC_CSCP_ATCommandProtocol,  
102 -  
103 - .InterfaceStrIndex = NO_DESCRIPTOR  
104 - },  
105 -  
106 - .CDC_Functional_Header =  
107 - {  
108 - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},  
109 - .Subtype = CDC_DSUBTYPE_CSInterface_Header,  
110 -  
111 - .CDCSpecification = VERSION_BCD(1,1,0),  
112 - },  
113 -  
114 - .CDC_Functional_ACM =  
115 - {  
116 - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},  
117 - .Subtype = CDC_DSUBTYPE_CSInterface_ACM,  
118 -  
119 - .Capabilities = 0x06,  
120 - },  
121 -  
122 - .CDC_Functional_Union =  
123 - {  
124 - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},  
125 - .Subtype = CDC_DSUBTYPE_CSInterface_Union,  
126 -  
127 - .MasterInterfaceNumber = INTERFACE_ID_CDC_CCI,  
128 - .SlaveInterfaceNumber = INTERFACE_ID_CDC_DCI,  
129 - },  
130 -  
131 - .CDC_NotificationEndpoint =  
132 - {  
133 - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},  
134 -  
135 - .EndpointAddress = CDC_NOTIFICATION_EPADDR,  
136 - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),  
137 - .EndpointSize = CDC_NOTIFICATION_EPSIZE,  
138 - .PollingIntervalMS = 0xFF  
139 - },  
140 -  
141 - .CDC_DCI_Interface =  
142 - {  
143 - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},  
144 -  
145 - .InterfaceNumber = INTERFACE_ID_CDC_DCI,  
146 - .AlternateSetting = 0,  
147 -  
148 - .TotalEndpoints = 2,  
149 -  
150 - .Class = CDC_CSCP_CDCDataClass,  
151 - .SubClass = CDC_CSCP_NoDataSubclass,  
152 - .Protocol = CDC_CSCP_NoDataProtocol,  
153 -  
154 - .InterfaceStrIndex = NO_DESCRIPTOR  
155 - },  
156 -  
157 - .CDC_DataOutEndpoint =  
158 - {  
159 - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},  
160 -  
161 - .EndpointAddress = CDC_RX_EPADDR,  
162 - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),  
163 - .EndpointSize = CDC_TXRX_EPSIZE,  
164 - .PollingIntervalMS = 0x05  
165 - },  
166 -  
167 - .CDC_DataInEndpoint =  
168 - {  
169 - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},  
170 -  
171 - .EndpointAddress = CDC_TX_EPADDR,  
172 - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),  
173 - .EndpointSize = CDC_TXRX_EPSIZE,  
174 - .PollingIntervalMS = 0x05  
175 - }  
176 -};  
177 -  
178 -/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests  
179 - * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate  
180 - * via the language ID table available at USB.org what languages the device supports for its string descriptors.  
181 - */  
182 -const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG);  
183 -  
184 -/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable  
185 - * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device  
186 - * Descriptor.  
187 - */  
188 -const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera");  
189 -  
190 -/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,  
191 - * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device  
192 - * Descriptor.  
193 - */  
194 -const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA USB-RS232 Adapter");  
195 -  
196 -/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"  
197 - * documentation) by the application code so that the address and size of a requested descriptor can be given  
198 - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function  
199 - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the  
200 - * USB host.  
201 - */  
202 -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,  
203 - const uint16_t wIndex,  
204 - const void** const DescriptorAddress)  
205 -{  
206 - const uint8_t DescriptorType = (wValue >> 8);  
207 - const uint8_t DescriptorNumber = (wValue & 0xFF);  
208 -  
209 - const void* Address = NULL;  
210 - uint16_t Size = NO_DESCRIPTOR;  
211 -  
212 - switch (DescriptorType)  
213 - {  
214 - case DTYPE_Device:  
215 - Address = &DeviceDescriptor;  
216 - Size = sizeof(USB_Descriptor_Device_t);  
217 - break;  
218 - case DTYPE_Configuration:  
219 - Address = &ConfigurationDescriptor;  
220 - Size = sizeof(USB_Descriptor_Configuration_t);  
221 - break;  
222 - case DTYPE_String:  
223 - switch (DescriptorNumber)  
224 - {  
225 - case STRING_ID_Language:  
226 - Address = &LanguageString;  
227 - Size = pgm_read_byte(&LanguageString.Header.Size);  
228 - break;  
229 - case STRING_ID_Manufacturer:  
230 - Address = &ManufacturerString;  
231 - Size = pgm_read_byte(&ManufacturerString.Header.Size);  
232 - break;  
233 - case STRING_ID_Product:  
234 - Address = &ProductString;  
235 - Size = pgm_read_byte(&ProductString.Header.Size);  
236 - break;  
237 - }  
238 -  
239 - break;  
240 - }  
241 -  
242 - *DescriptorAddress = Address;  
243 - return Size;  
244 -}  
245 -  
lufa/Descriptors.h deleted
@@ -1,110 +0,0 @@ @@ -1,110 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * Header file for Descriptors.c.  
34 - */  
35 -  
36 -#ifndef _DESCRIPTORS_H_  
37 -#define _DESCRIPTORS_H_  
38 -  
39 - /* Includes: */  
40 - #include <avr/pgmspace.h>  
41 -  
42 - #include <LUFA/Drivers/USB/USB.h>  
43 -  
44 - /* Macros: */  
45 - /** Endpoint address of the CDC device-to-host notification IN endpoint. */  
46 - #define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 2)  
47 -  
48 - /** Endpoint address of the CDC device-to-host data IN endpoint. */  
49 - #define CDC_TX_EPADDR (ENDPOINT_DIR_IN | 3)  
50 -  
51 - /** Endpoint address of the CDC host-to-device data OUT endpoint. */  
52 - #define CDC_RX_EPADDR (ENDPOINT_DIR_OUT | 4)  
53 -  
54 - /** Size in bytes of the CDC device-to-host notification IN endpoint. */  
55 - #define CDC_NOTIFICATION_EPSIZE 8  
56 -  
57 - /** Size in bytes of the CDC data IN and OUT endpoints. */  
58 - #define CDC_TXRX_EPSIZE 16  
59 -  
60 - /* Type Defines: */  
61 - /** Type define for the device configuration descriptor structure. This must be defined in the  
62 - * application code, as the configuration descriptor contains several sub-descriptors which  
63 - * vary between devices, and which describe the device's usage to the host.  
64 - */  
65 - typedef struct  
66 - {  
67 - USB_Descriptor_Configuration_Header_t Config;  
68 -  
69 - // CDC Command Interface  
70 - USB_Descriptor_Interface_t CDC_CCI_Interface;  
71 - USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;  
72 - USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;  
73 - USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;  
74 - USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;  
75 -  
76 - // CDC Data Interface  
77 - USB_Descriptor_Interface_t CDC_DCI_Interface;  
78 - USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;  
79 - USB_Descriptor_Endpoint_t CDC_DataInEndpoint;  
80 - } USB_Descriptor_Configuration_t;  
81 -  
82 - /** Enum for the device interface descriptor IDs within the device. Each interface descriptor  
83 - * should have a unique ID index associated with it, which can be used to refer to the  
84 - * interface from other descriptors.  
85 - */  
86 - enum InterfaceDescriptors_t  
87 - {  
88 - INTERFACE_ID_CDC_CCI = 0, /**< CDC CCI interface descriptor ID */  
89 - INTERFACE_ID_CDC_DCI = 1, /**< CDC DCI interface descriptor ID */  
90 - };  
91 -  
92 - /** Enum for the device string descriptor IDs within the device. Each string descriptor should  
93 - * have a unique ID index associated with it, which can be used to refer to the string from  
94 - * other descriptors.  
95 - */  
96 - enum StringDescriptors_t  
97 - {  
98 - STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */  
99 - STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */  
100 - STRING_ID_Product = 2, /**< Product string ID */  
101 - };  
102 -  
103 - /* Function Prototypes: */  
104 - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,  
105 - const uint16_t wIndex,  
106 - const void** const DescriptorAddress)  
107 - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);  
108 -  
109 -#endif  
110 -  
lufa/LUFA USBtoSerial.inf deleted
@@ -1,66 +0,0 @@ @@ -1,66 +0,0 @@
1 -;************************************************************  
2 -; Windows USB CDC ACM Setup File  
3 -; Copyright (c) 2000 Microsoft Corporation  
4 -;************************************************************  
5 -  
6 -[DefaultInstall]  
7 -CopyINF="LUFA USBtoSerial.inf"  
8 -  
9 -[Version]  
10 -Signature="$Windows NT$"  
11 -Class=Ports  
12 -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}  
13 -Provider=%MFGNAME%  
14 -DriverVer=7/1/2012,10.0.0.0  
15 -  
16 -[Manufacturer]  
17 -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64  
18 -  
19 -[SourceDisksNames]  
20 -  
21 -[SourceDisksFiles]  
22 -  
23 -[DestinationDirs]  
24 -DefaultDestDir=12  
25 -  
26 -[DriverInstall]  
27 -Include=mdmcpq.inf  
28 -CopyFiles=FakeModemCopyFileSection  
29 -AddReg=DriverInstall.AddReg  
30 -  
31 -[DriverInstall.Services]  
32 -Include=mdmcpq.inf  
33 -AddService=usbser, 0x00000002, LowerFilter_Service_Inst  
34 -  
35 -[DriverInstall.AddReg]  
36 -HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider"  
37 -  
38 -;------------------------------------------------------------------------------  
39 -; Vendor and Product ID Definitions  
40 -;------------------------------------------------------------------------------  
41 -; When developing your USB device, the VID and PID used in the PC side  
42 -; application program and the firmware on the microcontroller must match.  
43 -; Modify the below line to use your VID and PID. Use the format as shown below.  
44 -; Note: One INF file can be used for multiple devices with different VID and PIDs.  
45 -; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.  
46 -;------------------------------------------------------------------------------  
47 -[DeviceList]  
48 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B  
49 -  
50 -[DeviceList.NTx86]  
51 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B  
52 -  
53 -[DeviceList.NTamd64]  
54 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B  
55 -  
56 -[DeviceList.NTia64]  
57 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B  
58 -  
59 -;------------------------------------------------------------------------------  
60 -; String Definitions  
61 -;------------------------------------------------------------------------------  
62 -;Modify these strings to customize your device  
63 -;------------------------------------------------------------------------------  
64 -[Strings]  
65 -MFGNAME="http://www.lufa-lib.org"  
66 -DESCRIPTION="LUFA USB to Serial"  
67 \ No newline at end of file 0 \ No newline at end of file
lufa/LUFA VirtualSerial.inf deleted
@@ -1,66 +0,0 @@ @@ -1,66 +0,0 @@
1 -;************************************************************  
2 -; Windows USB CDC ACM Setup File  
3 -; Copyright (c) 2000 Microsoft Corporation  
4 -;************************************************************  
5 -  
6 -[DefaultInstall]  
7 -CopyINF="LUFA VirtualSerial.inf"  
8 -  
9 -[Version]  
10 -Signature="$Windows NT$"  
11 -Class=Ports  
12 -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}  
13 -Provider=%MFGNAME%  
14 -DriverVer=7/1/2012,10.0.0.0  
15 -  
16 -[Manufacturer]  
17 -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64  
18 -  
19 -[SourceDisksNames]  
20 -  
21 -[SourceDisksFiles]  
22 -  
23 -[DestinationDirs]  
24 -DefaultDestDir=12  
25 -  
26 -[DriverInstall]  
27 -Include=mdmcpq.inf  
28 -CopyFiles=FakeModemCopyFileSection  
29 -AddReg=DriverInstall.AddReg  
30 -  
31 -[DriverInstall.Services]  
32 -Include=mdmcpq.inf  
33 -AddService=usbser, 0x00000002, LowerFilter_Service_Inst  
34 -  
35 -[DriverInstall.AddReg]  
36 -HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider"  
37 -  
38 -;------------------------------------------------------------------------------  
39 -; Vendor and Product ID Definitions  
40 -;------------------------------------------------------------------------------  
41 -; When developing your USB device, the VID and PID used in the PC side  
42 -; application program and the firmware on the microcontroller must match.  
43 -; Modify the below line to use your VID and PID. Use the format as shown below.  
44 -; Note: One INF file can be used for multiple devices with different VID and PIDs.  
45 -; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.  
46 -;------------------------------------------------------------------------------  
47 -[DeviceList]  
48 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044  
49 -  
50 -[DeviceList.NTx86]  
51 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044  
52 -  
53 -[DeviceList.NTamd64]  
54 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044  
55 -  
56 -[DeviceList.NTia64]  
57 -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044  
58 -  
59 -;------------------------------------------------------------------------------  
60 -; String Definitions  
61 -;------------------------------------------------------------------------------  
62 -;Modify these strings to customize your device  
63 -;------------------------------------------------------------------------------  
64 -[Strings]  
65 -MFGNAME="http://www.lufa-lib.org"  
66 -DESCRIPTION="LUFA CDC-ACM Virtual Serial Port"  
67 \ No newline at end of file 0 \ No newline at end of file
lufa/USB_gadget.c deleted
@@ -1,254 +0,0 @@ @@ -1,254 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * Main source file for the USBtoSerial project. This file contains the main tasks of  
34 - * the project and is responsible for the initial application hardware configuration.  
35 - */  
36 -  
37 -#include "USB_gadget.h"  
38 -  
39 -/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */  
40 -static RingBuffer_t USBtoUSART_Buffer;  
41 -  
42 -/** Underlying data buffer for \ref USBtoUSART_Buffer, where the stored bytes are located. */  
43 -static uint8_t USBtoUSART_Buffer_Data[128];  
44 -  
45 -/** Circular buffer to hold data from the serial port before it is sent to the host. */  
46 -static RingBuffer_t USARTtoUSB_Buffer;  
47 -  
48 -/** Underlying data buffer for \ref USARTtoUSB_Buffer, where the stored bytes are located. */  
49 -static uint8_t USARTtoUSB_Buffer_Data[128];  
50 -  
51 -/** LUFA CDC Class driver interface configuration and state information. This structure is  
52 - * passed to all CDC Class driver functions, so that multiple instances of the same class  
53 - * within a device can be differentiated from one another.  
54 - */  
55 -USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =  
56 - {  
57 - .Config =  
58 - {  
59 - .ControlInterfaceNumber = INTERFACE_ID_CDC_CCI,  
60 - .DataINEndpoint =  
61 - {  
62 - .Address = CDC_TX_EPADDR,  
63 - .Size = CDC_TXRX_EPSIZE,  
64 - .Banks = 1,  
65 - },  
66 - .DataOUTEndpoint =  
67 - {  
68 - .Address = CDC_RX_EPADDR,  
69 - .Size = CDC_TXRX_EPSIZE,  
70 - .Banks = 1,  
71 - },  
72 - .NotificationEndpoint =  
73 - {  
74 - .Address = CDC_NOTIFICATION_EPADDR,  
75 - .Size = CDC_NOTIFICATION_EPSIZE,  
76 - .Banks = 1,  
77 - },  
78 - },  
79 - };  
80 -  
81 -  
82 -/** Main program entry point. This routine contains the overall program flow, including initial  
83 - * setup of all components and the main program loop.  
84 - */  
85 -int main(void)  
86 -{  
87 - SetupHardware();  
88 -  
89 - RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data));  
90 - RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data));  
91 -  
92 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
93 - GlobalInterruptEnable();  
94 -  
95 - for (;;)  
96 - {  
97 - /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */  
98 - if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))  
99 - {  
100 - int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);  
101 -  
102 - /* Store received byte into the USART transmit buffer */  
103 - if (!(ReceivedByte < 0))  
104 - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);  
105 - }  
106 -  
107 - uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);  
108 - if (BufferCount)  
109 - {  
110 - Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address);  
111 -  
112 - /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data  
113 - * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */  
114 - if (Endpoint_IsINReady())  
115 - {  
116 - /* Never send more than one bank size less one byte to the host at a time, so that we don't block  
117 - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */  
118 - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));  
119 -  
120 - /* Read bytes from the USART receive buffer into the USB IN endpoint */  
121 - while (BytesToSend--)  
122 - {  
123 - /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */  
124 - if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface,  
125 - RingBuffer_Peek(&USARTtoUSB_Buffer)) != ENDPOINT_READYWAIT_NoError)  
126 - {  
127 - break;  
128 - }  
129 -  
130 - /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */  
131 - RingBuffer_Remove(&USARTtoUSB_Buffer);  
132 - }  
133 - }  
134 - }  
135 -  
136 - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */  
137 - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer)))  
138 - Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));  
139 -  
140 - CDC_Device_USBTask(&VirtualSerial_CDC_Interface);  
141 - USB_USBTask();  
142 - }  
143 -}  
144 -  
145 -/** Configures the board hardware and chip peripherals for the demo's functionality. */  
146 -void SetupHardware(void)  
147 -{  
148 -#if (ARCH == ARCH_AVR8)  
149 - /* Disable watchdog if enabled by bootloader/fuses */  
150 - MCUSR &= ~(1 << WDRF);  
151 - wdt_disable();  
152 -  
153 - /* Disable clock division */  
154 - clock_prescale_set(clock_div_1);  
155 -#endif  
156 -  
157 - /* Hardware Initialization */  
158 - LEDs_Init();  
159 - USB_Init();  
160 -}  
161 -  
162 -/** Event handler for the library USB Connection event. */  
163 -void EVENT_USB_Device_Connect(void)  
164 -{  
165 - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);  
166 -}  
167 -  
168 -/** Event handler for the library USB Disconnection event. */  
169 -void EVENT_USB_Device_Disconnect(void)  
170 -{  
171 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
172 -}  
173 -  
174 -/** Event handler for the library USB Configuration Changed event. */  
175 -void EVENT_USB_Device_ConfigurationChanged(void)  
176 -{  
177 - bool ConfigSuccess = true;  
178 -  
179 - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);  
180 -  
181 - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);  
182 -}  
183 -  
184 -/** Event handler for the library USB Control Request reception event. */  
185 -void EVENT_USB_Device_ControlRequest(void)  
186 -{  
187 - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);  
188 -}  
189 -  
190 -/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer  
191 - * for later transmission to the host.  
192 - */  
193 -ISR(USART1_RX_vect, ISR_BLOCK)  
194 -{  
195 - uint8_t ReceivedByte = UDR1;  
196 -  
197 - if ((USB_DeviceState == DEVICE_STATE_Configured) && !(RingBuffer_IsFull(&USARTtoUSB_Buffer)))  
198 - RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);  
199 -}  
200 -  
201 -/** Event handler for the CDC Class driver Line Encoding Changed event.  
202 - *  
203 - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced  
204 - */  
205 -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)  
206 -{  
207 - uint8_t ConfigMask = 0;  
208 -  
209 - switch (CDCInterfaceInfo->State.LineEncoding.ParityType)  
210 - {  
211 - case CDC_PARITY_Odd:  
212 - ConfigMask = ((1 << UPM11) | (1 << UPM10));  
213 - break;  
214 - case CDC_PARITY_Even:  
215 - ConfigMask = (1 << UPM11);  
216 - break;  
217 - }  
218 -  
219 - if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)  
220 - ConfigMask |= (1 << USBS1);  
221 -  
222 - switch (CDCInterfaceInfo->State.LineEncoding.DataBits)  
223 - {  
224 - case 6:  
225 - ConfigMask |= (1 << UCSZ10);  
226 - break;  
227 - case 7:  
228 - ConfigMask |= (1 << UCSZ11);  
229 - break;  
230 - case 8:  
231 - ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));  
232 - break;  
233 - }  
234 -  
235 - /* Keep the TX line held high (idle) while the USART is reconfigured */  
236 - PORTD |= (1 << 3);  
237 -  
238 - /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */  
239 - UCSR1B = 0;  
240 - UCSR1A = 0;  
241 - UCSR1C = 0;  
242 -  
243 - /* Set the new baud rate before configuring the USART */  
244 - UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);  
245 -  
246 - /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */  
247 - UCSR1C = ConfigMask;  
248 - UCSR1A = (1 << U2X1);  
249 - UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));  
250 -  
251 - /* Release the TX line after the USART has been reconfigured */  
252 - PORTD &= ~(1 << 3);  
253 -}  
254 -  
lufa/USB_gadget.h deleted
@@ -1,77 +0,0 @@ @@ -1,77 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * Header file for USBtoSerial.c.  
34 - */  
35 -  
36 -#ifndef _USB_SERIAL_H_  
37 -#define _USB_SERIAL_H_  
38 -  
39 - /* Includes: */  
40 - #include <avr/io.h>  
41 - #include <avr/wdt.h>  
42 - #include <avr/interrupt.h>  
43 - #include <avr/power.h>  
44 -  
45 - #include "Descriptors.h"  
46 -  
47 - #include <LUFA/Drivers/Board/LEDs.h>  
48 - #include <LUFA/Drivers/Peripheral/Serial.h>  
49 - #include <LUFA/Drivers/Misc/RingBuffer.h>  
50 - #include <LUFA/Drivers/USB/USB.h>  
51 - #include <LUFA/Platform/Platform.h>  
52 -  
53 - /* Macros: */  
54 - /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */  
55 - #define LEDMASK_USB_NOTREADY LEDS_LED1  
56 -  
57 - /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */  
58 - #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)  
59 -  
60 - /** LED mask for the library LED driver, to indicate that the USB interface is ready. */  
61 - #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)  
62 -  
63 - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */  
64 - #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)  
65 -  
66 - /* Function Prototypes: */  
67 - void SetupHardware(void);  
68 -  
69 - void EVENT_USB_Device_Connect(void);  
70 - void EVENT_USB_Device_Disconnect(void);  
71 - void EVENT_USB_Device_ConfigurationChanged(void);  
72 - void EVENT_USB_Device_ControlRequest(void);  
73 -  
74 - void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);  
75 -  
76 -#endif  
77 -  
lufa/USBtoSerial.txt deleted
@@ -1,78 +0,0 @@ @@ -1,78 +0,0 @@
1 -/** \file  
2 - *  
3 - * This file contains special DoxyGen information for the generation of the main page and other special  
4 - * documentation pages. It is not a project source file.  
5 - */  
6 -  
7 -/** \mainpage USB to Serial Converter Project  
8 - *  
9 - * \section Sec_Compat Project Compatibility:  
10 - *  
11 - * The following list indicates what microcontrollers are compatible with this project.  
12 - *  
13 - * \li Series 7 USB AVRs (AT90USBxxx7)  
14 - * \li Series 6 USB AVRs (AT90USBxxx6)  
15 - * \li Series 4 USB AVRs (ATMEGAxxU4)  
16 - * \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2)  
17 - *  
18 - * \section Sec_Info USB Information:  
19 - *  
20 - * The following table gives a rundown of the USB utilization of this project.  
21 - *  
22 - * <table>  
23 - * <tr>  
24 - * <td><b>USB Mode:</b></td>  
25 - * <td>Device</td>  
26 - * </tr>  
27 - * <tr>  
28 - * <td><b>USB Class:</b></td>  
29 - * <td>Communications Device Class (CDC)</td>  
30 - * </tr>  
31 - * <tr>  
32 - * <td><b>USB Subclass:</b></td>  
33 - * <td>Abstract Control Model (ACM)</td>  
34 - * </tr>  
35 - * <tr>  
36 - * <td><b>Relevant Standards:</b></td>  
37 - * <td>USBIF CDC Class Standard</td>  
38 - * </tr>  
39 - * <tr>  
40 - * <td><b>Supported USB Speeds:</b></td>  
41 - * <td>Full Speed Mode</td>  
42 - * </tr>  
43 - * </table>  
44 - *  
45 - * \section Sec_Description Project Description:  
46 - *  
47 - * USB to Serial bridge project. This project allows a USB AVR to serve  
48 - * as a USB to USART bridge between a USB host and a device lacking a  
49 - * USB port. When programmed into a USB AVR, the AVR will enumerate as a  
50 - * virtual COM port.  
51 - *  
52 - * The AVR's hardware USART's settings will change to mirror as closely as  
53 - * possible the serial settings set on the host. However, due to hardware  
54 - * limitations, some options may not be supported (baud rates with unacceptable  
55 - * error rates at the AVR's clock speed, data lengths other than 6, 7 or 8 bits,  
56 - * 1.5 stop bits, parity other than none, even or odd).  
57 - *  
58 - * After running this project for the first time on a new computer,  
59 - * you will need to supply the .INF file located in this project  
60 - * project's directory as the device's driver when running under  
61 - * Windows. This will enable Windows to use its inbuilt CDC drivers,  
62 - * negating the need for custom drivers for the device. Other  
63 - * Operating Systems should automatically use their own inbuilt  
64 - * CDC-ACM drivers.  
65 - *  
66 - * \section Sec_Options Project Options  
67 - *  
68 - * The following defines can be found in this project, which can control the project behaviour when defined, or changed in value.  
69 - *  
70 - * <table>  
71 - * <tr>  
72 - * <td>  
73 - * None  
74 - * </td>  
75 - * </tr>  
76 - * </table>  
77 - */  
78 -  
lufa/VirtualSerial.c deleted
@@ -1,202 +0,0 @@ @@ -1,202 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * Main source file for the VirtualSerial demo. This file contains the main tasks of  
34 - * the demo and is responsible for the initial application hardware configuration.  
35 - */  
36 -  
37 -#include "VirtualSerial.h"  
38 -  
39 -/** LUFA CDC Class driver interface configuration and state information. This structure is  
40 - * passed to all CDC Class driver functions, so that multiple instances of the same class  
41 - * within a device can be differentiated from one another.  
42 - */  
43 -USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =  
44 - {  
45 - .Config =  
46 - {  
47 - .ControlInterfaceNumber = INTERFACE_ID_CDC_CCI,  
48 - .DataINEndpoint =  
49 - {  
50 - .Address = CDC_TX_EPADDR,  
51 - .Size = CDC_TXRX_EPSIZE,  
52 - .Banks = 1,  
53 - },  
54 - .DataOUTEndpoint =  
55 - {  
56 - .Address = CDC_RX_EPADDR,  
57 - .Size = CDC_TXRX_EPSIZE,  
58 - .Banks = 1,  
59 - },  
60 - .NotificationEndpoint =  
61 - {  
62 - .Address = CDC_NOTIFICATION_EPADDR,  
63 - .Size = CDC_NOTIFICATION_EPSIZE,  
64 - .Banks = 1,  
65 - },  
66 - },  
67 - };  
68 -  
69 -/** Standard file stream for the CDC interface when set up, so that the virtual CDC COM port can be  
70 - * used like any regular character stream in the C APIs.  
71 - */  
72 -static FILE USBSerialStream;  
73 -  
74 -  
75 -/** Main program entry point. This routine contains the overall program flow, including initial  
76 - * setup of all components and the main program loop.  
77 - */  
78 -int main(void)  
79 -{  
80 - SetupHardware();  
81 -  
82 - /* Create a regular character stream for the interface so that it can be used with the stdio.h functions */  
83 - CDC_Device_CreateStream(&VirtualSerial_CDC_Interface, &USBSerialStream);  
84 -  
85 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
86 - GlobalInterruptEnable();  
87 -  
88 - for (;;)  
89 - {  
90 - CheckJoystickMovement();  
91 -  
92 - /* Must throw away unused bytes from the host, or it will lock up while waiting for the device */  
93 - CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);  
94 -  
95 - CDC_Device_USBTask(&VirtualSerial_CDC_Interface);  
96 - USB_USBTask();  
97 - }  
98 -}  
99 -  
100 -/** Configures the board hardware and chip peripherals for the demo's functionality. */  
101 -void SetupHardware(void)  
102 -{  
103 -#if (ARCH == ARCH_AVR8)  
104 - /* Disable watchdog if enabled by bootloader/fuses */  
105 - MCUSR &= ~(1 << WDRF);  
106 - wdt_disable();  
107 -  
108 - /* Disable clock division */  
109 - clock_prescale_set(clock_div_1);  
110 -#elif (ARCH == ARCH_XMEGA)  
111 - /* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */  
112 - XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU);  
113 - XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL);  
114 -  
115 - /* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */  
116 - XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);  
117 - XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB);  
118 -  
119 - PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;  
120 -#endif  
121 -  
122 - /* Hardware Initialization */  
123 - Joystick_Init();  
124 - LEDs_Init();  
125 - USB_Init();  
126 -}  
127 -  
128 -/** Checks for changes in the position of the board joystick, sending strings to the host upon each change. */  
129 -void CheckJoystickMovement(void)  
130 -{  
131 - uint8_t JoyStatus_LCL = Joystick_GetStatus();  
132 - char* ReportString = NULL;  
133 - static bool ActionSent = false;  
134 -  
135 - if (JoyStatus_LCL & JOY_UP)  
136 - ReportString = "Joystick Up\r\n";  
137 - else if (JoyStatus_LCL & JOY_DOWN)  
138 - ReportString = "Joystick Down\r\n";  
139 - else if (JoyStatus_LCL & JOY_LEFT)  
140 - ReportString = "Joystick Left\r\n";  
141 - else if (JoyStatus_LCL & JOY_RIGHT)  
142 - ReportString = "Joystick Right\r\n";  
143 - else if (JoyStatus_LCL & JOY_PRESS)  
144 - ReportString = "Joystick Pressed\r\n";  
145 - else  
146 - ActionSent = false;  
147 -  
148 - if ((ReportString != NULL) && (ActionSent == false))  
149 - {  
150 - ActionSent = true;  
151 -  
152 - /* Write the string to the virtual COM port via the created character stream */  
153 - fputs(ReportString, &USBSerialStream);  
154 -  
155 - /* Alternatively, without the stream: */  
156 - // CDC_Device_SendString(&VirtualSerial_CDC_Interface, ReportString);  
157 - }  
158 -}  
159 -  
160 -/** Event handler for the library USB Connection event. */  
161 -void EVENT_USB_Device_Connect(void)  
162 -{  
163 - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);  
164 -}  
165 -  
166 -/** Event handler for the library USB Disconnection event. */  
167 -void EVENT_USB_Device_Disconnect(void)  
168 -{  
169 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);  
170 -}  
171 -  
172 -/** Event handler for the library USB Configuration Changed event. */  
173 -void EVENT_USB_Device_ConfigurationChanged(void)  
174 -{  
175 - bool ConfigSuccess = true;  
176 -  
177 - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);  
178 -  
179 - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);  
180 -}  
181 -  
182 -/** Event handler for the library USB Control Request reception event. */  
183 -void EVENT_USB_Device_ControlRequest(void)  
184 -{  
185 - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);  
186 -}  
187 -  
188 -/** CDC class driver callback function the processing of changes to the virtual  
189 - * control lines sent from the host..  
190 - *  
191 - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced  
192 - */  
193 -void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t *const CDCInterfaceInfo)  
194 -{  
195 - /* You can get changes to the virtual CDC lines in this callback; a common  
196 - use-case is to use the Data Terminal Ready (DTR) flag to enable and  
197 - disable CDC communications in your application when set to avoid the  
198 - application blocking while waiting for a host to become ready and read  
199 - in the pending data from the USB endpoints.  
200 - */  
201 - bool HostReady = (CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR) != 0;  
202 -}  
lufa/VirtualSerial.h deleted
@@ -1,77 +0,0 @@ @@ -1,77 +0,0 @@
1 -/*  
2 - LUFA Library  
3 - Copyright (C) Dean Camera, 2017.  
4 -  
5 - dean [at] fourwalledcubicle [dot] com  
6 - www.lufa-lib.org  
7 -*/  
8 -  
9 -/*  
10 - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)  
11 -  
12 - Permission to use, copy, modify, distribute, and sell this  
13 - software and its documentation for any purpose is hereby granted  
14 - without fee, provided that the above copyright notice appear in  
15 - all copies and that both that the copyright notice and this  
16 - permission notice and warranty disclaimer appear in supporting  
17 - documentation, and that the name of the author not be used in  
18 - advertising or publicity pertaining to distribution of the  
19 - software without specific, written prior permission.  
20 -  
21 - The author disclaims all warranties with regard to this  
22 - software, including all implied warranties of merchantability  
23 - and fitness. In no event shall the author be liable for any  
24 - special, indirect or consequential damages or any damages  
25 - whatsoever resulting from loss of use, data or profits, whether  
26 - in an action of contract, negligence or other tortious action,  
27 - arising out of or in connection with the use or performance of  
28 - this software.  
29 -*/  
30 -  
31 -/** \file  
32 - *  
33 - * Header file for VirtualSerial.c.  
34 - */  
35 -  
36 -#ifndef _VIRTUALSERIAL_H_  
37 -#define _VIRTUALSERIAL_H_  
38 -  
39 - /* Includes: */  
40 - #include <avr/io.h>  
41 - #include <avr/wdt.h>  
42 - #include <avr/power.h>  
43 - #include <avr/interrupt.h>  
44 - #include <string.h>  
45 - #include <stdio.h>  
46 -  
47 - #include "Descriptors.h"  
48 -  
49 - #include <LUFA/Drivers/Board/LEDs.h>  
50 - #include <LUFA/Drivers/Board/Joystick.h>  
51 - #include <LUFA/Drivers/USB/USB.h>  
52 - #include <LUFA/Platform/Platform.h>  
53 -  
54 - /* Macros: */  
55 - /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */  
56 - #define LEDMASK_USB_NOTREADY LEDS_LED1  
57 -  
58 - /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */  
59 - #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)  
60 -  
61 - /** LED mask for the library LED driver, to indicate that the USB interface is ready. */  
62 - #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)  
63 -  
64 - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */  
65 - #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)  
66 -  
67 - /* Function Prototypes: */  
68 - void SetupHardware(void);  
69 - void CheckJoystickMovement(void);  
70 -  
71 - void EVENT_USB_Device_Connect(void);  
72 - void EVENT_USB_Device_Disconnect(void);  
73 - void EVENT_USB_Device_ConfigurationChanged(void);  
74 - void EVENT_USB_Device_ControlRequest(void);  
75 -  
76 -#endif  
77 -  
lufa/VirtualSerial.txt deleted
@@ -1,76 +0,0 @@ @@ -1,76 +0,0 @@
1 -/** \file  
2 - *  
3 - * This file contains special DoxyGen information for the generation of the main page and other special  
4 - * documentation pages. It is not a project source file.  
5 - */  
6 -  
7 -/** \mainpage Communications Device Class (Virtual Serial Port) Demo  
8 - *  
9 - * \section Sec_Compat Demo Compatibility:  
10 - *  
11 - * The following list indicates what microcontrollers are compatible with this demo.  
12 - *  
13 - * \li Series 7 USB AVRs (AT90USBxxx7)  
14 - * \li Series 6 USB AVRs (AT90USBxxx6)  
15 - * \li Series 4 USB AVRs (ATMEGAxxU4)  
16 - * \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2)  
17 - * \li Series AU XMEGA AVRs (ATXMEGAxxxAxU)  
18 - * \li Series B XMEGA AVRs (ATXMEGAxxxBx)  
19 - * \li Series C XMEGA AVRs (ATXMEGAxxxCx)  
20 - *  
21 - * \section Sec_Info USB Information:  
22 - *  
23 - * The following table gives a rundown of the USB utilization of this demo.  
24 - *  
25 - * <table>  
26 - * <tr>  
27 - * <td><b>USB Mode:</b></td>  
28 - * <td>Device</td>  
29 - * </tr>  
30 - * <tr>  
31 - * <td><b>USB Class:</b></td>  
32 - * <td>Communications Device Class (CDC)</td>  
33 - * </tr>  
34 - * <tr>  
35 - * <td><b>USB Subclass:</b></td>  
36 - * <td>Abstract Control Model (ACM)</td>  
37 - * </tr>  
38 - * <tr>  
39 - * <td><b>Relevant Standards:</b></td>  
40 - * <td>USBIF CDC Class Standard</td>  
41 - * </tr>  
42 - * <tr>  
43 - * <td><b>Supported USB Speeds:</b></td>  
44 - * <td>Full Speed Mode</td>  
45 - * </tr>  
46 - * </table>  
47 - *  
48 - * \section Sec_Description Project Description:  
49 - *  
50 - * Communications Device Class demonstration application.  
51 - * This gives a simple reference application for implementing  
52 - * a CDC device acting as a virtual serial port. Joystick  
53 - * actions are transmitted to the host as strings. The device  
54 - * does not respond to serial data sent from the host.  
55 - *  
56 - * After running this demo for the first time on a new computer,  
57 - * you will need to supply the .INF file located in this demo  
58 - * project's directory as the device's driver when running under  
59 - * Windows. This will enable Windows to use its inbuilt CDC drivers,  
60 - * negating the need for custom drivers for the device. Other  
61 - * Operating Systems should automatically use their own inbuilt  
62 - * CDC-ACM drivers.  
63 - *  
64 - * \section Sec_Options Project Options  
65 - *  
66 - * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.  
67 - *  
68 - * <table>  
69 - * <tr>  
70 - * <td>  
71 - * None  
72 - * </td>  
73 - * </tr>  
74 - * </table>  
75 - */  
76 -  
lufa/asf.xml deleted
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -<asf xmlversion="1.0">  
2 - <project caption="USB to Serial Converter" id="lufa.projects.usb_to_serial.avr8">  
3 - <require idref="lufa.projects.usb_to_serial"/>  
4 - <require idref="lufa.boards.dummy.avr8"/>  
5 - <generator value="as5_8"/>  
6 -  
7 - <device-support value="at90usb1287"/>  
8 - <config name="lufa.drivers.board.name" value="usbkey"/>  
9 -  
10 - <build type="define" name="F_CPU" value="8000000UL"/>  
11 - <build type="define" name="F_USB" value="8000000UL"/>  
12 - </project>  
13 -  
14 - <module type="application" id="lufa.projects.usb_to_serial" caption="USB to Serial Converter">  
15 - <info type="description" value="summary">  
16 - USB to Serial USART converter project.  
17 - </info>  
18 -  
19 - <info type="gui-flag" value="move-to-root"/>  
20 -  
21 - <info type="keyword" value="Technology">  
22 - <keyword value="Class Driver APIs"/>  
23 - <keyword value="USB Device"/>  
24 - <keyword value="CDC Class"/>  
25 - </info>  
26 -  
27 - <device-support-alias value="lufa_avr8"/>  
28 - <device-support-alias value="lufa_xmega"/>  
29 - <device-support-alias value="lufa_uc3"/>  
30 -  
31 - <build type="distribute" subtype="user-file" value="doxyfile"/>  
32 - <build type="distribute" subtype="user-file" value="USBtoSerial.txt"/>  
33 - <build type="distribute" subtype="user-file" value="LUFA USBtoSerial.inf"/>  
34 -  
35 - <build type="c-source" value="USBtoSerial.c"/>  
36 - <build type="c-source" value="Descriptors.c"/>  
37 - <build type="header-file" value="USBtoSerial.h"/>  
38 - <build type="header-file" value="Descriptors.h"/>  
39 -  
40 - <build type="module-config" subtype="path" value="Config"/>  
41 - <build type="header-file" value="Config/LUFAConfig.h"/>  
42 -  
43 - <require idref="lufa.common"/>  
44 - <require idref="lufa.platform"/>  
45 - <require idref="lufa.drivers.peripheral.usart"/>  
46 - <require idref="lufa.drivers.usb"/>  
47 - <require idref="lufa.drivers.board"/>  
48 - <require idref="lufa.drivers.board.leds"/>  
49 - <require idref="lufa.drivers.misc.ringbuffer"/>  
50 - </module>  
51 -</asf>  
lufa/doxyfile deleted
@@ -1,2395 +0,0 @@ @@ -1,2395 +0,0 @@
1 -# Doxyfile 1.8.9  
2 -  
3 -# This file describes the settings to be used by the documentation system  
4 -# doxygen (www.doxygen.org) for a project.  
5 -#  
6 -# All text after a double hash (##) is considered a comment and is placed in  
7 -# front of the TAG it is preceding.  
8 -#  
9 -# All text after a single hash (#) is considered a comment and will be ignored.  
10 -# The format is:  
11 -# TAG = value [value, ...]  
12 -# For lists, items can also be appended using:  
13 -# TAG += value [value, ...]  
14 -# Values that contain spaces should be placed between quotes (\" \").  
15 -  
16 -#---------------------------------------------------------------------------  
17 -# Project related configuration options  
18 -#---------------------------------------------------------------------------  
19 -  
20 -# This tag specifies the encoding used for all characters in the config file  
21 -# that follow. The default is UTF-8 which is also the encoding used for all text  
22 -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv  
23 -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv  
24 -# for the list of possible encodings.  
25 -# The default value is: UTF-8.  
26 -  
27 -DOXYFILE_ENCODING = UTF-8  
28 -  
29 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by  
30 -# double-quotes, unless you are using Doxywizard) that should identify the  
31 -# project for which the documentation is generated. This name is used in the  
32 -# title of most generated pages and in a few other places.  
33 -# The default value is: My Project.  
34 -  
35 -PROJECT_NAME = "LUFA Library - USB to Serial Device Project"  
36 -  
37 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This  
38 -# could be handy for archiving the generated documentation or if some version  
39 -# control system is used.  
40 -  
41 -PROJECT_NUMBER =  
42 -  
43 -# Using the PROJECT_BRIEF tag one can provide an optional one line description  
44 -# for a project that appears at the top of each page and should give viewer a  
45 -# quick idea about the purpose of the project. Keep the description short.  
46 -  
47 -PROJECT_BRIEF =  
48 -  
49 -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included  
50 -# in the documentation. The maximum height of the logo should not exceed 55  
51 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy  
52 -# the logo to the output directory.  
53 -  
54 -PROJECT_LOGO =  
55 -  
56 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path  
57 -# into which the generated documentation will be written. If a relative path is  
58 -# entered, it will be relative to the location where doxygen was started. If  
59 -# left blank the current directory will be used.  
60 -  
61 -OUTPUT_DIRECTORY = ./Documentation/  
62 -  
63 -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-  
64 -# directories (in 2 levels) under the output directory of each output format and  
65 -# will distribute the generated files over these directories. Enabling this  
66 -# option can be useful when feeding doxygen a huge amount of source files, where  
67 -# putting all generated files in the same directory would otherwise causes  
68 -# performance problems for the file system.  
69 -# The default value is: NO.  
70 -  
71 -CREATE_SUBDIRS = NO  
72 -  
73 -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII  
74 -# characters to appear in the names of generated files. If set to NO, non-ASCII  
75 -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode  
76 -# U+3044.  
77 -# The default value is: NO.  
78 -  
79 -ALLOW_UNICODE_NAMES = NO  
80 -  
81 -# The OUTPUT_LANGUAGE tag is used to specify the language in which all  
82 -# documentation generated by doxygen is written. Doxygen will use this  
83 -# information to generate all constant output in the proper language.  
84 -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,  
85 -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),  
86 -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,  
87 -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),  
88 -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,  
89 -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,  
90 -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,  
91 -# Ukrainian and Vietnamese.  
92 -# The default value is: English.  
93 -  
94 -OUTPUT_LANGUAGE = English  
95 -  
96 -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member  
97 -# descriptions after the members that are listed in the file and class  
98 -# documentation (similar to Javadoc). Set to NO to disable this.  
99 -# The default value is: YES.  
100 -  
101 -BRIEF_MEMBER_DESC = YES  
102 -  
103 -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief  
104 -# description of a member or function before the detailed description  
105 -#  
106 -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the  
107 -# brief descriptions will be completely suppressed.  
108 -# The default value is: YES.  
109 -  
110 -REPEAT_BRIEF = YES  
111 -  
112 -# This tag implements a quasi-intelligent brief description abbreviator that is  
113 -# used to form the text in various listings. Each string in this list, if found  
114 -# as the leading text of the brief description, will be stripped from the text  
115 -# and the result, after processing the whole list, is used as the annotated  
116 -# text. Otherwise, the brief description is used as-is. If left blank, the  
117 -# following values are used ($name is automatically replaced with the name of  
118 -# the entity):The $name class, The $name widget, The $name file, is, provides,  
119 -# specifies, contains, represents, a, an and the.  
120 -  
121 -ABBREVIATE_BRIEF = "The $name class" \  
122 - "The $name widget" \  
123 - "The $name file" \  
124 - is \  
125 - provides \  
126 - specifies \  
127 - contains \  
128 - represents \  
129 - a \  
130 - an \  
131 - the  
132 -  
133 -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then  
134 -# doxygen will generate a detailed section even if there is only a brief  
135 -# description.  
136 -# The default value is: NO.  
137 -  
138 -ALWAYS_DETAILED_SEC = NO  
139 -  
140 -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all  
141 -# inherited members of a class in the documentation of that class as if those  
142 -# members were ordinary class members. Constructors, destructors and assignment  
143 -# operators of the base classes will not be shown.  
144 -# The default value is: NO.  
145 -  
146 -INLINE_INHERITED_MEMB = NO  
147 -  
148 -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path  
149 -# before files name in the file list and in the header files. If set to NO the  
150 -# shortest path that makes the file name unique will be used  
151 -# The default value is: YES.  
152 -  
153 -FULL_PATH_NAMES = YES  
154 -  
155 -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.  
156 -# Stripping is only done if one of the specified strings matches the left-hand  
157 -# part of the path. The tag can be used to show relative paths in the file list.  
158 -# If left blank the directory from which doxygen is run is used as the path to  
159 -# strip.  
160 -#  
161 -# Note that you can specify absolute paths here, but also relative paths, which  
162 -# will be relative from the directory where doxygen is started.  
163 -# This tag requires that the tag FULL_PATH_NAMES is set to YES.  
164 -  
165 -STRIP_FROM_PATH =  
166 -  
167 -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the  
168 -# path mentioned in the documentation of a class, which tells the reader which  
169 -# header file to include in order to use a class. If left blank only the name of  
170 -# the header file containing the class definition is used. Otherwise one should  
171 -# specify the list of include paths that are normally passed to the compiler  
172 -# using the -I flag.  
173 -  
174 -STRIP_FROM_INC_PATH =  
175 -  
176 -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but  
177 -# less readable) file names. This can be useful is your file systems doesn't  
178 -# support long names like on DOS, Mac, or CD-ROM.  
179 -# The default value is: NO.  
180 -  
181 -SHORT_NAMES = YES  
182 -  
183 -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the  
184 -# first line (until the first dot) of a Javadoc-style comment as the brief  
185 -# description. If set to NO, the Javadoc-style will behave just like regular Qt-  
186 -# style comments (thus requiring an explicit @brief command for a brief  
187 -# description.)  
188 -# The default value is: NO.  
189 -  
190 -JAVADOC_AUTOBRIEF = NO  
191 -  
192 -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first  
193 -# line (until the first dot) of a Qt-style comment as the brief description. If  
194 -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus  
195 -# requiring an explicit \brief command for a brief description.)  
196 -# The default value is: NO.  
197 -  
198 -QT_AUTOBRIEF = NO  
199 -  
200 -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a  
201 -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as  
202 -# a brief description. This used to be the default behavior. The new default is  
203 -# to treat a multi-line C++ comment block as a detailed description. Set this  
204 -# tag to YES if you prefer the old behavior instead.  
205 -#  
206 -# Note that setting this tag to YES also means that rational rose comments are  
207 -# not recognized any more.  
208 -# The default value is: NO.  
209 -  
210 -MULTILINE_CPP_IS_BRIEF = NO  
211 -  
212 -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the  
213 -# documentation from any documented member that it re-implements.  
214 -# The default value is: YES.  
215 -  
216 -INHERIT_DOCS = YES  
217 -  
218 -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new  
219 -# page for each member. If set to NO, the documentation of a member will be part  
220 -# of the file/class/namespace that contains it.  
221 -# The default value is: NO.  
222 -  
223 -SEPARATE_MEMBER_PAGES = NO  
224 -  
225 -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen  
226 -# uses this value to replace tabs by spaces in code fragments.  
227 -# Minimum value: 1, maximum value: 16, default value: 4.  
228 -  
229 -TAB_SIZE = 4  
230 -  
231 -# This tag can be used to specify a number of aliases that act as commands in  
232 -# the documentation. An alias has the form:  
233 -# name=value  
234 -# For example adding  
235 -# "sideeffect=@par Side Effects:\n"  
236 -# will allow you to put the command \sideeffect (or @sideeffect) in the  
237 -# documentation, which will result in a user-defined paragraph with heading  
238 -# "Side Effects:". You can put \n's in the value part of an alias to insert  
239 -# newlines.  
240 -  
241 -ALIASES =  
242 -  
243 -# This tag can be used to specify a number of word-keyword mappings (TCL only).  
244 -# A mapping has the form "name=value". For example adding "class=itcl::class"  
245 -# will allow you to use the command class in the itcl::class meaning.  
246 -  
247 -TCL_SUBST =  
248 -  
249 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources  
250 -# only. Doxygen will then generate output that is more tailored for C. For  
251 -# instance, some of the names that are used will be different. The list of all  
252 -# members will be omitted, etc.  
253 -# The default value is: NO.  
254 -  
255 -OPTIMIZE_OUTPUT_FOR_C = YES  
256 -  
257 -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or  
258 -# Python sources only. Doxygen will then generate output that is more tailored  
259 -# for that language. For instance, namespaces will be presented as packages,  
260 -# qualified scopes will look different, etc.  
261 -# The default value is: NO.  
262 -  
263 -OPTIMIZE_OUTPUT_JAVA = NO  
264 -  
265 -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran  
266 -# sources. Doxygen will then generate output that is tailored for Fortran.  
267 -# The default value is: NO.  
268 -  
269 -OPTIMIZE_FOR_FORTRAN = NO  
270 -  
271 -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL  
272 -# sources. Doxygen will then generate output that is tailored for VHDL.  
273 -# The default value is: NO.  
274 -  
275 -OPTIMIZE_OUTPUT_VHDL = NO  
276 -  
277 -# Doxygen selects the parser to use depending on the extension of the files it  
278 -# parses. With this tag you can assign which parser to use for a given  
279 -# extension. Doxygen has a built-in mapping, but you can override or extend it  
280 -# using this tag. The format is ext=language, where ext is a file extension, and  
281 -# language is one of the parsers supported by doxygen: IDL, Java, Javascript,  
282 -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:  
283 -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:  
284 -# Fortran. In the later case the parser tries to guess whether the code is fixed  
285 -# or free formatted code, this is the default for Fortran type files), VHDL. For  
286 -# instance to make doxygen treat .inc files as Fortran files (default is PHP),  
287 -# and .f files as C (default is Fortran), use: inc=Fortran f=C.  
288 -#  
289 -# Note: For files without extension you can use no_extension as a placeholder.  
290 -#  
291 -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise  
292 -# the files are not read by doxygen.  
293 -  
294 -EXTENSION_MAPPING =  
295 -  
296 -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments  
297 -# according to the Markdown format, which allows for more readable  
298 -# documentation. See http://daringfireball.net/projects/markdown/ for details.  
299 -# The output of markdown processing is further processed by doxygen, so you can  
300 -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in  
301 -# case of backward compatibilities issues.  
302 -# The default value is: YES.  
303 -  
304 -MARKDOWN_SUPPORT = NO  
305 -  
306 -# When enabled doxygen tries to link words that correspond to documented  
307 -# classes, or namespaces to their corresponding documentation. Such a link can  
308 -# be prevented in individual cases by putting a % sign in front of the word or  
309 -# globally by setting AUTOLINK_SUPPORT to NO.  
310 -# The default value is: YES.  
311 -  
312 -AUTOLINK_SUPPORT = YES  
313 -  
314 -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want  
315 -# to include (a tag file for) the STL sources as input, then you should set this  
316 -# tag to YES in order to let doxygen match functions declarations and  
317 -# definitions whose arguments contain STL classes (e.g. func(std::string);  
318 -# versus func(std::string) {}). This also make the inheritance and collaboration  
319 -# diagrams that involve STL classes more complete and accurate.  
320 -# The default value is: NO.  
321 -  
322 -BUILTIN_STL_SUPPORT = NO  
323 -  
324 -# If you use Microsoft's C++/CLI language, you should set this option to YES to  
325 -# enable parsing support.  
326 -# The default value is: NO.  
327 -  
328 -CPP_CLI_SUPPORT = NO  
329 -  
330 -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:  
331 -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen  
332 -# will parse them like normal C++ but will assume all classes use public instead  
333 -# of private inheritance when no explicit protection keyword is present.  
334 -# The default value is: NO.  
335 -  
336 -SIP_SUPPORT = NO  
337 -  
338 -# For Microsoft's IDL there are propget and propput attributes to indicate  
339 -# getter and setter methods for a property. Setting this option to YES will make  
340 -# doxygen to replace the get and set methods by a property in the documentation.  
341 -# This will only work if the methods are indeed getting or setting a simple  
342 -# type. If this is not the case, or you want to show the methods anyway, you  
343 -# should set this option to NO.  
344 -# The default value is: YES.  
345 -  
346 -IDL_PROPERTY_SUPPORT = YES  
347 -  
348 -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC  
349 -# tag is set to YES then doxygen will reuse the documentation of the first  
350 -# member in the group (if any) for the other members of the group. By default  
351 -# all members of a group must be documented explicitly.  
352 -# The default value is: NO.  
353 -  
354 -DISTRIBUTE_GROUP_DOC = NO  
355 -  
356 -# Set the SUBGROUPING tag to YES to allow class member groups of the same type  
357 -# (for instance a group of public functions) to be put as a subgroup of that  
358 -# type (e.g. under the Public Functions section). Set it to NO to prevent  
359 -# subgrouping. Alternatively, this can be done per class using the  
360 -# \nosubgrouping command.  
361 -# The default value is: YES.  
362 -  
363 -SUBGROUPING = YES  
364 -  
365 -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions  
366 -# are shown inside the group in which they are included (e.g. using \ingroup)  
367 -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX  
368 -# and RTF).  
369 -#  
370 -# Note that this feature does not work in combination with  
371 -# SEPARATE_MEMBER_PAGES.  
372 -# The default value is: NO.  
373 -  
374 -INLINE_GROUPED_CLASSES = NO  
375 -  
376 -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions  
377 -# with only public data fields or simple typedef fields will be shown inline in  
378 -# the documentation of the scope in which they are defined (i.e. file,  
379 -# namespace, or group documentation), provided this scope is documented. If set  
380 -# to NO, structs, classes, and unions are shown on a separate page (for HTML and  
381 -# Man pages) or section (for LaTeX and RTF).  
382 -# The default value is: NO.  
383 -  
384 -INLINE_SIMPLE_STRUCTS = NO  
385 -  
386 -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or  
387 -# enum is documented as struct, union, or enum with the name of the typedef. So  
388 -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct  
389 -# with name TypeT. When disabled the typedef will appear as a member of a file,  
390 -# namespace, or class. And the struct will be named TypeS. This can typically be  
391 -# useful for C code in case the coding convention dictates that all compound  
392 -# types are typedef'ed and only the typedef is referenced, never the tag name.  
393 -# The default value is: NO.  
394 -  
395 -TYPEDEF_HIDES_STRUCT = NO  
396 -  
397 -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This  
398 -# cache is used to resolve symbols given their name and scope. Since this can be  
399 -# an expensive process and often the same symbol appears multiple times in the  
400 -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small  
401 -# doxygen will become slower. If the cache is too large, memory is wasted. The  
402 -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range  
403 -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536  
404 -# symbols. At the end of a run doxygen will report the cache usage and suggest  
405 -# the optimal cache size from a speed point of view.  
406 -# Minimum value: 0, maximum value: 9, default value: 0.  
407 -  
408 -LOOKUP_CACHE_SIZE = 0  
409 -  
410 -#---------------------------------------------------------------------------  
411 -# Build related configuration options  
412 -#---------------------------------------------------------------------------  
413 -  
414 -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in  
415 -# documentation are documented, even if no documentation was available. Private  
416 -# class members and static file members will be hidden unless the  
417 -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.  
418 -# Note: This will also disable the warnings about undocumented members that are  
419 -# normally produced when WARNINGS is set to YES.  
420 -# The default value is: NO.  
421 -  
422 -EXTRACT_ALL = YES  
423 -  
424 -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will  
425 -# be included in the documentation.  
426 -# The default value is: NO.  
427 -  
428 -EXTRACT_PRIVATE = YES  
429 -  
430 -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal  
431 -# scope will be included in the documentation.  
432 -# The default value is: NO.  
433 -  
434 -EXTRACT_PACKAGE = NO  
435 -  
436 -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be  
437 -# included in the documentation.  
438 -# The default value is: NO.  
439 -  
440 -EXTRACT_STATIC = YES  
441 -  
442 -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined  
443 -# locally in source files will be included in the documentation. If set to NO,  
444 -# only classes defined in header files are included. Does not have any effect  
445 -# for Java sources.  
446 -# The default value is: YES.  
447 -  
448 -EXTRACT_LOCAL_CLASSES = YES  
449 -  
450 -# This flag is only useful for Objective-C code. If set to YES, local methods,  
451 -# which are defined in the implementation section but not in the interface are  
452 -# included in the documentation. If set to NO, only methods in the interface are  
453 -# included.  
454 -# The default value is: NO.  
455 -  
456 -EXTRACT_LOCAL_METHODS = NO  
457 -  
458 -# If this flag is set to YES, the members of anonymous namespaces will be  
459 -# extracted and appear in the documentation as a namespace called  
460 -# 'anonymous_namespace{file}', where file will be replaced with the base name of  
461 -# the file that contains the anonymous namespace. By default anonymous namespace  
462 -# are hidden.  
463 -# The default value is: NO.  
464 -  
465 -EXTRACT_ANON_NSPACES = NO  
466 -  
467 -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all  
468 -# undocumented members inside documented classes or files. If set to NO these  
469 -# members will be included in the various overviews, but no documentation  
470 -# section is generated. This option has no effect if EXTRACT_ALL is enabled.  
471 -# The default value is: NO.  
472 -  
473 -HIDE_UNDOC_MEMBERS = NO  
474 -  
475 -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all  
476 -# undocumented classes that are normally visible in the class hierarchy. If set  
477 -# to NO, these classes will be included in the various overviews. This option  
478 -# has no effect if EXTRACT_ALL is enabled.  
479 -# The default value is: NO.  
480 -  
481 -HIDE_UNDOC_CLASSES = NO  
482 -  
483 -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend  
484 -# (class|struct|union) declarations. If set to NO, these declarations will be  
485 -# included in the documentation.  
486 -# The default value is: NO.  
487 -  
488 -HIDE_FRIEND_COMPOUNDS = NO  
489 -  
490 -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any  
491 -# documentation blocks found inside the body of a function. If set to NO, these  
492 -# blocks will be appended to the function's detailed documentation block.  
493 -# The default value is: NO.  
494 -  
495 -HIDE_IN_BODY_DOCS = NO  
496 -  
497 -# The INTERNAL_DOCS tag determines if documentation that is typed after a  
498 -# \internal command is included. If the tag is set to NO then the documentation  
499 -# will be excluded. Set it to YES to include the internal documentation.  
500 -# The default value is: NO.  
501 -  
502 -INTERNAL_DOCS = NO  
503 -  
504 -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file  
505 -# names in lower-case letters. If set to YES, upper-case letters are also  
506 -# allowed. This is useful if you have classes or files whose names only differ  
507 -# in case and if your file system supports case sensitive file names. Windows  
508 -# and Mac users are advised to set this option to NO.  
509 -# The default value is: system dependent.  
510 -  
511 -CASE_SENSE_NAMES = NO  
512 -  
513 -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with  
514 -# their full class and namespace scopes in the documentation. If set to YES, the  
515 -# scope will be hidden.  
516 -# The default value is: NO.  
517 -  
518 -HIDE_SCOPE_NAMES = NO  
519 -  
520 -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will  
521 -# append additional text to a page's title, such as Class Reference. If set to  
522 -# YES the compound reference will be hidden.  
523 -# The default value is: NO.  
524 -  
525 -HIDE_COMPOUND_REFERENCE= NO  
526 -  
527 -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of  
528 -# the files that are included by a file in the documentation of that file.  
529 -# The default value is: YES.  
530 -  
531 -SHOW_INCLUDE_FILES = YES  
532 -  
533 -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each  
534 -# grouped member an include statement to the documentation, telling the reader  
535 -# which file to include in order to use the member.  
536 -# The default value is: NO.  
537 -  
538 -SHOW_GROUPED_MEMB_INC = NO  
539 -  
540 -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include  
541 -# files with double quotes in the documentation rather than with sharp brackets.  
542 -# The default value is: NO.  
543 -  
544 -FORCE_LOCAL_INCLUDES = NO  
545 -  
546 -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the  
547 -# documentation for inline members.  
548 -# The default value is: YES.  
549 -  
550 -INLINE_INFO = YES  
551 -  
552 -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the  
553 -# (detailed) documentation of file and class members alphabetically by member  
554 -# name. If set to NO, the members will appear in declaration order.  
555 -# The default value is: YES.  
556 -  
557 -SORT_MEMBER_DOCS = YES  
558 -  
559 -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief  
560 -# descriptions of file, namespace and class members alphabetically by member  
561 -# name. If set to NO, the members will appear in declaration order. Note that  
562 -# this will also influence the order of the classes in the class list.  
563 -# The default value is: NO.  
564 -  
565 -SORT_BRIEF_DOCS = NO  
566 -  
567 -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the  
568 -# (brief and detailed) documentation of class members so that constructors and  
569 -# destructors are listed first. If set to NO the constructors will appear in the  
570 -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.  
571 -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief  
572 -# member documentation.  
573 -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting  
574 -# detailed member documentation.  
575 -# The default value is: NO.  
576 -  
577 -SORT_MEMBERS_CTORS_1ST = NO  
578 -  
579 -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy  
580 -# of group names into alphabetical order. If set to NO the group names will  
581 -# appear in their defined order.  
582 -# The default value is: NO.  
583 -  
584 -SORT_GROUP_NAMES = NO  
585 -  
586 -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by  
587 -# fully-qualified names, including namespaces. If set to NO, the class list will  
588 -# be sorted only by class name, not including the namespace part.  
589 -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.  
590 -# Note: This option applies only to the class list, not to the alphabetical  
591 -# list.  
592 -# The default value is: NO.  
593 -  
594 -SORT_BY_SCOPE_NAME = NO  
595 -  
596 -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper  
597 -# type resolution of all parameters of a function it will reject a match between  
598 -# the prototype and the implementation of a member function even if there is  
599 -# only one candidate or it is obvious which candidate to choose by doing a  
600 -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still  
601 -# accept a match between prototype and implementation in such cases.  
602 -# The default value is: NO.  
603 -  
604 -STRICT_PROTO_MATCHING = NO  
605 -  
606 -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo  
607 -# list. This list is created by putting \todo commands in the documentation.  
608 -# The default value is: YES.  
609 -  
610 -GENERATE_TODOLIST = NO  
611 -  
612 -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test  
613 -# list. This list is created by putting \test commands in the documentation.  
614 -# The default value is: YES.  
615 -  
616 -GENERATE_TESTLIST = NO  
617 -  
618 -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug  
619 -# list. This list is created by putting \bug commands in the documentation.  
620 -# The default value is: YES.  
621 -  
622 -GENERATE_BUGLIST = NO  
623 -  
624 -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)  
625 -# the deprecated list. This list is created by putting \deprecated commands in  
626 -# the documentation.  
627 -# The default value is: YES.  
628 -  
629 -GENERATE_DEPRECATEDLIST= YES  
630 -  
631 -# The ENABLED_SECTIONS tag can be used to enable conditional documentation  
632 -# sections, marked by \if <section_label> ... \endif and \cond <section_label>  
633 -# ... \endcond blocks.  
634 -  
635 -ENABLED_SECTIONS =  
636 -  
637 -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the  
638 -# initial value of a variable or macro / define can have for it to appear in the  
639 -# documentation. If the initializer consists of more lines than specified here  
640 -# it will be hidden. Use a value of 0 to hide initializers completely. The  
641 -# appearance of the value of individual variables and macros / defines can be  
642 -# controlled using \showinitializer or \hideinitializer command in the  
643 -# documentation regardless of this setting.  
644 -# Minimum value: 0, maximum value: 10000, default value: 30.  
645 -  
646 -MAX_INITIALIZER_LINES = 30  
647 -  
648 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at  
649 -# the bottom of the documentation of classes and structs. If set to YES, the  
650 -# list will mention the files that were used to generate the documentation.  
651 -# The default value is: YES.  
652 -  
653 -SHOW_USED_FILES = YES  
654 -  
655 -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This  
656 -# will remove the Files entry from the Quick Index and from the Folder Tree View  
657 -# (if specified).  
658 -# The default value is: YES.  
659 -  
660 -SHOW_FILES = YES  
661 -  
662 -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces  
663 -# page. This will remove the Namespaces entry from the Quick Index and from the  
664 -# Folder Tree View (if specified).  
665 -# The default value is: YES.  
666 -  
667 -SHOW_NAMESPACES = YES  
668 -  
669 -# The FILE_VERSION_FILTER tag can be used to specify a program or script that  
670 -# doxygen should invoke to get the current version for each file (typically from  
671 -# the version control system). Doxygen will invoke the program by executing (via  
672 -# popen()) the command command input-file, where command is the value of the  
673 -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided  
674 -# by doxygen. Whatever the program writes to standard output is used as the file  
675 -# version. For an example see the documentation.  
676 -  
677 -FILE_VERSION_FILTER =  
678 -  
679 -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed  
680 -# by doxygen. The layout file controls the global structure of the generated  
681 -# output files in an output format independent way. To create the layout file  
682 -# that represents doxygen's defaults, run doxygen with the -l option. You can  
683 -# optionally specify a file name after the option, if omitted DoxygenLayout.xml  
684 -# will be used as the name of the layout file.  
685 -#  
686 -# Note that if you run doxygen from a directory containing a file called  
687 -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE  
688 -# tag is left empty.  
689 -  
690 -LAYOUT_FILE =  
691 -  
692 -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing  
693 -# the reference definitions. This must be a list of .bib files. The .bib  
694 -# extension is automatically appended if omitted. This requires the bibtex tool  
695 -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.  
696 -# For LaTeX the style of the bibliography can be controlled using  
697 -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the  
698 -# search path. See also \cite for info how to create references.  
699 -  
700 -CITE_BIB_FILES =  
701 -  
702 -#---------------------------------------------------------------------------  
703 -# Configuration options related to warning and progress messages  
704 -#---------------------------------------------------------------------------  
705 -  
706 -# The QUIET tag can be used to turn on/off the messages that are generated to  
707 -# standard output by doxygen. If QUIET is set to YES this implies that the  
708 -# messages are off.  
709 -# The default value is: NO.  
710 -  
711 -QUIET = YES  
712 -  
713 -# The WARNINGS tag can be used to turn on/off the warning messages that are  
714 -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES  
715 -# this implies that the warnings are on.  
716 -#  
717 -# Tip: Turn warnings on while writing the documentation.  
718 -# The default value is: YES.  
719 -  
720 -WARNINGS = YES  
721 -  
722 -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate  
723 -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag  
724 -# will automatically be disabled.  
725 -# The default value is: YES.  
726 -  
727 -WARN_IF_UNDOCUMENTED = YES  
728 -  
729 -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for  
730 -# potential errors in the documentation, such as not documenting some parameters  
731 -# in a documented function, or documenting parameters that don't exist or using  
732 -# markup commands wrongly.  
733 -# The default value is: YES.  
734 -  
735 -WARN_IF_DOC_ERROR = YES  
736 -  
737 -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that  
738 -# are documented, but have no documentation for their parameters or return  
739 -# value. If set to NO, doxygen will only warn about wrong or incomplete  
740 -# parameter documentation, but not about the absence of documentation.  
741 -# The default value is: NO.  
742 -  
743 -WARN_NO_PARAMDOC = YES  
744 -  
745 -# The WARN_FORMAT tag determines the format of the warning messages that doxygen  
746 -# can produce. The string should contain the $file, $line, and $text tags, which  
747 -# will be replaced by the file and line number from which the warning originated  
748 -# and the warning text. Optionally the format may contain $version, which will  
749 -# be replaced by the version of the file (if it could be obtained via  
750 -# FILE_VERSION_FILTER)  
751 -# The default value is: $file:$line: $text.  
752 -  
753 -WARN_FORMAT = "$file:$line: $text"  
754 -  
755 -# The WARN_LOGFILE tag can be used to specify a file to which warning and error  
756 -# messages should be written. If left blank the output is written to standard  
757 -# error (stderr).  
758 -  
759 -WARN_LOGFILE =  
760 -  
761 -#---------------------------------------------------------------------------  
762 -# Configuration options related to the input files  
763 -#---------------------------------------------------------------------------  
764 -  
765 -# The INPUT tag is used to specify the files and/or directories that contain  
766 -# documented source files. You may enter file names like myfile.cpp or  
767 -# directories like /usr/src/myproject. Separate the files or directories with  
768 -# spaces.  
769 -# Note: If this tag is empty the current directory is searched.  
770 -  
771 -INPUT = ./  
772 -  
773 -# This tag can be used to specify the character encoding of the source files  
774 -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses  
775 -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv  
776 -# documentation (see: http://www.gnu.org/software/libiconv) for the list of  
777 -# possible encodings.  
778 -# The default value is: UTF-8.  
779 -  
780 -INPUT_ENCODING = UTF-8  
781 -  
782 -# If the value of the INPUT tag contains directories, you can use the  
783 -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and  
784 -# *.h) to filter out the source-files in the directories. If left blank the  
785 -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,  
786 -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,  
787 -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,  
788 -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,  
789 -# *.qsf, *.as and *.js.  
790 -  
791 -FILE_PATTERNS = *.h \  
792 - *.c \  
793 - *.txt  
794 -  
795 -# The RECURSIVE tag can be used to specify whether or not subdirectories should  
796 -# be searched for input files as well.  
797 -# The default value is: NO.  
798 -  
799 -RECURSIVE = YES  
800 -  
801 -# The EXCLUDE tag can be used to specify files and/or directories that should be  
802 -# excluded from the INPUT source files. This way you can easily exclude a  
803 -# subdirectory from a directory tree whose root is specified with the INPUT tag.  
804 -#  
805 -# Note that relative paths are relative to the directory from which doxygen is  
806 -# run.  
807 -  
808 -EXCLUDE = Documentation/  
809 -  
810 -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or  
811 -# directories that are symbolic links (a Unix file system feature) are excluded  
812 -# from the input.  
813 -# The default value is: NO.  
814 -  
815 -EXCLUDE_SYMLINKS = NO  
816 -  
817 -# If the value of the INPUT tag contains directories, you can use the  
818 -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude  
819 -# certain files from those directories.  
820 -#  
821 -# Note that the wildcards are matched against the file with absolute path, so to  
822 -# exclude all test directories for example use the pattern */test/*  
823 -  
824 -EXCLUDE_PATTERNS =  
825 -  
826 -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names  
827 -# (namespaces, classes, functions, etc.) that should be excluded from the  
828 -# output. The symbol name can be a fully qualified name, a word, or if the  
829 -# wildcard * is used, a substring. Examples: ANamespace, AClass,  
830 -# AClass::ANamespace, ANamespace::*Test  
831 -#  
832 -# Note that the wildcards are matched against the file with absolute path, so to  
833 -# exclude all test directories use the pattern */test/*  
834 -  
835 -EXCLUDE_SYMBOLS = __* \  
836 - INCLUDE_FROM_*  
837 -  
838 -# The EXAMPLE_PATH tag can be used to specify one or more files or directories  
839 -# that contain example code fragments that are included (see the \include  
840 -# command).  
841 -  
842 -EXAMPLE_PATH =  
843 -  
844 -# If the value of the EXAMPLE_PATH tag contains directories, you can use the  
845 -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and  
846 -# *.h) to filter out the source-files in the directories. If left blank all  
847 -# files are included.  
848 -  
849 -EXAMPLE_PATTERNS = *  
850 -  
851 -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be  
852 -# searched for input files to be used with the \include or \dontinclude commands  
853 -# irrespective of the value of the RECURSIVE tag.  
854 -# The default value is: NO.  
855 -  
856 -EXAMPLE_RECURSIVE = NO  
857 -  
858 -# The IMAGE_PATH tag can be used to specify one or more files or directories  
859 -# that contain images that are to be included in the documentation (see the  
860 -# \image command).  
861 -  
862 -IMAGE_PATH =  
863 -  
864 -# The INPUT_FILTER tag can be used to specify a program that doxygen should  
865 -# invoke to filter for each input file. Doxygen will invoke the filter program  
866 -# by executing (via popen()) the command:  
867 -#  
868 -# <filter> <input-file>  
869 -#  
870 -# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the  
871 -# name of an input file. Doxygen will then use the output that the filter  
872 -# program writes to standard output. If FILTER_PATTERNS is specified, this tag  
873 -# will be ignored.  
874 -#  
875 -# Note that the filter must not add or remove lines; it is applied before the  
876 -# code is scanned, but not when the output code is generated. If lines are added  
877 -# or removed, the anchors will not be placed correctly.  
878 -  
879 -INPUT_FILTER =  
880 -  
881 -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern  
882 -# basis. Doxygen will compare the file name with each pattern and apply the  
883 -# filter if there is a match. The filters are a list of the form: pattern=filter  
884 -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how  
885 -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the  
886 -# patterns match the file name, INPUT_FILTER is applied.  
887 -  
888 -FILTER_PATTERNS =  
889 -  
890 -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using  
891 -# INPUT_FILTER) will also be used to filter the input files that are used for  
892 -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).  
893 -# The default value is: NO.  
894 -  
895 -FILTER_SOURCE_FILES = NO  
896 -  
897 -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file  
898 -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and  
899 -# it is also possible to disable source filtering for a specific pattern using  
900 -# *.ext= (so without naming a filter).  
901 -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.  
902 -  
903 -FILTER_SOURCE_PATTERNS =  
904 -  
905 -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that  
906 -# is part of the input, its contents will be placed on the main page  
907 -# (index.html). This can be useful if you have a project on for instance GitHub  
908 -# and want to reuse the introduction page also for the doxygen output.  
909 -  
910 -USE_MDFILE_AS_MAINPAGE =  
911 -  
912 -#---------------------------------------------------------------------------  
913 -# Configuration options related to source browsing  
914 -#---------------------------------------------------------------------------  
915 -  
916 -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be  
917 -# generated. Documented entities will be cross-referenced with these sources.  
918 -#  
919 -# Note: To get rid of all source code in the generated output, make sure that  
920 -# also VERBATIM_HEADERS is set to NO.  
921 -# The default value is: NO.  
922 -  
923 -SOURCE_BROWSER = NO  
924 -  
925 -# Setting the INLINE_SOURCES tag to YES will include the body of functions,  
926 -# classes and enums directly into the documentation.  
927 -# The default value is: NO.  
928 -  
929 -INLINE_SOURCES = NO  
930 -  
931 -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any  
932 -# special comment blocks from generated source code fragments. Normal C, C++ and  
933 -# Fortran comments will always remain visible.  
934 -# The default value is: YES.  
935 -  
936 -STRIP_CODE_COMMENTS = YES  
937 -  
938 -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented  
939 -# function all documented functions referencing it will be listed.  
940 -# The default value is: NO.  
941 -  
942 -REFERENCED_BY_RELATION = NO  
943 -  
944 -# If the REFERENCES_RELATION tag is set to YES then for each documented function  
945 -# all documented entities called/used by that function will be listed.  
946 -# The default value is: NO.  
947 -  
948 -REFERENCES_RELATION = NO  
949 -  
950 -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set  
951 -# to YES then the hyperlinks from functions in REFERENCES_RELATION and  
952 -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will  
953 -# link to the documentation.  
954 -# The default value is: YES.  
955 -  
956 -REFERENCES_LINK_SOURCE = NO  
957 -  
958 -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the  
959 -# source code will show a tooltip with additional information such as prototype,  
960 -# brief description and links to the definition and documentation. Since this  
961 -# will make the HTML file larger and loading of large files a bit slower, you  
962 -# can opt to disable this feature.  
963 -# The default value is: YES.  
964 -# This tag requires that the tag SOURCE_BROWSER is set to YES.  
965 -  
966 -SOURCE_TOOLTIPS = YES  
967 -  
968 -# If the USE_HTAGS tag is set to YES then the references to source code will  
969 -# point to the HTML generated by the htags(1) tool instead of doxygen built-in  
970 -# source browser. The htags tool is part of GNU's global source tagging system  
971 -# (see http://www.gnu.org/software/global/global.html). You will need version  
972 -# 4.8.6 or higher.  
973 -#  
974 -# To use it do the following:  
975 -# - Install the latest version of global  
976 -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file  
977 -# - Make sure the INPUT points to the root of the source tree  
978 -# - Run doxygen as normal  
979 -#  
980 -# Doxygen will invoke htags (and that will in turn invoke gtags), so these  
981 -# tools must be available from the command line (i.e. in the search path).  
982 -#  
983 -# The result: instead of the source browser generated by doxygen, the links to  
984 -# source code will now point to the output of htags.  
985 -# The default value is: NO.  
986 -# This tag requires that the tag SOURCE_BROWSER is set to YES.  
987 -  
988 -USE_HTAGS = NO  
989 -  
990 -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a  
991 -# verbatim copy of the header file for each class for which an include is  
992 -# specified. Set to NO to disable this.  
993 -# See also: Section \class.  
994 -# The default value is: YES.  
995 -  
996 -VERBATIM_HEADERS = NO  
997 -  
998 -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the  
999 -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the  
1000 -# cost of reduced performance. This can be particularly helpful with template  
1001 -# rich C++ code for which doxygen's built-in parser lacks the necessary type  
1002 -# information.  
1003 -# Note: The availability of this option depends on whether or not doxygen was  
1004 -# compiled with the --with-libclang option.  
1005 -# The default value is: NO.  
1006 -  
1007 -CLANG_ASSISTED_PARSING = NO  
1008 -  
1009 -# If clang assisted parsing is enabled you can provide the compiler with command  
1010 -# line options that you would normally use when invoking the compiler. Note that  
1011 -# the include paths will already be set by doxygen for the files and directories  
1012 -# specified with INPUT and INCLUDE_PATH.  
1013 -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.  
1014 -  
1015 -CLANG_OPTIONS =  
1016 -  
1017 -#---------------------------------------------------------------------------  
1018 -# Configuration options related to the alphabetical class index  
1019 -#---------------------------------------------------------------------------  
1020 -  
1021 -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all  
1022 -# compounds will be generated. Enable this if the project contains a lot of  
1023 -# classes, structs, unions or interfaces.  
1024 -# The default value is: YES.  
1025 -  
1026 -ALPHABETICAL_INDEX = YES  
1027 -  
1028 -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in  
1029 -# which the alphabetical index list will be split.  
1030 -# Minimum value: 1, maximum value: 20, default value: 5.  
1031 -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.  
1032 -  
1033 -COLS_IN_ALPHA_INDEX = 5  
1034 -  
1035 -# In case all classes in a project start with a common prefix, all classes will  
1036 -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag  
1037 -# can be used to specify a prefix (or a list of prefixes) that should be ignored  
1038 -# while generating the index headers.  
1039 -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.  
1040 -  
1041 -IGNORE_PREFIX =  
1042 -  
1043 -#---------------------------------------------------------------------------  
1044 -# Configuration options related to the HTML output  
1045 -#---------------------------------------------------------------------------  
1046 -  
1047 -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output  
1048 -# The default value is: YES.  
1049 -  
1050 -GENERATE_HTML = YES  
1051 -  
1052 -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a  
1053 -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of  
1054 -# it.  
1055 -# The default directory is: html.  
1056 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1057 -  
1058 -HTML_OUTPUT = html  
1059 -  
1060 -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each  
1061 -# generated HTML page (for example: .htm, .php, .asp).  
1062 -# The default value is: .html.  
1063 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1064 -  
1065 -HTML_FILE_EXTENSION = .html  
1066 -  
1067 -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for  
1068 -# each generated HTML page. If the tag is left blank doxygen will generate a  
1069 -# standard header.  
1070 -#  
1071 -# To get valid HTML the header file that includes any scripts and style sheets  
1072 -# that doxygen needs, which is dependent on the configuration options used (e.g.  
1073 -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a  
1074 -# default header using  
1075 -# doxygen -w html new_header.html new_footer.html new_stylesheet.css  
1076 -# YourConfigFile  
1077 -# and then modify the file new_header.html. See also section "Doxygen usage"  
1078 -# for information on how to generate the default header that doxygen normally  
1079 -# uses.  
1080 -# Note: The header is subject to change so you typically have to regenerate the  
1081 -# default header when upgrading to a newer version of doxygen. For a description  
1082 -# of the possible markers and block names see the documentation.  
1083 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1084 -  
1085 -HTML_HEADER =  
1086 -  
1087 -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each  
1088 -# generated HTML page. If the tag is left blank doxygen will generate a standard  
1089 -# footer. See HTML_HEADER for more information on how to generate a default  
1090 -# footer and what special commands can be used inside the footer. See also  
1091 -# section "Doxygen usage" for information on how to generate the default footer  
1092 -# that doxygen normally uses.  
1093 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1094 -  
1095 -HTML_FOOTER =  
1096 -  
1097 -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style  
1098 -# sheet that is used by each HTML page. It can be used to fine-tune the look of  
1099 -# the HTML output. If left blank doxygen will generate a default style sheet.  
1100 -# See also section "Doxygen usage" for information on how to generate the style  
1101 -# sheet that doxygen normally uses.  
1102 -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as  
1103 -# it is more robust and this tag (HTML_STYLESHEET) will in the future become  
1104 -# obsolete.  
1105 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1106 -  
1107 -HTML_STYLESHEET =  
1108 -  
1109 -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined  
1110 -# cascading style sheets that are included after the standard style sheets  
1111 -# created by doxygen. Using this option one can overrule certain style aspects.  
1112 -# This is preferred over using HTML_STYLESHEET since it does not replace the  
1113 -# standard style sheet and is therefore more robust against future updates.  
1114 -# Doxygen will copy the style sheet files to the output directory.  
1115 -# Note: The order of the extra style sheet files is of importance (e.g. the last  
1116 -# style sheet in the list overrules the setting of the previous ones in the  
1117 -# list). For an example see the documentation.  
1118 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1119 -  
1120 -HTML_EXTRA_STYLESHEET =  
1121 -  
1122 -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or  
1123 -# other source files which should be copied to the HTML output directory. Note  
1124 -# that these files will be copied to the base HTML output directory. Use the  
1125 -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these  
1126 -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the  
1127 -# files will be copied as-is; there are no commands or markers available.  
1128 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1129 -  
1130 -HTML_EXTRA_FILES =  
1131 -  
1132 -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen  
1133 -# will adjust the colors in the style sheet and background images according to  
1134 -# this color. Hue is specified as an angle on a colorwheel, see  
1135 -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value  
1136 -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300  
1137 -# purple, and 360 is red again.  
1138 -# Minimum value: 0, maximum value: 359, default value: 220.  
1139 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1140 -  
1141 -HTML_COLORSTYLE_HUE = 220  
1142 -  
1143 -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors  
1144 -# in the HTML output. For a value of 0 the output will use grayscales only. A  
1145 -# value of 255 will produce the most vivid colors.  
1146 -# Minimum value: 0, maximum value: 255, default value: 100.  
1147 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1148 -  
1149 -HTML_COLORSTYLE_SAT = 100  
1150 -  
1151 -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the  
1152 -# luminance component of the colors in the HTML output. Values below 100  
1153 -# gradually make the output lighter, whereas values above 100 make the output  
1154 -# darker. The value divided by 100 is the actual gamma applied, so 80 represents  
1155 -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not  
1156 -# change the gamma.  
1157 -# Minimum value: 40, maximum value: 240, default value: 80.  
1158 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1159 -  
1160 -HTML_COLORSTYLE_GAMMA = 80  
1161 -  
1162 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML  
1163 -# page will contain the date and time when the page was generated. Setting this  
1164 -# to NO can help when comparing the output of multiple runs.  
1165 -# The default value is: YES.  
1166 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1167 -  
1168 -HTML_TIMESTAMP = NO  
1169 -  
1170 -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML  
1171 -# documentation will contain sections that can be hidden and shown after the  
1172 -# page has loaded.  
1173 -# The default value is: NO.  
1174 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1175 -  
1176 -HTML_DYNAMIC_SECTIONS = YES  
1177 -  
1178 -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries  
1179 -# shown in the various tree structured indices initially; the user can expand  
1180 -# and collapse entries dynamically later on. Doxygen will expand the tree to  
1181 -# such a level that at most the specified number of entries are visible (unless  
1182 -# a fully collapsed tree already exceeds this amount). So setting the number of  
1183 -# entries 1 will produce a full collapsed tree by default. 0 is a special value  
1184 -# representing an infinite number of entries and will result in a full expanded  
1185 -# tree by default.  
1186 -# Minimum value: 0, maximum value: 9999, default value: 100.  
1187 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1188 -  
1189 -HTML_INDEX_NUM_ENTRIES = 100  
1190 -  
1191 -# If the GENERATE_DOCSET tag is set to YES, additional index files will be  
1192 -# generated that can be used as input for Apple's Xcode 3 integrated development  
1193 -# environment (see: http://developer.apple.com/tools/xcode/), introduced with  
1194 -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a  
1195 -# Makefile in the HTML output directory. Running make will produce the docset in  
1196 -# that directory and running make install will install the docset in  
1197 -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at  
1198 -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html  
1199 -# for more information.  
1200 -# The default value is: NO.  
1201 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1202 -  
1203 -GENERATE_DOCSET = NO  
1204 -  
1205 -# This tag determines the name of the docset feed. A documentation feed provides  
1206 -# an umbrella under which multiple documentation sets from a single provider  
1207 -# (such as a company or product suite) can be grouped.  
1208 -# The default value is: Doxygen generated docs.  
1209 -# This tag requires that the tag GENERATE_DOCSET is set to YES.  
1210 -  
1211 -DOCSET_FEEDNAME = "Doxygen generated docs"  
1212 -  
1213 -# This tag specifies a string that should uniquely identify the documentation  
1214 -# set bundle. This should be a reverse domain-name style string, e.g.  
1215 -# com.mycompany.MyDocSet. Doxygen will append .docset to the name.  
1216 -# The default value is: org.doxygen.Project.  
1217 -# This tag requires that the tag GENERATE_DOCSET is set to YES.  
1218 -  
1219 -DOCSET_BUNDLE_ID = org.doxygen.Project  
1220 -  
1221 -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify  
1222 -# the documentation publisher. This should be a reverse domain-name style  
1223 -# string, e.g. com.mycompany.MyDocSet.documentation.  
1224 -# The default value is: org.doxygen.Publisher.  
1225 -# This tag requires that the tag GENERATE_DOCSET is set to YES.  
1226 -  
1227 -DOCSET_PUBLISHER_ID = org.doxygen.Publisher  
1228 -  
1229 -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.  
1230 -# The default value is: Publisher.  
1231 -# This tag requires that the tag GENERATE_DOCSET is set to YES.  
1232 -  
1233 -DOCSET_PUBLISHER_NAME = Publisher  
1234 -  
1235 -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three  
1236 -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The  
1237 -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop  
1238 -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on  
1239 -# Windows.  
1240 -#  
1241 -# The HTML Help Workshop contains a compiler that can convert all HTML output  
1242 -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML  
1243 -# files are now used as the Windows 98 help format, and will replace the old  
1244 -# Windows help format (.hlp) on all Windows platforms in the future. Compressed  
1245 -# HTML files also contain an index, a table of contents, and you can search for  
1246 -# words in the documentation. The HTML workshop also contains a viewer for  
1247 -# compressed HTML files.  
1248 -# The default value is: NO.  
1249 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1250 -  
1251 -GENERATE_HTMLHELP = NO  
1252 -  
1253 -# The CHM_FILE tag can be used to specify the file name of the resulting .chm  
1254 -# file. You can add a path in front of the file if the result should not be  
1255 -# written to the html output directory.  
1256 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1257 -  
1258 -CHM_FILE =  
1259 -  
1260 -# The HHC_LOCATION tag can be used to specify the location (absolute path  
1261 -# including file name) of the HTML help compiler (hhc.exe). If non-empty,  
1262 -# doxygen will try to run the HTML help compiler on the generated index.hhp.  
1263 -# The file has to be specified with full path.  
1264 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1265 -  
1266 -HHC_LOCATION =  
1267 -  
1268 -# The GENERATE_CHI flag controls if a separate .chi index file is generated  
1269 -# (YES) or that it should be included in the master .chm file (NO).  
1270 -# The default value is: NO.  
1271 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1272 -  
1273 -GENERATE_CHI = NO  
1274 -  
1275 -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)  
1276 -# and project file content.  
1277 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1278 -  
1279 -CHM_INDEX_ENCODING =  
1280 -  
1281 -# The BINARY_TOC flag controls whether a binary table of contents is generated  
1282 -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it  
1283 -# enables the Previous and Next buttons.  
1284 -# The default value is: NO.  
1285 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1286 -  
1287 -BINARY_TOC = NO  
1288 -  
1289 -# The TOC_EXPAND flag can be set to YES to add extra items for group members to  
1290 -# the table of contents of the HTML help documentation and to the tree view.  
1291 -# The default value is: NO.  
1292 -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.  
1293 -  
1294 -TOC_EXPAND = YES  
1295 -  
1296 -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and  
1297 -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that  
1298 -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help  
1299 -# (.qch) of the generated HTML documentation.  
1300 -# The default value is: NO.  
1301 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1302 -  
1303 -GENERATE_QHP = NO  
1304 -  
1305 -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify  
1306 -# the file name of the resulting .qch file. The path specified is relative to  
1307 -# the HTML output folder.  
1308 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1309 -  
1310 -QCH_FILE =  
1311 -  
1312 -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help  
1313 -# Project output. For more information please see Qt Help Project / Namespace  
1314 -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).  
1315 -# The default value is: org.doxygen.Project.  
1316 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1317 -  
1318 -QHP_NAMESPACE = org.doxygen.Project  
1319 -  
1320 -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt  
1321 -# Help Project output. For more information please see Qt Help Project / Virtual  
1322 -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-  
1323 -# folders).  
1324 -# The default value is: doc.  
1325 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1326 -  
1327 -QHP_VIRTUAL_FOLDER = doc  
1328 -  
1329 -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom  
1330 -# filter to add. For more information please see Qt Help Project / Custom  
1331 -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-  
1332 -# filters).  
1333 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1334 -  
1335 -QHP_CUST_FILTER_NAME =  
1336 -  
1337 -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the  
1338 -# custom filter to add. For more information please see Qt Help Project / Custom  
1339 -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-  
1340 -# filters).  
1341 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1342 -  
1343 -QHP_CUST_FILTER_ATTRS =  
1344 -  
1345 -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this  
1346 -# project's filter section matches. Qt Help Project / Filter Attributes (see:  
1347 -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).  
1348 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1349 -  
1350 -QHP_SECT_FILTER_ATTRS =  
1351 -  
1352 -# The QHG_LOCATION tag can be used to specify the location of Qt's  
1353 -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the  
1354 -# generated .qhp file.  
1355 -# This tag requires that the tag GENERATE_QHP is set to YES.  
1356 -  
1357 -QHG_LOCATION =  
1358 -  
1359 -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be  
1360 -# generated, together with the HTML files, they form an Eclipse help plugin. To  
1361 -# install this plugin and make it available under the help contents menu in  
1362 -# Eclipse, the contents of the directory containing the HTML and XML files needs  
1363 -# to be copied into the plugins directory of eclipse. The name of the directory  
1364 -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.  
1365 -# After copying Eclipse needs to be restarted before the help appears.  
1366 -# The default value is: NO.  
1367 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1368 -  
1369 -GENERATE_ECLIPSEHELP = NO  
1370 -  
1371 -# A unique identifier for the Eclipse help plugin. When installing the plugin  
1372 -# the directory name containing the HTML and XML files should also have this  
1373 -# name. Each documentation set should have its own identifier.  
1374 -# The default value is: org.doxygen.Project.  
1375 -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.  
1376 -  
1377 -ECLIPSE_DOC_ID = org.doxygen.Project  
1378 -  
1379 -# If you want full control over the layout of the generated HTML pages it might  
1380 -# be necessary to disable the index and replace it with your own. The  
1381 -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top  
1382 -# of each HTML page. A value of NO enables the index and the value YES disables  
1383 -# it. Since the tabs in the index contain the same information as the navigation  
1384 -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.  
1385 -# The default value is: NO.  
1386 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1387 -  
1388 -DISABLE_INDEX = YES  
1389 -  
1390 -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index  
1391 -# structure should be generated to display hierarchical information. If the tag  
1392 -# value is set to YES, a side panel will be generated containing a tree-like  
1393 -# index structure (just like the one that is generated for HTML Help). For this  
1394 -# to work a browser that supports JavaScript, DHTML, CSS and frames is required  
1395 -# (i.e. any modern browser). Windows users are probably better off using the  
1396 -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can  
1397 -# further fine-tune the look of the index. As an example, the default style  
1398 -# sheet generated by doxygen has an example that shows how to put an image at  
1399 -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has  
1400 -# the same information as the tab index, you could consider setting  
1401 -# DISABLE_INDEX to YES when enabling this option.  
1402 -# The default value is: NO.  
1403 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1404 -  
1405 -GENERATE_TREEVIEW = YES  
1406 -  
1407 -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that  
1408 -# doxygen will group on one line in the generated HTML documentation.  
1409 -#  
1410 -# Note that a value of 0 will completely suppress the enum values from appearing  
1411 -# in the overview section.  
1412 -# Minimum value: 0, maximum value: 20, default value: 4.  
1413 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1414 -  
1415 -ENUM_VALUES_PER_LINE = 1  
1416 -  
1417 -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used  
1418 -# to set the initial width (in pixels) of the frame in which the tree is shown.  
1419 -# Minimum value: 0, maximum value: 1500, default value: 250.  
1420 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1421 -  
1422 -TREEVIEW_WIDTH = 250  
1423 -  
1424 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to  
1425 -# external symbols imported via tag files in a separate window.  
1426 -# The default value is: NO.  
1427 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1428 -  
1429 -EXT_LINKS_IN_WINDOW = NO  
1430 -  
1431 -# Use this tag to change the font size of LaTeX formulas included as images in  
1432 -# the HTML documentation. When you change the font size after a successful  
1433 -# doxygen run you need to manually remove any form_*.png images from the HTML  
1434 -# output directory to force them to be regenerated.  
1435 -# Minimum value: 8, maximum value: 50, default value: 10.  
1436 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1437 -  
1438 -FORMULA_FONTSIZE = 10  
1439 -  
1440 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images  
1441 -# generated for formulas are transparent PNGs. Transparent PNGs are not  
1442 -# supported properly for IE 6.0, but are supported on all modern browsers.  
1443 -#  
1444 -# Note that when changing this option you need to delete any form_*.png files in  
1445 -# the HTML output directory before the changes have effect.  
1446 -# The default value is: YES.  
1447 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1448 -  
1449 -FORMULA_TRANSPARENT = YES  
1450 -  
1451 -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see  
1452 -# http://www.mathjax.org) which uses client side Javascript for the rendering  
1453 -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX  
1454 -# installed or if you want to formulas look prettier in the HTML output. When  
1455 -# enabled you may also need to install MathJax separately and configure the path  
1456 -# to it using the MATHJAX_RELPATH option.  
1457 -# The default value is: NO.  
1458 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1459 -  
1460 -USE_MATHJAX = NO  
1461 -  
1462 -# When MathJax is enabled you can set the default output format to be used for  
1463 -# the MathJax output. See the MathJax site (see:  
1464 -# http://docs.mathjax.org/en/latest/output.html) for more details.  
1465 -# Possible values are: HTML-CSS (which is slower, but has the best  
1466 -# compatibility), NativeMML (i.e. MathML) and SVG.  
1467 -# The default value is: HTML-CSS.  
1468 -# This tag requires that the tag USE_MATHJAX is set to YES.  
1469 -  
1470 -MATHJAX_FORMAT = HTML-CSS  
1471 -  
1472 -# When MathJax is enabled you need to specify the location relative to the HTML  
1473 -# output directory using the MATHJAX_RELPATH option. The destination directory  
1474 -# should contain the MathJax.js script. For instance, if the mathjax directory  
1475 -# is located at the same level as the HTML output directory, then  
1476 -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax  
1477 -# Content Delivery Network so you can quickly see the result without installing  
1478 -# MathJax. However, it is strongly recommended to install a local copy of  
1479 -# MathJax from http://www.mathjax.org before deployment.  
1480 -# The default value is: http://cdn.mathjax.org/mathjax/latest.  
1481 -# This tag requires that the tag USE_MATHJAX is set to YES.  
1482 -  
1483 -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest  
1484 -  
1485 -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax  
1486 -# extension names that should be enabled during MathJax rendering. For example  
1487 -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols  
1488 -# This tag requires that the tag USE_MATHJAX is set to YES.  
1489 -  
1490 -MATHJAX_EXTENSIONS =  
1491 -  
1492 -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces  
1493 -# of code that will be used on startup of the MathJax code. See the MathJax site  
1494 -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an  
1495 -# example see the documentation.  
1496 -# This tag requires that the tag USE_MATHJAX is set to YES.  
1497 -  
1498 -MATHJAX_CODEFILE =  
1499 -  
1500 -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for  
1501 -# the HTML output. The underlying search engine uses javascript and DHTML and  
1502 -# should work on any modern browser. Note that when using HTML help  
1503 -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)  
1504 -# there is already a search function so this one should typically be disabled.  
1505 -# For large projects the javascript based search engine can be slow, then  
1506 -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to  
1507 -# search using the keyboard; to jump to the search box use <access key> + S  
1508 -# (what the <access key> is depends on the OS and browser, but it is typically  
1509 -# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down  
1510 -# key> to jump into the search results window, the results can be navigated  
1511 -# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel  
1512 -# the search. The filter options can be selected when the cursor is inside the  
1513 -# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>  
1514 -# to select a filter and <Enter> or <escape> to activate or cancel the filter  
1515 -# option.  
1516 -# The default value is: YES.  
1517 -# This tag requires that the tag GENERATE_HTML is set to YES.  
1518 -  
1519 -SEARCHENGINE = NO  
1520 -  
1521 -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be  
1522 -# implemented using a web server instead of a web client using Javascript. There  
1523 -# are two flavors of web server based searching depending on the EXTERNAL_SEARCH  
1524 -# setting. When disabled, doxygen will generate a PHP script for searching and  
1525 -# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing  
1526 -# and searching needs to be provided by external tools. See the section  
1527 -# "External Indexing and Searching" for details.  
1528 -# The default value is: NO.  
1529 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1530 -  
1531 -SERVER_BASED_SEARCH = NO  
1532 -  
1533 -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP  
1534 -# script for searching. Instead the search results are written to an XML file  
1535 -# which needs to be processed by an external indexer. Doxygen will invoke an  
1536 -# external search engine pointed to by the SEARCHENGINE_URL option to obtain the  
1537 -# search results.  
1538 -#  
1539 -# Doxygen ships with an example indexer (doxyindexer) and search engine  
1540 -# (doxysearch.cgi) which are based on the open source search engine library  
1541 -# Xapian (see: http://xapian.org/).  
1542 -#  
1543 -# See the section "External Indexing and Searching" for details.  
1544 -# The default value is: NO.  
1545 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1546 -  
1547 -EXTERNAL_SEARCH = NO  
1548 -  
1549 -# The SEARCHENGINE_URL should point to a search engine hosted by a web server  
1550 -# which will return the search results when EXTERNAL_SEARCH is enabled.  
1551 -#  
1552 -# Doxygen ships with an example indexer (doxyindexer) and search engine  
1553 -# (doxysearch.cgi) which are based on the open source search engine library  
1554 -# Xapian (see: http://xapian.org/). See the section "External Indexing and  
1555 -# Searching" for details.  
1556 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1557 -  
1558 -SEARCHENGINE_URL =  
1559 -  
1560 -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed  
1561 -# search data is written to a file for indexing by an external tool. With the  
1562 -# SEARCHDATA_FILE tag the name of this file can be specified.  
1563 -# The default file is: searchdata.xml.  
1564 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1565 -  
1566 -SEARCHDATA_FILE = searchdata.xml  
1567 -  
1568 -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the  
1569 -# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is  
1570 -# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple  
1571 -# projects and redirect the results back to the right project.  
1572 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1573 -  
1574 -EXTERNAL_SEARCH_ID =  
1575 -  
1576 -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen  
1577 -# projects other than the one defined by this configuration file, but that are  
1578 -# all added to the same external search index. Each project needs to have a  
1579 -# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of  
1580 -# to a relative location where the documentation can be found. The format is:  
1581 -# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...  
1582 -# This tag requires that the tag SEARCHENGINE is set to YES.  
1583 -  
1584 -EXTRA_SEARCH_MAPPINGS =  
1585 -  
1586 -#---------------------------------------------------------------------------  
1587 -# Configuration options related to the LaTeX output  
1588 -#---------------------------------------------------------------------------  
1589 -  
1590 -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.  
1591 -# The default value is: YES.  
1592 -  
1593 -GENERATE_LATEX = NO  
1594 -  
1595 -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a  
1596 -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of  
1597 -# it.  
1598 -# The default directory is: latex.  
1599 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1600 -  
1601 -LATEX_OUTPUT = latex  
1602 -  
1603 -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be  
1604 -# invoked.  
1605 -#  
1606 -# Note that when enabling USE_PDFLATEX this option is only used for generating  
1607 -# bitmaps for formulas in the HTML output, but not in the Makefile that is  
1608 -# written to the output directory.  
1609 -# The default file is: latex.  
1610 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1611 -  
1612 -LATEX_CMD_NAME = latex  
1613 -  
1614 -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate  
1615 -# index for LaTeX.  
1616 -# The default file is: makeindex.  
1617 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1618 -  
1619 -MAKEINDEX_CMD_NAME = makeindex  
1620 -  
1621 -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX  
1622 -# documents. This may be useful for small projects and may help to save some  
1623 -# trees in general.  
1624 -# The default value is: NO.  
1625 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1626 -  
1627 -COMPACT_LATEX = NO  
1628 -  
1629 -# The PAPER_TYPE tag can be used to set the paper type that is used by the  
1630 -# printer.  
1631 -# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x  
1632 -# 14 inches) and executive (7.25 x 10.5 inches).  
1633 -# The default value is: a4.  
1634 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1635 -  
1636 -PAPER_TYPE = a4wide  
1637 -  
1638 -# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names  
1639 -# that should be included in the LaTeX output. To get the times font for  
1640 -# instance you can specify  
1641 -# EXTRA_PACKAGES=times  
1642 -# If left blank no extra packages will be included.  
1643 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1644 -  
1645 -EXTRA_PACKAGES =  
1646 -  
1647 -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the  
1648 -# generated LaTeX document. The header should contain everything until the first  
1649 -# chapter. If it is left blank doxygen will generate a standard header. See  
1650 -# section "Doxygen usage" for information on how to let doxygen write the  
1651 -# default header to a separate file.  
1652 -#  
1653 -# Note: Only use a user-defined header if you know what you are doing! The  
1654 -# following commands have a special meaning inside the header: $title,  
1655 -# $datetime, $date, $doxygenversion, $projectname, $projectnumber,  
1656 -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty  
1657 -# string, for the replacement values of the other commands the user is referred  
1658 -# to HTML_HEADER.  
1659 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1660 -  
1661 -LATEX_HEADER =  
1662 -  
1663 -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the  
1664 -# generated LaTeX document. The footer should contain everything after the last  
1665 -# chapter. If it is left blank doxygen will generate a standard footer. See  
1666 -# LATEX_HEADER for more information on how to generate a default footer and what  
1667 -# special commands can be used inside the footer.  
1668 -#  
1669 -# Note: Only use a user-defined footer if you know what you are doing!  
1670 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1671 -  
1672 -LATEX_FOOTER =  
1673 -  
1674 -# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined  
1675 -# LaTeX style sheets that are included after the standard style sheets created  
1676 -# by doxygen. Using this option one can overrule certain style aspects. Doxygen  
1677 -# will copy the style sheet files to the output directory.  
1678 -# Note: The order of the extra style sheet files is of importance (e.g. the last  
1679 -# style sheet in the list overrules the setting of the previous ones in the  
1680 -# list).  
1681 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1682 -  
1683 -LATEX_EXTRA_STYLESHEET =  
1684 -  
1685 -# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or  
1686 -# other source files which should be copied to the LATEX_OUTPUT output  
1687 -# directory. Note that the files will be copied as-is; there are no commands or  
1688 -# markers available.  
1689 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1690 -  
1691 -LATEX_EXTRA_FILES =  
1692 -  
1693 -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is  
1694 -# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will  
1695 -# contain links (just like the HTML output) instead of page references. This  
1696 -# makes the output suitable for online browsing using a PDF viewer.  
1697 -# The default value is: YES.  
1698 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1699 -  
1700 -PDF_HYPERLINKS = YES  
1701 -  
1702 -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate  
1703 -# the PDF file directly from the LaTeX files. Set this option to YES, to get a  
1704 -# higher quality PDF documentation.  
1705 -# The default value is: YES.  
1706 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1707 -  
1708 -USE_PDFLATEX = YES  
1709 -  
1710 -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode  
1711 -# command to the generated LaTeX files. This will instruct LaTeX to keep running  
1712 -# if errors occur, instead of asking the user for help. This option is also used  
1713 -# when generating formulas in HTML.  
1714 -# The default value is: NO.  
1715 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1716 -  
1717 -LATEX_BATCHMODE = NO  
1718 -  
1719 -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the  
1720 -# index chapters (such as File Index, Compound Index, etc.) in the output.  
1721 -# The default value is: NO.  
1722 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1723 -  
1724 -LATEX_HIDE_INDICES = NO  
1725 -  
1726 -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source  
1727 -# code with syntax highlighting in the LaTeX output.  
1728 -#  
1729 -# Note that which sources are shown also depends on other settings such as  
1730 -# SOURCE_BROWSER.  
1731 -# The default value is: NO.  
1732 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1733 -  
1734 -LATEX_SOURCE_CODE = NO  
1735 -  
1736 -# The LATEX_BIB_STYLE tag can be used to specify the style to use for the  
1737 -# bibliography, e.g. plainnat, or ieeetr. See  
1738 -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.  
1739 -# The default value is: plain.  
1740 -# This tag requires that the tag GENERATE_LATEX is set to YES.  
1741 -  
1742 -LATEX_BIB_STYLE = plain  
1743 -  
1744 -#---------------------------------------------------------------------------  
1745 -# Configuration options related to the RTF output  
1746 -#---------------------------------------------------------------------------  
1747 -  
1748 -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The  
1749 -# RTF output is optimized for Word 97 and may not look too pretty with other RTF  
1750 -# readers/editors.  
1751 -# The default value is: NO.  
1752 -  
1753 -GENERATE_RTF = NO  
1754 -  
1755 -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a  
1756 -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of  
1757 -# it.  
1758 -# The default directory is: rtf.  
1759 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1760 -  
1761 -RTF_OUTPUT = rtf  
1762 -  
1763 -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF  
1764 -# documents. This may be useful for small projects and may help to save some  
1765 -# trees in general.  
1766 -# The default value is: NO.  
1767 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1768 -  
1769 -COMPACT_RTF = NO  
1770 -  
1771 -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will  
1772 -# contain hyperlink fields. The RTF file will contain links (just like the HTML  
1773 -# output) instead of page references. This makes the output suitable for online  
1774 -# browsing using Word or some other Word compatible readers that support those  
1775 -# fields.  
1776 -#  
1777 -# Note: WordPad (write) and others do not support links.  
1778 -# The default value is: NO.  
1779 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1780 -  
1781 -RTF_HYPERLINKS = NO  
1782 -  
1783 -# Load stylesheet definitions from file. Syntax is similar to doxygen's config  
1784 -# file, i.e. a series of assignments. You only have to provide replacements,  
1785 -# missing definitions are set to their default value.  
1786 -#  
1787 -# See also section "Doxygen usage" for information on how to generate the  
1788 -# default style sheet that doxygen normally uses.  
1789 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1790 -  
1791 -RTF_STYLESHEET_FILE =  
1792 -  
1793 -# Set optional variables used in the generation of an RTF document. Syntax is  
1794 -# similar to doxygen's config file. A template extensions file can be generated  
1795 -# using doxygen -e rtf extensionFile.  
1796 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1797 -  
1798 -RTF_EXTENSIONS_FILE =  
1799 -  
1800 -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code  
1801 -# with syntax highlighting in the RTF output.  
1802 -#  
1803 -# Note that which sources are shown also depends on other settings such as  
1804 -# SOURCE_BROWSER.  
1805 -# The default value is: NO.  
1806 -# This tag requires that the tag GENERATE_RTF is set to YES.  
1807 -  
1808 -RTF_SOURCE_CODE = NO  
1809 -  
1810 -#---------------------------------------------------------------------------  
1811 -# Configuration options related to the man page output  
1812 -#---------------------------------------------------------------------------  
1813 -  
1814 -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for  
1815 -# classes and files.  
1816 -# The default value is: NO.  
1817 -  
1818 -GENERATE_MAN = NO  
1819 -  
1820 -# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a  
1821 -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of  
1822 -# it. A directory man3 will be created inside the directory specified by  
1823 -# MAN_OUTPUT.  
1824 -# The default directory is: man.  
1825 -# This tag requires that the tag GENERATE_MAN is set to YES.  
1826 -  
1827 -MAN_OUTPUT = man  
1828 -  
1829 -# The MAN_EXTENSION tag determines the extension that is added to the generated  
1830 -# man pages. In case the manual section does not start with a number, the number  
1831 -# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is  
1832 -# optional.  
1833 -# The default value is: .3.  
1834 -# This tag requires that the tag GENERATE_MAN is set to YES.  
1835 -  
1836 -MAN_EXTENSION = .3  
1837 -  
1838 -# The MAN_SUBDIR tag determines the name of the directory created within  
1839 -# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by  
1840 -# MAN_EXTENSION with the initial . removed.  
1841 -# This tag requires that the tag GENERATE_MAN is set to YES.  
1842 -  
1843 -MAN_SUBDIR =  
1844 -  
1845 -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it  
1846 -# will generate one additional man file for each entity documented in the real  
1847 -# man page(s). These additional files only source the real man page, but without  
1848 -# them the man command would be unable to find the correct page.  
1849 -# The default value is: NO.  
1850 -# This tag requires that the tag GENERATE_MAN is set to YES.  
1851 -  
1852 -MAN_LINKS = NO  
1853 -  
1854 -#---------------------------------------------------------------------------  
1855 -# Configuration options related to the XML output  
1856 -#---------------------------------------------------------------------------  
1857 -  
1858 -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that  
1859 -# captures the structure of the code including all documentation.  
1860 -# The default value is: NO.  
1861 -  
1862 -GENERATE_XML = NO  
1863 -  
1864 -# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a  
1865 -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of  
1866 -# it.  
1867 -# The default directory is: xml.  
1868 -# This tag requires that the tag GENERATE_XML is set to YES.  
1869 -  
1870 -XML_OUTPUT = xml  
1871 -  
1872 -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program  
1873 -# listings (including syntax highlighting and cross-referencing information) to  
1874 -# the XML output. Note that enabling this will significantly increase the size  
1875 -# of the XML output.  
1876 -# The default value is: YES.  
1877 -# This tag requires that the tag GENERATE_XML is set to YES.  
1878 -  
1879 -XML_PROGRAMLISTING = YES  
1880 -  
1881 -#---------------------------------------------------------------------------  
1882 -# Configuration options related to the DOCBOOK output  
1883 -#---------------------------------------------------------------------------  
1884 -  
1885 -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files  
1886 -# that can be used to generate PDF.  
1887 -# The default value is: NO.  
1888 -  
1889 -GENERATE_DOCBOOK = NO  
1890 -  
1891 -# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.  
1892 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in  
1893 -# front of it.  
1894 -# The default directory is: docbook.  
1895 -# This tag requires that the tag GENERATE_DOCBOOK is set to YES.  
1896 -  
1897 -DOCBOOK_OUTPUT = docbook  
1898 -  
1899 -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the  
1900 -# program listings (including syntax highlighting and cross-referencing  
1901 -# information) to the DOCBOOK output. Note that enabling this will significantly  
1902 -# increase the size of the DOCBOOK output.  
1903 -# The default value is: NO.  
1904 -# This tag requires that the tag GENERATE_DOCBOOK is set to YES.  
1905 -  
1906 -DOCBOOK_PROGRAMLISTING = NO  
1907 -  
1908 -#---------------------------------------------------------------------------  
1909 -# Configuration options for the AutoGen Definitions output  
1910 -#---------------------------------------------------------------------------  
1911 -  
1912 -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an  
1913 -# AutoGen Definitions (see http://autogen.sf.net) file that captures the  
1914 -# structure of the code including all documentation. Note that this feature is  
1915 -# still experimental and incomplete at the moment.  
1916 -# The default value is: NO.  
1917 -  
1918 -GENERATE_AUTOGEN_DEF = NO  
1919 -  
1920 -#---------------------------------------------------------------------------  
1921 -# Configuration options related to the Perl module output  
1922 -#---------------------------------------------------------------------------  
1923 -  
1924 -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module  
1925 -# file that captures the structure of the code including all documentation.  
1926 -#  
1927 -# Note that this feature is still experimental and incomplete at the moment.  
1928 -# The default value is: NO.  
1929 -  
1930 -GENERATE_PERLMOD = NO  
1931 -  
1932 -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary  
1933 -# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI  
1934 -# output from the Perl module output.  
1935 -# The default value is: NO.  
1936 -# This tag requires that the tag GENERATE_PERLMOD is set to YES.  
1937 -  
1938 -PERLMOD_LATEX = NO  
1939 -  
1940 -# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely  
1941 -# formatted so it can be parsed by a human reader. This is useful if you want to  
1942 -# understand what is going on. On the other hand, if this tag is set to NO, the  
1943 -# size of the Perl module output will be much smaller and Perl will parse it  
1944 -# just the same.  
1945 -# The default value is: YES.  
1946 -# This tag requires that the tag GENERATE_PERLMOD is set to YES.  
1947 -  
1948 -PERLMOD_PRETTY = YES  
1949 -  
1950 -# The names of the make variables in the generated doxyrules.make file are  
1951 -# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful  
1952 -# so different doxyrules.make files included by the same Makefile don't  
1953 -# overwrite each other's variables.  
1954 -# This tag requires that the tag GENERATE_PERLMOD is set to YES.  
1955 -  
1956 -PERLMOD_MAKEVAR_PREFIX =  
1957 -  
1958 -#---------------------------------------------------------------------------  
1959 -# Configuration options related to the preprocessor  
1960 -#---------------------------------------------------------------------------  
1961 -  
1962 -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all  
1963 -# C-preprocessor directives found in the sources and include files.  
1964 -# The default value is: YES.  
1965 -  
1966 -ENABLE_PREPROCESSING = YES  
1967 -  
1968 -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names  
1969 -# in the source code. If set to NO, only conditional compilation will be  
1970 -# performed. Macro expansion can be done in a controlled way by setting  
1971 -# EXPAND_ONLY_PREDEF to YES.  
1972 -# The default value is: NO.  
1973 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
1974 -  
1975 -MACRO_EXPANSION = YES  
1976 -  
1977 -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then  
1978 -# the macro expansion is limited to the macros specified with the PREDEFINED and  
1979 -# EXPAND_AS_DEFINED tags.  
1980 -# The default value is: NO.  
1981 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
1982 -  
1983 -EXPAND_ONLY_PREDEF = YES  
1984 -  
1985 -# If the SEARCH_INCLUDES tag is set to YES, the include files in the  
1986 -# INCLUDE_PATH will be searched if a #include is found.  
1987 -# The default value is: YES.  
1988 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
1989 -  
1990 -SEARCH_INCLUDES = YES  
1991 -  
1992 -# The INCLUDE_PATH tag can be used to specify one or more directories that  
1993 -# contain include files that are not input files but should be processed by the  
1994 -# preprocessor.  
1995 -# This tag requires that the tag SEARCH_INCLUDES is set to YES.  
1996 -  
1997 -INCLUDE_PATH =  
1998 -  
1999 -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard  
2000 -# patterns (like *.h and *.hpp) to filter out the header-files in the  
2001 -# directories. If left blank, the patterns specified with FILE_PATTERNS will be  
2002 -# used.  
2003 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
2004 -  
2005 -INCLUDE_FILE_PATTERNS =  
2006 -  
2007 -# The PREDEFINED tag can be used to specify one or more macro names that are  
2008 -# defined before the preprocessor is started (similar to the -D option of e.g.  
2009 -# gcc). The argument of the tag is a list of macros of the form: name or  
2010 -# name=definition (no spaces). If the definition and the "=" are omitted, "=1"  
2011 -# is assumed. To prevent a macro definition from being undefined via #undef or  
2012 -# recursively expanded use the := operator instead of the = operator.  
2013 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
2014 -  
2015 -PREDEFINED = __DOXYGEN__ \  
2016 - PROGMEM  
2017 -  
2018 -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this  
2019 -# tag can be used to specify a list of macro names that should be expanded. The  
2020 -# macro definition that is found in the sources will be used. Use the PREDEFINED  
2021 -# tag if you want to use a different macro definition that overrules the  
2022 -# definition found in the source code.  
2023 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
2024 -  
2025 -EXPAND_AS_DEFINED =  
2026 -  
2027 -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will  
2028 -# remove all references to function-like macros that are alone on a line, have  
2029 -# an all uppercase name, and do not end with a semicolon. Such function macros  
2030 -# are typically used for boiler-plate code, and will confuse the parser if not  
2031 -# removed.  
2032 -# The default value is: YES.  
2033 -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.  
2034 -  
2035 -SKIP_FUNCTION_MACROS = YES  
2036 -  
2037 -#---------------------------------------------------------------------------  
2038 -# Configuration options related to external references  
2039 -#---------------------------------------------------------------------------  
2040 -  
2041 -# The TAGFILES tag can be used to specify one or more tag files. For each tag  
2042 -# file the location of the external documentation should be added. The format of  
2043 -# a tag file without this location is as follows:  
2044 -# TAGFILES = file1 file2 ...  
2045 -# Adding location for the tag files is done as follows:  
2046 -# TAGFILES = file1=loc1 "file2 = loc2" ...  
2047 -# where loc1 and loc2 can be relative or absolute paths or URLs. See the  
2048 -# section "Linking to external documentation" for more information about the use  
2049 -# of tag files.  
2050 -# Note: Each tag file must have a unique name (where the name does NOT include  
2051 -# the path). If a tag file is not located in the directory in which doxygen is  
2052 -# run, you must also specify the path to the tagfile here.  
2053 -  
2054 -TAGFILES =  
2055 -  
2056 -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a  
2057 -# tag file that is based on the input files it reads. See section "Linking to  
2058 -# external documentation" for more information about the usage of tag files.  
2059 -  
2060 -GENERATE_TAGFILE =  
2061 -  
2062 -# If the ALLEXTERNALS tag is set to YES, all external class will be listed in  
2063 -# the class index. If set to NO, only the inherited external classes will be  
2064 -# listed.  
2065 -# The default value is: NO.  
2066 -  
2067 -ALLEXTERNALS = NO  
2068 -  
2069 -# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed  
2070 -# in the modules index. If set to NO, only the current project's groups will be  
2071 -# listed.  
2072 -# The default value is: YES.  
2073 -  
2074 -EXTERNAL_GROUPS = YES  
2075 -  
2076 -# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in  
2077 -# the related pages index. If set to NO, only the current project's pages will  
2078 -# be listed.  
2079 -# The default value is: YES.  
2080 -  
2081 -EXTERNAL_PAGES = YES  
2082 -  
2083 -# The PERL_PATH should be the absolute path and name of the perl script  
2084 -# interpreter (i.e. the result of 'which perl').  
2085 -# The default file (with absolute path) is: /usr/bin/perl.  
2086 -  
2087 -PERL_PATH = /usr/bin/perl  
2088 -  
2089 -#---------------------------------------------------------------------------  
2090 -# Configuration options related to the dot tool  
2091 -#---------------------------------------------------------------------------  
2092 -  
2093 -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram  
2094 -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to  
2095 -# NO turns the diagrams off. Note that this option also works with HAVE_DOT  
2096 -# disabled, but it is recommended to install and use dot, since it yields more  
2097 -# powerful graphs.  
2098 -# The default value is: YES.  
2099 -  
2100 -CLASS_DIAGRAMS = NO  
2101 -  
2102 -# You can define message sequence charts within doxygen comments using the \msc  
2103 -# command. Doxygen will then run the mscgen tool (see:  
2104 -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the  
2105 -# documentation. The MSCGEN_PATH tag allows you to specify the directory where  
2106 -# the mscgen tool resides. If left empty the tool is assumed to be found in the  
2107 -# default search path.  
2108 -  
2109 -MSCGEN_PATH =  
2110 -  
2111 -# You can include diagrams made with dia in doxygen documentation. Doxygen will  
2112 -# then run dia to produce the diagram and insert it in the documentation. The  
2113 -# DIA_PATH tag allows you to specify the directory where the dia binary resides.  
2114 -# If left empty dia is assumed to be found in the default search path.  
2115 -  
2116 -DIA_PATH =  
2117 -  
2118 -# If set to YES the inheritance and collaboration graphs will hide inheritance  
2119 -# and usage relations if the target is undocumented or is not a class.  
2120 -# The default value is: YES.  
2121 -  
2122 -HIDE_UNDOC_RELATIONS = YES  
2123 -  
2124 -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is  
2125 -# available from the path. This tool is part of Graphviz (see:  
2126 -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent  
2127 -# Bell Labs. The other options in this section have no effect if this option is  
2128 -# set to NO  
2129 -# The default value is: NO.  
2130 -  
2131 -HAVE_DOT = NO  
2132 -  
2133 -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed  
2134 -# to run in parallel. When set to 0 doxygen will base this on the number of  
2135 -# processors available in the system. You can set it explicitly to a value  
2136 -# larger than 0 to get control over the balance between CPU load and processing  
2137 -# speed.  
2138 -# Minimum value: 0, maximum value: 32, default value: 0.  
2139 -# This tag requires that the tag HAVE_DOT is set to YES.  
2140 -  
2141 -DOT_NUM_THREADS = 0  
2142 -  
2143 -# When you want a differently looking font in the dot files that doxygen  
2144 -# generates you can specify the font name using DOT_FONTNAME. You need to make  
2145 -# sure dot is able to find the font, which can be done by putting it in a  
2146 -# standard location or by setting the DOTFONTPATH environment variable or by  
2147 -# setting DOT_FONTPATH to the directory containing the font.  
2148 -# The default value is: Helvetica.  
2149 -# This tag requires that the tag HAVE_DOT is set to YES.  
2150 -  
2151 -DOT_FONTNAME =  
2152 -  
2153 -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of  
2154 -# dot graphs.  
2155 -# Minimum value: 4, maximum value: 24, default value: 10.  
2156 -# This tag requires that the tag HAVE_DOT is set to YES.  
2157 -  
2158 -DOT_FONTSIZE = 10  
2159 -  
2160 -# By default doxygen will tell dot to use the default font as specified with  
2161 -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set  
2162 -# the path where dot can find it using this tag.  
2163 -# This tag requires that the tag HAVE_DOT is set to YES.  
2164 -  
2165 -DOT_FONTPATH =  
2166 -  
2167 -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for  
2168 -# each documented class showing the direct and indirect inheritance relations.  
2169 -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.  
2170 -# The default value is: YES.  
2171 -# This tag requires that the tag HAVE_DOT is set to YES.  
2172 -  
2173 -CLASS_GRAPH = NO  
2174 -  
2175 -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a  
2176 -# graph for each documented class showing the direct and indirect implementation  
2177 -# dependencies (inheritance, containment, and class references variables) of the  
2178 -# class with other documented classes.  
2179 -# The default value is: YES.  
2180 -# This tag requires that the tag HAVE_DOT is set to YES.  
2181 -  
2182 -COLLABORATION_GRAPH = NO  
2183 -  
2184 -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for  
2185 -# groups, showing the direct groups dependencies.  
2186 -# The default value is: YES.  
2187 -# This tag requires that the tag HAVE_DOT is set to YES.  
2188 -  
2189 -GROUP_GRAPHS = NO  
2190 -  
2191 -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and  
2192 -# collaboration diagrams in a style similar to the OMG's Unified Modeling  
2193 -# Language.  
2194 -# The default value is: NO.  
2195 -# This tag requires that the tag HAVE_DOT is set to YES.  
2196 -  
2197 -UML_LOOK = NO  
2198 -  
2199 -# If the UML_LOOK tag is enabled, the fields and methods are shown inside the  
2200 -# class node. If there are many fields or methods and many nodes the graph may  
2201 -# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the  
2202 -# number of items for each type to make the size more manageable. Set this to 0  
2203 -# for no limit. Note that the threshold may be exceeded by 50% before the limit  
2204 -# is enforced. So when you set the threshold to 10, up to 15 fields may appear,  
2205 -# but if the number exceeds 15, the total amount of fields shown is limited to  
2206 -# 10.  
2207 -# Minimum value: 0, maximum value: 100, default value: 10.  
2208 -# This tag requires that the tag HAVE_DOT is set to YES.  
2209 -  
2210 -UML_LIMIT_NUM_FIELDS = 10  
2211 -  
2212 -# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and  
2213 -# collaboration graphs will show the relations between templates and their  
2214 -# instances.  
2215 -# The default value is: NO.  
2216 -# This tag requires that the tag HAVE_DOT is set to YES.  
2217 -  
2218 -TEMPLATE_RELATIONS = NO  
2219 -  
2220 -# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to  
2221 -# YES then doxygen will generate a graph for each documented file showing the  
2222 -# direct and indirect include dependencies of the file with other documented  
2223 -# files.  
2224 -# The default value is: YES.  
2225 -# This tag requires that the tag HAVE_DOT is set to YES.  
2226 -  
2227 -INCLUDE_GRAPH = NO  
2228 -  
2229 -# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are  
2230 -# set to YES then doxygen will generate a graph for each documented file showing  
2231 -# the direct and indirect include dependencies of the file with other documented  
2232 -# files.  
2233 -# The default value is: YES.  
2234 -# This tag requires that the tag HAVE_DOT is set to YES.  
2235 -  
2236 -INCLUDED_BY_GRAPH = NO  
2237 -  
2238 -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call  
2239 -# dependency graph for every global function or class method.  
2240 -#  
2241 -# Note that enabling this option will significantly increase the time of a run.  
2242 -# So in most cases it will be better to enable call graphs for selected  
2243 -# functions only using the \callgraph command.  
2244 -# The default value is: NO.  
2245 -# This tag requires that the tag HAVE_DOT is set to YES.  
2246 -  
2247 -CALL_GRAPH = NO  
2248 -  
2249 -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller  
2250 -# dependency graph for every global function or class method.  
2251 -#  
2252 -# Note that enabling this option will significantly increase the time of a run.  
2253 -# So in most cases it will be better to enable caller graphs for selected  
2254 -# functions only using the \callergraph command.  
2255 -# The default value is: NO.  
2256 -# This tag requires that the tag HAVE_DOT is set to YES.  
2257 -  
2258 -CALLER_GRAPH = NO  
2259 -  
2260 -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical  
2261 -# hierarchy of all classes instead of a textual one.  
2262 -# The default value is: YES.  
2263 -# This tag requires that the tag HAVE_DOT is set to YES.  
2264 -  
2265 -GRAPHICAL_HIERARCHY = NO  
2266 -  
2267 -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the  
2268 -# dependencies a directory has on other directories in a graphical way. The  
2269 -# dependency relations are determined by the #include relations between the  
2270 -# files in the directories.  
2271 -# The default value is: YES.  
2272 -# This tag requires that the tag HAVE_DOT is set to YES.  
2273 -  
2274 -DIRECTORY_GRAPH = NO  
2275 -  
2276 -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images  
2277 -# generated by dot.  
2278 -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order  
2279 -# to make the SVG files visible in IE 9+ (other browsers do not have this  
2280 -# requirement).  
2281 -# Possible values are: png, jpg, gif and svg.  
2282 -# The default value is: png.  
2283 -# This tag requires that the tag HAVE_DOT is set to YES.  
2284 -  
2285 -DOT_IMAGE_FORMAT = png  
2286 -  
2287 -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to  
2288 -# enable generation of interactive SVG images that allow zooming and panning.  
2289 -#  
2290 -# Note that this requires a modern browser other than Internet Explorer. Tested  
2291 -# and working are Firefox, Chrome, Safari, and Opera.  
2292 -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make  
2293 -# the SVG files visible. Older versions of IE do not have SVG support.  
2294 -# The default value is: NO.  
2295 -# This tag requires that the tag HAVE_DOT is set to YES.  
2296 -  
2297 -INTERACTIVE_SVG = NO  
2298 -  
2299 -# The DOT_PATH tag can be used to specify the path where the dot tool can be  
2300 -# found. If left blank, it is assumed the dot tool can be found in the path.  
2301 -# This tag requires that the tag HAVE_DOT is set to YES.  
2302 -  
2303 -DOT_PATH =  
2304 -  
2305 -# The DOTFILE_DIRS tag can be used to specify one or more directories that  
2306 -# contain dot files that are included in the documentation (see the \dotfile  
2307 -# command).  
2308 -# This tag requires that the tag HAVE_DOT is set to YES.  
2309 -  
2310 -DOTFILE_DIRS =  
2311 -  
2312 -# The MSCFILE_DIRS tag can be used to specify one or more directories that  
2313 -# contain msc files that are included in the documentation (see the \mscfile  
2314 -# command).  
2315 -  
2316 -MSCFILE_DIRS =  
2317 -  
2318 -# The DIAFILE_DIRS tag can be used to specify one or more directories that  
2319 -# contain dia files that are included in the documentation (see the \diafile  
2320 -# command).  
2321 -  
2322 -DIAFILE_DIRS =  
2323 -  
2324 -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the  
2325 -# path where java can find the plantuml.jar file. If left blank, it is assumed  
2326 -# PlantUML is not used or called during a preprocessing step. Doxygen will  
2327 -# generate a warning when it encounters a \startuml command in this case and  
2328 -# will not generate output for the diagram.  
2329 -  
2330 -PLANTUML_JAR_PATH =  
2331 -  
2332 -# When using plantuml, the specified paths are searched for files specified by  
2333 -# the !include statement in a plantuml block.  
2334 -  
2335 -PLANTUML_INCLUDE_PATH =  
2336 -  
2337 -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes  
2338 -# that will be shown in the graph. If the number of nodes in a graph becomes  
2339 -# larger than this value, doxygen will truncate the graph, which is visualized  
2340 -# by representing a node as a red box. Note that doxygen if the number of direct  
2341 -# children of the root node in a graph is already larger than  
2342 -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that  
2343 -# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.  
2344 -# Minimum value: 0, maximum value: 10000, default value: 50.  
2345 -# This tag requires that the tag HAVE_DOT is set to YES.  
2346 -  
2347 -DOT_GRAPH_MAX_NODES = 15  
2348 -  
2349 -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs  
2350 -# generated by dot. A depth value of 3 means that only nodes reachable from the  
2351 -# root by following a path via at most 3 edges will be shown. Nodes that lay  
2352 -# further from the root node will be omitted. Note that setting this option to 1  
2353 -# or 2 may greatly reduce the computation time needed for large code bases. Also  
2354 -# note that the size of a graph can be further restricted by  
2355 -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.  
2356 -# Minimum value: 0, maximum value: 1000, default value: 0.  
2357 -# This tag requires that the tag HAVE_DOT is set to YES.  
2358 -  
2359 -MAX_DOT_GRAPH_DEPTH = 2  
2360 -  
2361 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent  
2362 -# background. This is disabled by default, because dot on Windows does not seem  
2363 -# to support this out of the box.  
2364 -#  
2365 -# Warning: Depending on the platform used, enabling this option may lead to  
2366 -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to  
2367 -# read).  
2368 -# The default value is: NO.  
2369 -# This tag requires that the tag HAVE_DOT is set to YES.  
2370 -  
2371 -DOT_TRANSPARENT = YES  
2372 -  
2373 -# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output  
2374 -# files in one run (i.e. multiple -o and -T options on the command line). This  
2375 -# makes dot run faster, but since only newer versions of dot (>1.8.10) support  
2376 -# this, this feature is disabled by default.  
2377 -# The default value is: NO.  
2378 -# This tag requires that the tag HAVE_DOT is set to YES.  
2379 -  
2380 -DOT_MULTI_TARGETS = NO  
2381 -  
2382 -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page  
2383 -# explaining the meaning of the various boxes and arrows in the dot generated  
2384 -# graphs.  
2385 -# The default value is: YES.  
2386 -# This tag requires that the tag HAVE_DOT is set to YES.  
2387 -  
2388 -GENERATE_LEGEND = YES  
2389 -  
2390 -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot  
2391 -# files that are used to generate the various graphs.  
2392 -# The default value is: YES.  
2393 -# This tag requires that the tag HAVE_DOT is set to YES.  
2394 -  
2395 -DOT_CLEANUP = YES  
lufa/makefile deleted
@@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
1 -#  
2 -# LUFA Library  
3 -# Copyright (C) Dean Camera, 2017.  
4 -#  
5 -# dean [at] fourwalledcubicle [dot] com  
6 -# www.lufa-lib.org  
7 -#  
8 -# --------------------------------------  
9 -# LUFA Project Makefile.  
10 -# --------------------------------------  
11 -  
12 -# Run "make help" for target help.  
13 -  
14 -MCU = at90usb1287  
15 -ARCH = AVR8  
16 -BOARD = USBKEY  
17 -F_CPU = 8000000  
18 -F_USB = $(F_CPU)  
19 -OPTIMIZATION = s  
20 -TARGET = USB_gadget  
21 -SRC = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)  
22 -LUFA_PATH = ../../LUFA  
23 -CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/  
24 -LD_FLAGS =  
25 -  
26 -# Default target  
27 -all:  
28 -  
29 -# Include LUFA-specific DMBS extension modules  
30 -DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA  
31 -include $(DMBS_LUFA_PATH)/lufa-sources.mk  
32 -include $(DMBS_LUFA_PATH)/lufa-gcc.mk  
33 -  
34 -# Include common DMBS build system modules  
35 -DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS  
36 -include $(DMBS_PATH)/core.mk  
37 -include $(DMBS_PATH)/cppcheck.mk  
38 -include $(DMBS_PATH)/doxygen.mk  
39 -include $(DMBS_PATH)/dfu.mk  
40 -include $(DMBS_PATH)/gcc.mk  
41 -include $(DMBS_PATH)/hid.mk  
42 -include $(DMBS_PATH)/avrdude.mk  
43 -include $(DMBS_PATH)/atprogram.mk