diff --git a/.USB_gadget.c.swp b/.USB_gadget.c.swp new file mode 100644 index 0000000..1adce5e Binary files /dev/null and b/.USB_gadget.c.swp differ diff --git a/gadget/USB_gadget.bin b/gadget/USB_gadget.bin deleted file mode 100755 index 9172cba..0000000 Binary files a/gadget/USB_gadget.bin and /dev/null differ diff --git a/gadget/USB_gadget.eep b/gadget/USB_gadget.eep deleted file mode 100644 index 1996e8f..0000000 --- a/gadget/USB_gadget.eep +++ /dev/null @@ -1 +0,0 @@ -:00000001FF diff --git a/gadget/USB_gadget.elf b/gadget/USB_gadget.elf deleted file mode 100755 index 0199160..0000000 Binary files a/gadget/USB_gadget.elf and /dev/null differ diff --git a/gadget/USB_gadget.hex b/gadget/USB_gadget.hex deleted file mode 100644 index 6a8cfe1..0000000 --- a/gadget/USB_gadget.hex +++ /dev/null @@ -1,258 +0,0 @@ -:1000000088C00000A1C000009FC000009DC000008B -:100010009BC0000099C0000097C0000095C0000080 -:1000200093C0000091C000008FC00000F9C3000021 -:100030009CC4000089C0000087C0000085C000008B -:1000400083C0000081C000007FC000007DC00000B0 -:100050007BC0000079C0000077C000006AC10000CA -:1000600073C0000071C000006FC000006DC00000D0 -:100070006BC000002E034C005500460041002000DC -:100080005500530042002D0052005300320033004F -:1000900032002000410064006100700074006500BF -:1000A0007200000018034400650061006E0020002B -:1000B000430061006D0065007200610000000403F0 -:1000C000090409023E00020100C0320904000001D7 -:1000D0000202010005240010010424020605240682 -:1000E0000001070582030800FF09040100020A005D -:1000F0000000070504021000050705830210000533 -:100100001201100102000008EB034B200100010264 -:10011000DC0111241FBECFEFD2E0DEBFCDBF11E066 -:10012000A0E0B1E0E0EFFFE002C005900D92AC313D -:10013000B107D9F722E0ACE1B1E001C01D92A034D3 -:10014000B207E1F75AD052C75BCF9BB1809590635D -:1001500089238BB90895FC01A081B1816C938081C2 -:10016000918101969183808326813781821793073D -:1001700021F484819581918380832FB7F8948285BF -:1001800093850196938782872FBF0895FC01A281F2 -:10019000B3818D91B383A28326813781A217B307E0 -:1001A00021F424813581338322839FB7F8942285FB -:1001B000338521503109338722879FBF089584B743 -:1001C000877F84BF0FB6F894A895809160008861FE -:1001D00080936000109260000FBE90E080E80FB640 -:1001E000F89480936100909361000FBE8AB18063A0 -:1001F0008AB98BB180638BB904C3E1DFE8E2F2E036 -:100200004FB7F89488EA91E0918380839383828347 -:100210009583848388E292E09783868320E830E0A8 -:1002200031872087138612864FBFECE9F1E04FB784 -:10023000F8948CE191E0918380839383828395830A -:1002400084838CE991E097838683318720871386A6 -:1002500012864FBF80E279DF78948FB7F8942091AF -:100260003202309133028FBF80913002909131027F -:100270002817390749F080E091E0BAD597FD04C00E -:10028000682F88E292E067DF2FB7F8948091A6018B -:100290009091A7012FBF009729F48091C80085FD98 -:1002A00021C032C0209101012F702093E9002091DC -:1002B000E80020FFF2CF8031910510F08FE090E050 -:1002C000C82FE0919E01F0919F01608180E091E054 -:1002D00027D5C1508111E1CF8CE991E057DFC111E1 -:1002E000F0CFDBCF2FB7F894809132029091330298 -:1002F0002FBF892B49F088E292E048DF9091C80037 -:1003000095FFFCCF8093CE0080E091E05CD5CAD40D -:10031000A4CF80E11ACF80E218CF80E091E0DBD457 -:10032000811102C080E201C080E10FCF80E091E046 -:100330008CC51F920F920FB60F9211242F933F93EB -:100340004F935F936F937F938F939F93AF93BF93DD -:10035000EF93FF936091CE008EB3843089F48FB712 -:10036000F8942091A6013091A7018FBF8091A4013C -:100370009091A5012817390719F08CE991E0EBDE7F -:10038000FF91EF91BF91AF919F918F917F916F916D -:100390005F914F913F912F910F900FBE0F901F9043 -:1003A0001895CF93FC01818D813021F0823021F4AA -:1003B000C0E203C0C0E301C0C0E0808D823009F418 -:1003C000C860828D873031F0883031F0863029F472 -:1003D000C26003C0C46001C0C6605B9A1092C900CD -:1003E0001092C8001092CA0024893589468957891D -:1003F000DA01C901B695A79597958795BC01CD01FE -:10040000605C7D4B804F9F4FCFD521503109309399 -:10041000CD002093CC00C093CA0082E08093C80036 -:1004200088E98093C9005B98CF910895292F3327DD -:100430002230310559F02330310569F02130310582 -:10044000F9F482E190E020E031E01EC08EE390E01C -:1004500022EC30E019C099278130910541F08230BB -:10046000910541F0892B61F4EEEBF0E005C0E4EA80 -:10047000F0E002C0E4E7F0E0849190E09F0104C066 -:1004800080E090E020E030E0FA013183208308959D -:1004900020913E0230913F022617370748F0611540 -:1004A000710539F42091E8002E772093E80001C00F -:1004B000B90140E06115710579F12EB32223F1F104 -:1004C0002530F1F12091E80023FD3CC02091E800A7 -:1004D00022FD2EC02091E80020FFECCF2091F200F9 -:1004E00030E0FC01CF016115710559F0283031056C -:1004F00040F481918093F100615071092F5F3F4F6B -:10050000F1CF41E02830310509F040E02091E800CA -:100510002E772093E800CECF4111CFCF09C08EB304 -:10052000882361F0853061F08091E80083FD0AC086 -:100530008091E80082FFF3CF80E0089582E0089583 -:1005400083E0089581E0089520913E0230913F02BA -:100550002617370748F06115710539F42091E80036 -:100560002E772093E80001C0B901FC0120E061155D -:10057000710561F18EB38823D9F18530D9F180916D -:10058000E80083FD39C08091E80082FD2BC0809196 -:10059000E80080FFECCF8091F20090E061157105DA -:1005A00059F08830910540F424912093F100319660 -:1005B000615071090196F2CF21E0089709F020E01F -:1005C0008091E8008E778093E800D1CF2111D2CFBF -:1005D00009C08EB3882361F0853061F08091E80016 -:1005E00083FD0AC08091E80082FFF3CF80E0089588 -:1005F00082E0089583E0089581E00895982F953072 -:1006000058F59093E900981739F07091EC0020911B -:10061000ED005091F00003C0242F762F50E021FF11 -:1006200019C03091EB003E7F3093EB003091ED002C -:100630003D7F3093ED003091EB0031603093EB0063 -:100640007093EC002093ED005093F0002091EE00A9 -:1006500027FF07C09F5FD3CF8F708093E90081E0B1 -:10066000089580E00895EF92FF920F931F93CF9328 -:10067000DF93E62EEC018C010C5F1F4FF12CFE1472 -:1006800099F19881992359F1F801208169817A8142 -:1006900031973081892F8F70853010F080E025C030 -:1006A000223010F442E001C046E0E8E0F0E020E053 -:1006B000E617F70720F42F5FEE0FFF1FF9CF229503 -:1006C000207F422B232F2295220F220F207C991F5F -:1006D0009927991F622F692B91DF8823F9F2F394F0 -:1006E00025960B5F1F4FCBCF81E0DF91CF911F91FC -:1006F0000F91FF90EF9008958091380287FF0FC00F -:100700008091E80082FD04C08EB38111F9CF10C042 -:100710008091E8008B770AC08EB3882349F08091DE -:10072000E80080FFF9CF8091E8008E778093E800A1 -:1007300008952091E4003091E50095E64091EC00A9 -:10074000842F817040FF21C08091E80080FD1BC094 -:100750008EB3882391F0853091F08091EB0085FD78 -:1007600010C04091E4005091E5004217530731F367 -:100770009A01915019F784E0089582E0089583E08A -:10078000089581E0089580E008954091E80042FFD7 -:10079000DFCF08953FD041D08091D8008F778093EC -:1007A000D8008091D80080688093D8008091D800CC -:1007B0008F7D8093D80019BC82E089BD09B400FE0A -:1007C000FDCF1EBA109234021092360210923502FA -:1007D00042E060E080E012DF8091E1008E7F809354 -:1007E000E1008091E20081608093E2008091E2006C -:1007F00088608093E2008091E0008E7F8093E0002B -:100800000895E3E6F0E080818E7F808381E080932D -:100810003702C0CF1092E20008951092E1000895CF -:100820001F920F920FB60F9211242F933F934F9365 -:100830005F936F937F938F939F93AF93BF93EF9348 -:10084000FF938091E10082FF0AC08091E20082FF65 -:1008500006C08091E1008B7F8093E10022D28091DD -:10086000E10080FF16C08091E20080FF12C08091FD -:10087000E2008E7F8093E2008091E20080618093AD -:10088000E2008091D80080628093D80019BC1EBA23 -:1008900042DD8091E10084FF2DC08091E20084FF61 -:1008A00029C019BC82E089BD09B400FEFDCF80914A -:1008B000D8008F7D8093D8008091E1008F7E809357 -:1008C000E1008091E2008F7E8093E2008091E2005F -:1008D00081608093E20080913402882311F084E0EB -:1008E00007C08091E30087FD02C081E001C083E082 -:1008F0008EBB0FDD8091E10083FF26C08091E20076 -:1009000083FF22C08091E100877F8093E10082E035 -:100910008EBB109234028091E1008E7F8093E100C3 -:100920008091E2008E7F8093E2008091E2008061FE -:100930008093E20042E060E080E060DE8091F000C1 -:1009400088608093F000ADD1FF91EF91BF91AF919E -:100950009F918F917F916F915F914F913F912F91D7 -:100960000F900FBE0F901F9018951F920F920FB609 -:100970000F9211242F933F934F935F936F937F9325 -:100980008F939F93AF93BF93CF93DF93EF93FF9397 -:10099000C091E900CF708091EC00D82FD17080FD1C -:1009A000D0E81092E9008091F000877F8093F000FA -:1009B00078941ED01092E9008091F00088608093B6 -:1009C000F000CD2BCF70C093E900FF91EF91DF9144 -:1009D000CF91BF91AF919F918F917F916F915F91D7 -:1009E0004F913F912F910F900FBE0F901F90189530 -:1009F0001F93CF93DF93CDB7DEB7AA970FB6F894C6 -:100A0000DEBF0FBECDBFE8E3F2E088E08E0F90912D -:100A1000F10091938E13FBCF89DC8091E80083FF76 -:100A200028C18091380290913902953009F483C031 -:100A300030F49130A9F168F0933091F11AC19830F7 -:100A400009F4EDC0993009F4F9C0963009F011C1EC -:100A500093C0803821F0823809F00BC108C0809122 -:100A6000350290913602992389F082600FC08091FF -:100A70003C028F70853008F0FCC08093E9008091C3 -:100A8000EB0085FB882780F91092E9009091E8003F -:100A9000977F9093E8008093F1001092F100CAC014 -:100AA000282F2D7F09F0E5C0882319F0823061F0EE -:100AB000E0C080913A02813009F0DBC0933009F048 -:100AC00080E0809336022EC080913A0281112AC0C4 -:100AD00080913C028F702FEF280F243008F0C9C09E -:100AE0008093E9002091EB0020FF1CC0933021F49B -:100AF0008091EB00806214C09091EB009061909324 -:100B0000EB0021E030E0A90102C0440F551F8A9597 -:100B1000E2F74093EA001092EA008091EB008860CF -:100B20008093EB001092E9008091E800877F80932A -:100B3000E800E2DD9EC081119CC010913A021F774F -:100B40008091E3008078812B8093E3008091E8001E -:100B5000877F8093E800D0DD8091E80080FFFCCFA4 -:100B60008091E30080688093E300111102C082E06D -:100B700001C083E08EBB7DC08058823008F079C010 -:100B800080913A0290913B028C3D53E0950771F5BC -:100B900083E08A838AE289834FB7F894DE01139653 -:100BA00020E03EE051E2E32FF0E050935700E49163 -:100BB00020FF03C0E295EF703F5FEF708E2F90E053 -:100BC000EA3010F0C79601C0C0968D939D932F5FB9 -:100BD000243149F74FBF8091E800877F8093E80078 -:100BE0006AE270E0CE01019653DC13C060913C02D2 -:100BF00070913D02AE014F5F5F4F18DCBC01892B45 -:100C0000C1F19091E800977F9093E80089819A81E3 -:100C10009BDC8091E8008B778093E8002AC08038C5 -:100C200041F58091E800877F8093E800809134024D -:100C30008093F1008091E8008E7779CF811119C0FF -:100C400090913A029230A8F48091E800877F8093D7 -:100C5000E8009093340250DD80913402811106C087 -:100C60008091E30087FD02C081E001C084E08EBB7B -:100C700054DB8091E80083FF0AC08091E800877F01 -:100C80008093E8008091EB0080628093EB00AA964D -:100C90000FB6F894DEBF0FBECDBFDF91CF911F918D -:100CA00008950895CF938EB3882399F0C091E900F9 -:100CB000CF709091EC00892F817090FD80E8C82B57 -:100CC0001092E9008091E80083FD92DECF70C0931E -:100CD000E900CF910895CF93DF93EC01FC0170966A -:100CE0008BE0DF011D928A95E9F782E08C8389878A -:100CF00083E08E8761E0CE010196B5DC882361F048 -:100D000061E0CE010696AFDC882331F061E0CE01D0 -:100D10000B96DF91CF91A7CC80E0DF91CF91089522 -:100D20000F931F93CF932EB32430F9F4FC01048961 -:100D3000158926893789012B022B032BB1F0C62F89 -:100D400081818F708093E9008091E80085FF04C065 -:100D5000C093F10080E00AC08091E8008E77809314 -:100D6000E800E7DC8823A1F301C082E0CF911F9166 -:100D70000F9108952EB3243021F5FC014489558943 -:100D800066897789452B462B472BD9F081818F7057 -:100D90008093E9008091F200882389F09091E80027 -:100DA0008091E8008E778093E80095FD08C0C1DC53 -:100DB000811108C08091E8008E778093E80080E080 -:100DC000089582E008952EB3243089F4FC0144890B -:100DD000558966897789452B462B472B41F0218120 -:100DE0002F702093E9002091E80020FDC3CF0895E3 -:100DF0002EB3243019F08FEF9FEF0895FC01448942 -:100E0000558966897789452B462B472BA1F3868127 -:100E10008F708093E9008091E80082FFECCF809191 -:100E2000F200882321F02091F10030E002C02FEF82 -:100E30003FEF8091F200811105C08091E8008B772F -:100E40008093E800C90108950895CF93DF93EC01E2 -:100E50008091E80083FFA5C0888190E020913C024A -:100E600030913D022817390709F09BC08091390263 -:100E7000813261F020F4803209F43EC092C08232A7 -:100E800009F46BC0833209F47CC08BC080913802B6 -:100E9000813A09F086C08091E800877F8093E8005E -:100EA0008091E80080FFFCCF8C899D89AE89BF8945 -:100EB0008093F100492F5A2F6B2F77274093F10031 -:100EC000AD01662777274093F1008B2F9927AA273A -:100ED000BB278093F100888D8093F100898D8093EA -:100EE000F1008A8D8093F1008091E8008E778093E5 -:100EF000E800DF91CF9100CC80913802813209F077 -:100F000050C08091E800877F8093E8008091E800DE -:100F100082FD04C08EB38111F9CF43C03091F1003E -:100F20002091F1009091F1008091F1003C8B2D8B8C -:100F30009E8B8F8B8091F100888F8091F100898F3B -:100F40008091F1008A8F8091E8008B778093E80090 -:100F5000D3DBCE01DF91CF9124CA80913802813258 -:100F600001F58091E800877F8093E800C5DB8091E0 -:100F70003A0290913B02998B888BCE01DF91CF9101 -:100F800063CF80913802813261F48091E800877FDD -:100F90008093E800B1DB60913A02CE01DF91CF91FE -:100FA00053CFDF91CF910895A1E21A2EAA1BBB1B4C -:100FB000FD010DC0AA1FBB1FEE1FFF1FA217B30725 -:100FC000E407F50720F0A21BB30BE40BF50B661F3B -:100FD000771F881F991F1A9469F7609570958095FF -:100FE00090959B01AC01BD01CF010895F894FFCF0E -:100FF00000831000000104100000018208000001BD -:0C100000000000000000000000000000E4 -:00000001FF diff --git a/gadget/USB_gadget.lss b/gadget/USB_gadget.lss deleted file mode 100644 index 6c643e6..0000000 --- a/gadget/USB_gadget.lss +++ /dev/null @@ -1,3752 +0,0 @@ - -USB_gadget.elf: format de fichier elf32-avr - -Sections : -Idx Nom Taille VMA LMA Fich off Algn - 0 .data 0000001c 00800100 00000ff0 00001084 2**0 - CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000ff0 00000000 00000000 00000094 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000124 0080011c 0080011c 000010a0 2**0 - ALLOC - 3 .comment 00000011 00000000 00000000 000010a0 2**0 - CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000010b4 2**2 - CONTENTS, READONLY - 5 .debug_aranges 00000308 00000000 00000000 000010f4 2**0 - CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00005bcc 00000000 00000000 000013fc 2**0 - CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 0000158c 00000000 00000000 00006fc8 2**0 - CONTENTS, READONLY, DEBUGGING - 8 .debug_line 000036c6 00000000 00000000 00008554 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 000008cc 00000000 00000000 0000bc1c 2**2 - CONTENTS, READONLY, DEBUGGING - 10 .debug_str 0000246c 00000000 00000000 0000c4e8 2**0 - CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00003926 00000000 00000000 0000e954 2**0 - CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 00000420 00000000 00000000 0001227a 2**0 - CONTENTS, READONLY, DEBUGGING - -Déassemblage de la section .text : - -00000000 <__vectors>: - 0: 88 c0 rjmp .+272 ; 0x112 <__ctors_end> - 2: 00 00 nop - 4: a1 c0 rjmp .+322 ; 0x148 <__bad_interrupt> - 6: 00 00 nop - 8: 9f c0 rjmp .+318 ; 0x148 <__bad_interrupt> - a: 00 00 nop - c: 9d c0 rjmp .+314 ; 0x148 <__bad_interrupt> - e: 00 00 nop - 10: 9b c0 rjmp .+310 ; 0x148 <__bad_interrupt> - 12: 00 00 nop - 14: 99 c0 rjmp .+306 ; 0x148 <__bad_interrupt> - 16: 00 00 nop - 18: 97 c0 rjmp .+302 ; 0x148 <__bad_interrupt> - 1a: 00 00 nop - 1c: 95 c0 rjmp .+298 ; 0x148 <__bad_interrupt> - 1e: 00 00 nop - 20: 93 c0 rjmp .+294 ; 0x148 <__bad_interrupt> - 22: 00 00 nop - 24: 91 c0 rjmp .+290 ; 0x148 <__bad_interrupt> - 26: 00 00 nop - 28: 8f c0 rjmp .+286 ; 0x148 <__bad_interrupt> - 2a: 00 00 nop - 2c: f9 c3 rjmp .+2034 ; 0x820 <__vector_11> - 2e: 00 00 nop - 30: 9c c4 rjmp .+2360 ; 0x96a <__vector_12> - 32: 00 00 nop - 34: 89 c0 rjmp .+274 ; 0x148 <__bad_interrupt> - 36: 00 00 nop - 38: 87 c0 rjmp .+270 ; 0x148 <__bad_interrupt> - 3a: 00 00 nop - 3c: 85 c0 rjmp .+266 ; 0x148 <__bad_interrupt> - 3e: 00 00 nop - 40: 83 c0 rjmp .+262 ; 0x148 <__bad_interrupt> - 42: 00 00 nop - 44: 81 c0 rjmp .+258 ; 0x148 <__bad_interrupt> - 46: 00 00 nop - 48: 7f c0 rjmp .+254 ; 0x148 <__bad_interrupt> - 4a: 00 00 nop - 4c: 7d c0 rjmp .+250 ; 0x148 <__bad_interrupt> - 4e: 00 00 nop - 50: 7b c0 rjmp .+246 ; 0x148 <__bad_interrupt> - 52: 00 00 nop - 54: 79 c0 rjmp .+242 ; 0x148 <__bad_interrupt> - 56: 00 00 nop - 58: 77 c0 rjmp .+238 ; 0x148 <__bad_interrupt> - 5a: 00 00 nop - 5c: 6a c1 rjmp .+724 ; 0x332 <__vector_23> - 5e: 00 00 nop - 60: 73 c0 rjmp .+230 ; 0x148 <__bad_interrupt> - 62: 00 00 nop - 64: 71 c0 rjmp .+226 ; 0x148 <__bad_interrupt> - 66: 00 00 nop - 68: 6f c0 rjmp .+222 ; 0x148 <__bad_interrupt> - 6a: 00 00 nop - 6c: 6d c0 rjmp .+218 ; 0x148 <__bad_interrupt> - 6e: 00 00 nop - 70: 6b c0 rjmp .+214 ; 0x148 <__bad_interrupt> - 72: 00 00 nop - -00000074 : - 74: 2e 03 4c 00 55 00 46 00 41 00 20 00 55 00 53 00 ..L.U.F.A. .U.S. - 84: 42 00 2d 00 52 00 53 00 32 00 33 00 32 00 20 00 B.-.R.S.2.3.2. . - 94: 41 00 64 00 61 00 70 00 74 00 65 00 72 00 00 00 A.d.a.p.t.e.r... - -000000a4 : - a4: 18 03 44 00 65 00 61 00 6e 00 20 00 43 00 61 00 ..D.e.a.n. .C.a. - b4: 6d 00 65 00 72 00 61 00 00 00 m.e.r.a... - -000000be : - be: 04 03 09 04 .... - -000000c2 : - c2: 09 02 3e 00 02 01 00 c0 32 09 04 00 00 01 02 02 ..>.....2....... - d2: 01 00 05 24 00 10 01 04 24 02 06 05 24 06 00 01 ...$....$...$... - e2: 07 05 82 03 08 00 ff 09 04 01 00 02 0a 00 00 00 ................ - f2: 07 05 04 02 10 00 05 07 05 83 02 10 00 05 .............. - -00000100 : - 100: 12 01 10 01 02 00 00 08 eb 03 4b 20 01 00 01 02 ..........K .... - 110: dc 01 .. - -00000112 <__ctors_end>: - 112: 11 24 eor r1, r1 - 114: 1f be out 0x3f, r1 ; 63 - 116: cf ef ldi r28, 0xFF ; 255 - 118: d2 e0 ldi r29, 0x02 ; 2 - 11a: de bf out 0x3e, r29 ; 62 - 11c: cd bf out 0x3d, r28 ; 61 - -0000011e <__do_copy_data>: - 11e: 11 e0 ldi r17, 0x01 ; 1 - 120: a0 e0 ldi r26, 0x00 ; 0 - 122: b1 e0 ldi r27, 0x01 ; 1 - 124: e0 ef ldi r30, 0xF0 ; 240 - 126: ff e0 ldi r31, 0x0F ; 15 - 128: 02 c0 rjmp .+4 ; 0x12e <__do_copy_data+0x10> - 12a: 05 90 lpm r0, Z+ - 12c: 0d 92 st X+, r0 - 12e: ac 31 cpi r26, 0x1C ; 28 - 130: b1 07 cpc r27, r17 - 132: d9 f7 brne .-10 ; 0x12a <__do_copy_data+0xc> - -00000134 <__do_clear_bss>: - 134: 22 e0 ldi r18, 0x02 ; 2 - 136: ac e1 ldi r26, 0x1C ; 28 - 138: b1 e0 ldi r27, 0x01 ; 1 - 13a: 01 c0 rjmp .+2 ; 0x13e <.do_clear_bss_start> - -0000013c <.do_clear_bss_loop>: - 13c: 1d 92 st X+, r1 - -0000013e <.do_clear_bss_start>: - 13e: a0 34 cpi r26, 0x40 ; 64 - 140: b2 07 cpc r27, r18 - 142: e1 f7 brne .-8 ; 0x13c <.do_clear_bss_loop> - 144: 5a d0 rcall .+180 ; 0x1fa
- 146: 52 c7 rjmp .+3748 ; 0xfec <_exit> - -00000148 <__bad_interrupt>: - 148: 5b cf rjmp .-330 ; 0x0 <__vectors> - -0000014a : - PORTD |= LEDMask; - } - - static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) - { - PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask); - 14a: 9b b1 in r25, 0x0b ; 11 - 14c: 80 95 com r24 - 14e: 90 63 ori r25, 0x30 ; 48 - 150: 89 23 and r24, r25 - 152: 8b b9 out 0x0b, r24 ; 11 - 154: 08 95 ret - -00000156 : - static inline void RingBuffer_Insert(RingBuffer_t* Buffer, - const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1); - static inline void RingBuffer_Insert(RingBuffer_t* Buffer, - const uint8_t Data) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - 156: fc 01 movw r30, r24 - - *Buffer->In = Data; - 158: a0 81 ld r26, Z - 15a: b1 81 ldd r27, Z+1 ; 0x01 - 15c: 6c 93 st X, r22 - - if (++Buffer->In == Buffer->End) - 15e: 80 81 ld r24, Z - 160: 91 81 ldd r25, Z+1 ; 0x01 - 162: 01 96 adiw r24, 0x01 ; 1 - 164: 91 83 std Z+1, r25 ; 0x01 - 166: 80 83 st Z, r24 - 168: 26 81 ldd r18, Z+6 ; 0x06 - 16a: 37 81 ldd r19, Z+7 ; 0x07 - 16c: 82 17 cp r24, r18 - 16e: 93 07 cpc r25, r19 - 170: 21 f4 brne .+8 ; 0x17a - Buffer->In = Buffer->Start; - 172: 84 81 ldd r24, Z+4 ; 0x04 - 174: 95 81 ldd r25, Z+5 ; 0x05 - 176: 91 83 std Z+1, r25 ; 0x01 - 178: 80 83 st Z, r24 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 17a: 2f b7 in r18, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 17c: f8 94 cli - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->Count++; - 17e: 82 85 ldd r24, Z+10 ; 0x0a - 180: 93 85 ldd r25, Z+11 ; 0x0b - 182: 01 96 adiw r24, 0x01 ; 1 - 184: 93 87 std Z+11, r25 ; 0x0b - 186: 82 87 std Z+10, r24 ; 0x0a - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 188: 2f bf out 0x3f, r18 ; 63 - __builtin_csrf(AVR32_SR_GM_OFFSET); - #elif (ARCH == ARCH_XMEGA) - SREG = GlobalIntState; - #endif - - GCC_MEMORY_BARRIER(); - 18a: 08 95 ret - -0000018c : - * \return Next data element stored in the buffer. - */ - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) ATTR_NON_NULL_PTR_ARG(1); - static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - 18c: fc 01 movw r30, r24 - - uint8_t Data = *Buffer->Out; - 18e: a2 81 ldd r26, Z+2 ; 0x02 - 190: b3 81 ldd r27, Z+3 ; 0x03 - 192: 8d 91 ld r24, X+ - - if (++Buffer->Out == Buffer->End) - 194: b3 83 std Z+3, r27 ; 0x03 - 196: a2 83 std Z+2, r26 ; 0x02 - 198: 26 81 ldd r18, Z+6 ; 0x06 - 19a: 37 81 ldd r19, Z+7 ; 0x07 - 19c: a2 17 cp r26, r18 - 19e: b3 07 cpc r27, r19 - 1a0: 21 f4 brne .+8 ; 0x1aa - Buffer->Out = Buffer->Start; - 1a2: 24 81 ldd r18, Z+4 ; 0x04 - 1a4: 35 81 ldd r19, Z+5 ; 0x05 - 1a6: 33 83 std Z+3, r19 ; 0x03 - 1a8: 22 83 std Z+2, r18 ; 0x02 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 1aa: 9f b7 in r25, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 1ac: f8 94 cli - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->Count--; - 1ae: 22 85 ldd r18, Z+10 ; 0x0a - 1b0: 33 85 ldd r19, Z+11 ; 0x0b - 1b2: 21 50 subi r18, 0x01 ; 1 - 1b4: 31 09 sbc r19, r1 - 1b6: 33 87 std Z+11, r19 ; 0x0b - 1b8: 22 87 std Z+10, r18 ; 0x0a - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 1ba: 9f bf out 0x3f, r25 ; 63 - - SetGlobalInterruptMask(CurrentGlobalInt); - - return Data; - } - 1bc: 08 95 ret - -000001be : -/** Configures the board hardware and chip peripherals for the demo's functionality. */ -void SetupHardware(void) -{ -#if (ARCH == ARCH_AVR8) - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - 1be: 84 b7 in r24, 0x34 ; 52 - 1c0: 87 7f andi r24, 0xF7 ; 247 - 1c2: 84 bf out 0x34, r24 ; 52 - ); - } - else - { - uint8_t register temp_reg; - __asm__ __volatile__ ( - 1c4: 0f b6 in r0, 0x3f ; 63 - 1c6: f8 94 cli - 1c8: a8 95 wdr - 1ca: 80 91 60 00 lds r24, 0x0060 - 1ce: 88 61 ori r24, 0x18 ; 24 - 1d0: 80 93 60 00 sts 0x0060, r24 - 1d4: 10 92 60 00 sts 0x0060, r1 - 1d8: 0f be out 0x3f, r0 ; 63 -from 1 to 129. Thus, one does not need to use \c clock_div_t type as argument. -*/ -void clock_prescale_set(clock_div_t __x) -{ - uint8_t __tmp = _BV(CLKPCE); - __asm__ __volatile__ ( - 1da: 90 e0 ldi r25, 0x00 ; 0 - 1dc: 80 e8 ldi r24, 0x80 ; 128 - 1de: 0f b6 in r0, 0x3f ; 63 - 1e0: f8 94 cli - 1e2: 80 93 61 00 sts 0x0061, r24 - 1e6: 90 93 61 00 sts 0x0061, r25 - 1ea: 0f be out 0x3f, r0 ; 63 - - /* Inline Functions: */ - #if !defined(__DOXYGEN__) - static inline void LEDs_Init(void) - { - DDRD |= LEDS_ALL_LEDS; - 1ec: 8a b1 in r24, 0x0a ; 10 - 1ee: 80 63 ori r24, 0x30 ; 48 - 1f0: 8a b9 out 0x0a, r24 ; 10 - PORTD |= LEDS_ALL_LEDS; - 1f2: 8b b1 in r24, 0x0b ; 11 - 1f4: 80 63 ori r24, 0x30 ; 48 - 1f6: 8b b9 out 0x0b, r24 ; 11 - clock_prescale_set(clock_div_1); -#endif - - /* Hardware Initialization */ - LEDs_Init(); - USB_Init(); - 1f8: 04 c3 rjmp .+1544 ; 0x802 - -000001fa
: -/** Main program entry point. This routine contains the overall program flow, including initial - * setup of all components and the main program loop. - */ -int main(void) -{ - SetupHardware(); - 1fa: e1 df rcall .-62 ; 0x1be - const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, - uint8_t* const DataPtr, - const uint16_t Size) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - 1fc: e8 e2 ldi r30, 0x28 ; 40 - 1fe: f2 e0 ldi r31, 0x02 ; 2 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 200: 4f b7 in r20, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 202: f8 94 cli - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->In = DataPtr; - 204: 88 ea ldi r24, 0xA8 ; 168 - 206: 91 e0 ldi r25, 0x01 ; 1 - 208: 91 83 std Z+1, r25 ; 0x01 - 20a: 80 83 st Z, r24 - Buffer->Out = DataPtr; - 20c: 93 83 std Z+3, r25 ; 0x03 - 20e: 82 83 std Z+2, r24 ; 0x02 - Buffer->Start = &DataPtr[0]; - 210: 95 83 std Z+5, r25 ; 0x05 - 212: 84 83 std Z+4, r24 ; 0x04 - Buffer->End = &DataPtr[Size]; - 214: 88 e2 ldi r24, 0x28 ; 40 - 216: 92 e0 ldi r25, 0x02 ; 2 - 218: 97 83 std Z+7, r25 ; 0x07 - 21a: 86 83 std Z+6, r24 ; 0x06 - Buffer->Size = Size; - 21c: 20 e8 ldi r18, 0x80 ; 128 - 21e: 30 e0 ldi r19, 0x00 ; 0 - 220: 31 87 std Z+9, r19 ; 0x09 - 222: 20 87 std Z+8, r18 ; 0x08 - Buffer->Count = 0; - 224: 13 86 std Z+11, r1 ; 0x0b - 226: 12 86 std Z+10, r1 ; 0x0a - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 228: 4f bf out 0x3f, r20 ; 63 - const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, - uint8_t* const DataPtr, - const uint16_t Size) - { - GCC_FORCE_POINTER_ACCESS(Buffer); - 22a: ec e9 ldi r30, 0x9C ; 156 - 22c: f1 e0 ldi r31, 0x01 ; 1 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 22e: 4f b7 in r20, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 230: f8 94 cli - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Buffer->In = DataPtr; - 232: 8c e1 ldi r24, 0x1C ; 28 - 234: 91 e0 ldi r25, 0x01 ; 1 - 236: 91 83 std Z+1, r25 ; 0x01 - 238: 80 83 st Z, r24 - Buffer->Out = DataPtr; - 23a: 93 83 std Z+3, r25 ; 0x03 - 23c: 82 83 std Z+2, r24 ; 0x02 - Buffer->Start = &DataPtr[0]; - 23e: 95 83 std Z+5, r25 ; 0x05 - 240: 84 83 std Z+4, r24 ; 0x04 - Buffer->End = &DataPtr[Size]; - 242: 8c e9 ldi r24, 0x9C ; 156 - 244: 91 e0 ldi r25, 0x01 ; 1 - 246: 97 83 std Z+7, r25 ; 0x07 - 248: 86 83 std Z+6, r24 ; 0x06 - Buffer->Size = Size; - 24a: 31 87 std Z+9, r19 ; 0x09 - 24c: 20 87 std Z+8, r18 ; 0x08 - Buffer->Count = 0; - 24e: 13 86 std Z+11, r1 ; 0x0b - 250: 12 86 std Z+10, r1 ; 0x0a - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 252: 4f bf out 0x3f, r20 ; 63 - - RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data)); - RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data)); - - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - 254: 80 e2 ldi r24, 0x20 ; 32 - 256: 79 df rcall .-270 ; 0x14a - static inline void GlobalInterruptEnable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - sei(); - 258: 78 94 sei - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 25a: 8f b7 in r24, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 25c: f8 94 cli - uint16_t Count; - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Count = Buffer->Count; - 25e: 20 91 32 02 lds r18, 0x0232 - 262: 30 91 33 02 lds r19, 0x0233 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 266: 8f bf out 0x3f, r24 ; 63 - GlobalInterruptEnable(); - - for (;;) - { - /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */ - if (!(RingBuffer_IsFull(&USBtoUSART_Buffer))) - 268: 80 91 30 02 lds r24, 0x0230 - 26c: 90 91 31 02 lds r25, 0x0231 - 270: 28 17 cp r18, r24 - 272: 39 07 cpc r19, r25 - 274: 49 f0 breq .+18 ; 0x288 - { - int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); - 276: 80 e0 ldi r24, 0x00 ; 0 - 278: 91 e0 ldi r25, 0x01 ; 1 - 27a: ba d5 rcall .+2932 ; 0xdf0 - - /* Store received byte into the USART transmit buffer */ - if (!(ReceivedByte < 0)) - 27c: 97 fd sbrc r25, 7 - 27e: 04 c0 rjmp .+8 ; 0x288 - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte); - 280: 68 2f mov r22, r24 - 282: 88 e2 ldi r24, 0x28 ; 40 - 284: 92 e0 ldi r25, 0x02 ; 2 - 286: 67 df rcall .-306 ; 0x156 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 288: 2f b7 in r18, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 28a: f8 94 cli - 28c: 80 91 a6 01 lds r24, 0x01A6 - 290: 90 91 a7 01 lds r25, 0x01A7 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 294: 2f bf out 0x3f, r18 ; 63 - } - - uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer); - if (BufferCount) - 296: 00 97 sbiw r24, 0x00 ; 0 - 298: 29 f4 brne .+10 ; 0x2a4 - * \return Boolean \c true if a character can be queued for transmission immediately, \c false otherwise. - */ - static inline bool Serial_IsSendReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Serial_IsSendReady(void) - { - return ((UCSR1A & (1 << UDRE1)) ? true : false); - 29a: 80 91 c8 00 lds r24, 0x00C8 - } - } - } - - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */ - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) - 29e: 85 fd sbrc r24, 5 - 2a0: 21 c0 rjmp .+66 ; 0x2e4 - 2a2: 32 c0 rjmp .+100 ; 0x308 <__stack+0x9> - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - 2a4: 20 91 01 01 lds r18, 0x0101 - 2a8: 2f 70 andi r18, 0x0F ; 15 - 2aa: 20 93 e9 00 sts 0x00E9, r18 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - 2ae: 20 91 e8 00 lds r18, 0x00E8 - { - Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address); - - /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data - * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */ - if (Endpoint_IsINReady()) - 2b2: 20 ff sbrs r18, 0 - 2b4: f2 cf rjmp .-28 ; 0x29a - { - /* Never send more than one bank size less one byte to the host at a time, so that we don't block - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */ - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1)); - 2b6: 80 31 cpi r24, 0x10 ; 16 - 2b8: 91 05 cpc r25, r1 - 2ba: 10 f0 brcs .+4 ; 0x2c0 - 2bc: 8f e0 ldi r24, 0x0F ; 15 - 2be: 90 e0 ldi r25, 0x00 ; 0 - 2c0: c8 2f mov r28, r24 - * \return Next data element stored in the buffer. - */ - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1); - static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) - { - return *Buffer->Out; - 2c2: e0 91 9e 01 lds r30, 0x019E - 2c6: f0 91 9f 01 lds r31, 0x019F - - /* Read bytes from the USART receive buffer into the USB IN endpoint */ - while (BytesToSend--) - { - /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */ - if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface, - 2ca: 60 81 ld r22, Z - 2cc: 80 e0 ldi r24, 0x00 ; 0 - 2ce: 91 e0 ldi r25, 0x01 ; 1 - 2d0: 27 d5 rcall .+2638 ; 0xd20 - 2d2: c1 50 subi r28, 0x01 ; 1 - 2d4: 81 11 cpse r24, r1 - 2d6: e1 cf rjmp .-62 ; 0x29a - { - break; - } - - /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */ - RingBuffer_Remove(&USARTtoUSB_Buffer); - 2d8: 8c e9 ldi r24, 0x9C ; 156 - 2da: 91 e0 ldi r25, 0x01 ; 1 - 2dc: 57 df rcall .-338 ; 0x18c - /* Never send more than one bank size less one byte to the host at a time, so that we don't block - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */ - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1)); - - /* Read bytes from the USART receive buffer into the USB IN endpoint */ - while (BytesToSend--) - 2de: c1 11 cpse r28, r1 - 2e0: f0 cf rjmp .-32 ; 0x2c2 - 2e2: db cf rjmp .-74 ; 0x29a - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 2e4: 2f b7 in r18, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 2e6: f8 94 cli - uint16_t Count; - - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - Count = Buffer->Count; - 2e8: 80 91 32 02 lds r24, 0x0232 - 2ec: 90 91 33 02 lds r25, 0x0233 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 2f0: 2f bf out 0x3f, r18 ; 63 - } - } - } - - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */ - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) - 2f2: 89 2b or r24, r25 - 2f4: 49 f0 breq .+18 ; 0x308 <__stack+0x9> - Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer)); - 2f6: 88 e2 ldi r24, 0x28 ; 40 - 2f8: 92 e0 ldi r25, 0x02 ; 2 - 2fa: 48 df rcall .-368 ; 0x18c - 2fc: 90 91 c8 00 lds r25, 0x00C8 - * \param[in] DataByte Byte to transmit through the USART. - */ - static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE; - static inline void Serial_SendByte(const char DataByte) - { - while (!(Serial_IsSendReady())); - 300: 95 ff sbrs r25, 5 - 302: fc cf rjmp .-8 ; 0x2fc - UDR1 = DataByte; - 304: 80 93 ce 00 sts 0x00CE, r24 - - CDC_Device_USBTask(&VirtualSerial_CDC_Interface); - 308: 80 e0 ldi r24, 0x00 ; 0 - 30a: 91 e0 ldi r25, 0x01 ; 1 - 30c: 5c d5 rcall .+2744 ; 0xdc6 - USB_USBTask(); - 30e: ca d4 rcall .+2452 ; 0xca4 - } - 310: a4 cf rjmp .-184 ; 0x25a - -00000312 : -} - -/** Event handler for the library USB Connection event. */ -void EVENT_USB_Device_Connect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); - 312: 80 e1 ldi r24, 0x10 ; 16 - 314: 1a cf rjmp .-460 ; 0x14a - -00000316 : -} - -/** Event handler for the library USB Disconnection event. */ -void EVENT_USB_Device_Disconnect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - 316: 80 e2 ldi r24, 0x20 ; 32 - 318: 18 cf rjmp .-464 ; 0x14a - -0000031a : -/** Event handler for the library USB Configuration Changed event. */ -void EVENT_USB_Device_ConfigurationChanged(void) -{ - bool ConfigSuccess = true; - - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); - 31a: 80 e0 ldi r24, 0x00 ; 0 - 31c: 91 e0 ldi r25, 0x01 ; 1 - 31e: db d4 rcall .+2486 ; 0xcd6 - - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); - 320: 81 11 cpse r24, r1 - 322: 02 c0 rjmp .+4 ; 0x328 - 324: 80 e2 ldi r24, 0x20 ; 32 - 326: 01 c0 rjmp .+2 ; 0x32a - 328: 80 e1 ldi r24, 0x10 ; 16 - 32a: 0f cf rjmp .-482 ; 0x14a - -0000032c : -} - -/** Event handler for the library USB Control Request reception event. */ -void EVENT_USB_Device_ControlRequest(void) -{ - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); - 32c: 80 e0 ldi r24, 0x00 ; 0 - 32e: 91 e0 ldi r25, 0x01 ; 1 - 330: 8c c5 rjmp .+2840 ; 0xe4a - -00000332 <__vector_23>: - -/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer - * for later transmission to the host. - */ -ISR(USART1_RX_vect, ISR_BLOCK) -{ - 332: 1f 92 push r1 - 334: 0f 92 push r0 - 336: 0f b6 in r0, 0x3f ; 63 - 338: 0f 92 push r0 - 33a: 11 24 eor r1, r1 - 33c: 2f 93 push r18 - 33e: 3f 93 push r19 - 340: 4f 93 push r20 - 342: 5f 93 push r21 - 344: 6f 93 push r22 - 346: 7f 93 push r23 - 348: 8f 93 push r24 - 34a: 9f 93 push r25 - 34c: af 93 push r26 - 34e: bf 93 push r27 - 350: ef 93 push r30 - 352: ff 93 push r31 - uint8_t ReceivedByte = UDR1; - 354: 60 91 ce 00 lds r22, 0x00CE - - if ((USB_DeviceState == DEVICE_STATE_Configured) && !(RingBuffer_IsFull(&USARTtoUSB_Buffer))) - 358: 8e b3 in r24, 0x1e ; 30 - 35a: 84 30 cpi r24, 0x04 ; 4 - 35c: 89 f4 brne .+34 ; 0x380 <__vector_23+0x4e> - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - 35e: 8f b7 in r24, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - 360: f8 94 cli - 362: 20 91 a6 01 lds r18, 0x01A6 - 366: 30 91 a7 01 lds r19, 0x01A7 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - 36a: 8f bf out 0x3f, r24 ; 63 - 36c: 80 91 a4 01 lds r24, 0x01A4 - 370: 90 91 a5 01 lds r25, 0x01A5 - 374: 28 17 cp r18, r24 - 376: 39 07 cpc r19, r25 - 378: 19 f0 breq .+6 ; 0x380 <__vector_23+0x4e> - RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte); - 37a: 8c e9 ldi r24, 0x9C ; 156 - 37c: 91 e0 ldi r25, 0x01 ; 1 - 37e: eb de rcall .-554 ; 0x156 -} - 380: ff 91 pop r31 - 382: ef 91 pop r30 - 384: bf 91 pop r27 - 386: af 91 pop r26 - 388: 9f 91 pop r25 - 38a: 8f 91 pop r24 - 38c: 7f 91 pop r23 - 38e: 6f 91 pop r22 - 390: 5f 91 pop r21 - 392: 4f 91 pop r20 - 394: 3f 91 pop r19 - 396: 2f 91 pop r18 - 398: 0f 90 pop r0 - 39a: 0f be out 0x3f, r0 ; 63 - 39c: 0f 90 pop r0 - 39e: 1f 90 pop r1 - 3a0: 18 95 reti - -000003a2 : -/** Event handler for the CDC Class driver Line Encoding Changed event. - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - 3a2: cf 93 push r28 - 3a4: fc 01 movw r30, r24 - uint8_t ConfigMask = 0; - - switch (CDCInterfaceInfo->State.LineEncoding.ParityType) - 3a6: 81 8d ldd r24, Z+25 ; 0x19 - 3a8: 81 30 cpi r24, 0x01 ; 1 - 3aa: 21 f0 breq .+8 ; 0x3b4 - 3ac: 82 30 cpi r24, 0x02 ; 2 - 3ae: 21 f4 brne .+8 ; 0x3b8 - { - case CDC_PARITY_Odd: - ConfigMask = ((1 << UPM11) | (1 << UPM10)); - break; - case CDC_PARITY_Even: - ConfigMask = (1 << UPM11); - 3b0: c0 e2 ldi r28, 0x20 ; 32 - break; - 3b2: 03 c0 rjmp .+6 ; 0x3ba - uint8_t ConfigMask = 0; - - switch (CDCInterfaceInfo->State.LineEncoding.ParityType) - { - case CDC_PARITY_Odd: - ConfigMask = ((1 << UPM11) | (1 << UPM10)); - 3b4: c0 e3 ldi r28, 0x30 ; 48 - 3b6: 01 c0 rjmp .+2 ; 0x3ba - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - uint8_t ConfigMask = 0; - 3b8: c0 e0 ldi r28, 0x00 ; 0 - case CDC_PARITY_Even: - ConfigMask = (1 << UPM11); - break; - } - - if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) - 3ba: 80 8d ldd r24, Z+24 ; 0x18 - 3bc: 82 30 cpi r24, 0x02 ; 2 - 3be: 09 f4 brne .+2 ; 0x3c2 - ConfigMask |= (1 << USBS1); - 3c0: c8 60 ori r28, 0x08 ; 8 - - switch (CDCInterfaceInfo->State.LineEncoding.DataBits) - 3c2: 82 8d ldd r24, Z+26 ; 0x1a - 3c4: 87 30 cpi r24, 0x07 ; 7 - 3c6: 31 f0 breq .+12 ; 0x3d4 - 3c8: 88 30 cpi r24, 0x08 ; 8 - 3ca: 31 f0 breq .+12 ; 0x3d8 - 3cc: 86 30 cpi r24, 0x06 ; 6 - 3ce: 29 f4 brne .+10 ; 0x3da - { - case 6: - ConfigMask |= (1 << UCSZ10); - 3d0: c2 60 ori r28, 0x02 ; 2 - break; - 3d2: 03 c0 rjmp .+6 ; 0x3da - case 7: - ConfigMask |= (1 << UCSZ11); - 3d4: c4 60 ori r28, 0x04 ; 4 - break; - 3d6: 01 c0 rjmp .+2 ; 0x3da - case 8: - ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10)); - 3d8: c6 60 ori r28, 0x06 ; 6 - break; - } - - /* Keep the TX line held high (idle) while the USART is reconfigured */ - PORTD |= (1 << 3); - 3da: 5b 9a sbi 0x0b, 3 ; 11 - - /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */ - UCSR1B = 0; - 3dc: 10 92 c9 00 sts 0x00C9, r1 - UCSR1A = 0; - 3e0: 10 92 c8 00 sts 0x00C8, r1 - UCSR1C = 0; - 3e4: 10 92 ca 00 sts 0x00CA, r1 - - /* Set the new baud rate before configuring the USART */ - UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - 3e8: 24 89 ldd r18, Z+20 ; 0x14 - 3ea: 35 89 ldd r19, Z+21 ; 0x15 - 3ec: 46 89 ldd r20, Z+22 ; 0x16 - 3ee: 57 89 ldd r21, Z+23 ; 0x17 - 3f0: da 01 movw r26, r20 - 3f2: c9 01 movw r24, r18 - 3f4: b6 95 lsr r27 - 3f6: a7 95 ror r26 - 3f8: 97 95 ror r25 - 3fa: 87 95 ror r24 - 3fc: bc 01 movw r22, r24 - 3fe: cd 01 movw r24, r26 - 400: 60 5c subi r22, 0xC0 ; 192 - 402: 7d 4b sbci r23, 0xBD ; 189 - 404: 80 4f sbci r24, 0xF0 ; 240 - 406: 9f 4f sbci r25, 0xFF ; 255 - 408: cf d5 rcall .+2974 ; 0xfa8 <__udivmodsi4> - 40a: 21 50 subi r18, 0x01 ; 1 - 40c: 31 09 sbc r19, r1 - 40e: 30 93 cd 00 sts 0x00CD, r19 - 412: 20 93 cc 00 sts 0x00CC, r18 - - /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */ - UCSR1C = ConfigMask; - 416: c0 93 ca 00 sts 0x00CA, r28 - UCSR1A = (1 << U2X1); - 41a: 82 e0 ldi r24, 0x02 ; 2 - 41c: 80 93 c8 00 sts 0x00C8, r24 - UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); - 420: 88 e9 ldi r24, 0x98 ; 152 - 422: 80 93 c9 00 sts 0x00C9, r24 - - /* Release the TX line after the USART has been reconfigured */ - PORTD &= ~(1 << 3); - 426: 5b 98 cbi 0x0b, 3 ; 11 -} - 428: cf 91 pop r28 - 42a: 08 95 ret - -0000042c : - */ -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - 42c: 29 2f mov r18, r25 - 42e: 33 27 eor r19, r19 - const uint8_t DescriptorNumber = (wValue & 0xFF); - - const void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - 430: 22 30 cpi r18, 0x02 ; 2 - 432: 31 05 cpc r19, r1 - 434: 59 f0 breq .+22 ; 0x44c - 436: 23 30 cpi r18, 0x03 ; 3 - 438: 31 05 cpc r19, r1 - 43a: 69 f0 breq .+26 ; 0x456 - 43c: 21 30 cpi r18, 0x01 ; 1 - 43e: 31 05 cpc r19, r1 - 440: f9 f4 brne .+62 ; 0x480 - { - case DTYPE_Device: - Address = &DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - 442: 82 e1 ldi r24, 0x12 ; 18 - 444: 90 e0 ldi r25, 0x00 ; 0 - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { - case DTYPE_Device: - Address = &DeviceDescriptor; - 446: 20 e0 ldi r18, 0x00 ; 0 - 448: 31 e0 ldi r19, 0x01 ; 1 - 44a: 1e c0 rjmp .+60 ; 0x488 - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = &ConfigurationDescriptor; - Size = sizeof(USB_Descriptor_Configuration_t); - 44c: 8e e3 ldi r24, 0x3E ; 62 - 44e: 90 e0 ldi r25, 0x00 ; 0 - case DTYPE_Device: - Address = &DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = &ConfigurationDescriptor; - 450: 22 ec ldi r18, 0xC2 ; 194 - 452: 30 e0 ldi r19, 0x00 ; 0 - Size = sizeof(USB_Descriptor_Configuration_t); - break; - 454: 19 c0 rjmp .+50 ; 0x488 - 456: 99 27 eor r25, r25 - case DTYPE_String: - switch (DescriptorNumber) - 458: 81 30 cpi r24, 0x01 ; 1 - 45a: 91 05 cpc r25, r1 - 45c: 41 f0 breq .+16 ; 0x46e - 45e: 82 30 cpi r24, 0x02 ; 2 - 460: 91 05 cpc r25, r1 - 462: 41 f0 breq .+16 ; 0x474 - 464: 89 2b or r24, r25 - 466: 61 f4 brne .+24 ; 0x480 - { - case STRING_ID_Language: - Address = &LanguageString; - Size = pgm_read_byte(&LanguageString.Header.Size); - 468: ee eb ldi r30, 0xBE ; 190 - 46a: f0 e0 ldi r31, 0x00 ; 0 - 46c: 05 c0 rjmp .+10 ; 0x478 - break; - case STRING_ID_Manufacturer: - Address = &ManufacturerString; - Size = pgm_read_byte(&ManufacturerString.Header.Size); - 46e: e4 ea ldi r30, 0xA4 ; 164 - 470: f0 e0 ldi r31, 0x00 ; 0 - 472: 02 c0 rjmp .+4 ; 0x478 - break; - case STRING_ID_Product: - Address = &ProductString; - Size = pgm_read_byte(&ProductString.Header.Size); - 474: e4 e7 ldi r30, 0x74 ; 116 - 476: f0 e0 ldi r31, 0x00 ; 0 - 478: 84 91 lpm r24, Z - 47a: 90 e0 ldi r25, 0x00 ; 0 - case STRING_ID_Manufacturer: - Address = &ManufacturerString; - Size = pgm_read_byte(&ManufacturerString.Header.Size); - break; - case STRING_ID_Product: - Address = &ProductString; - 47c: 9f 01 movw r18, r30 - Size = pgm_read_byte(&ProductString.Header.Size); - break; - 47e: 04 c0 rjmp .+8 ; 0x488 -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - const void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - 480: 80 e0 ldi r24, 0x00 ; 0 - 482: 90 e0 ldi r25, 0x00 ; 0 - const void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - const void* Address = NULL; - 484: 20 e0 ldi r18, 0x00 ; 0 - 486: 30 e0 ldi r19, 0x00 ; 0 - } - - break; - } - - *DescriptorAddress = Address; - 488: fa 01 movw r30, r20 - 48a: 31 83 std Z+1, r19 ; 0x01 - 48c: 20 83 st Z, r18 - return Size; -} - 48e: 08 95 ret - -00000490 : - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - return ENDPOINT_RWCSTREAM_BusSuspended; - } - - return ENDPOINT_RWCSTREAM_NoError; -} - 490: 20 91 3e 02 lds r18, 0x023E - 494: 30 91 3f 02 lds r19, 0x023F - 498: 26 17 cp r18, r22 - 49a: 37 07 cpc r19, r23 - 49c: 48 f0 brcs .+18 ; 0x4b0 - 49e: 61 15 cp r22, r1 - 4a0: 71 05 cpc r23, r1 - 4a2: 39 f4 brne .+14 ; 0x4b2 - 4a4: 20 91 e8 00 lds r18, 0x00E8 - 4a8: 2e 77 andi r18, 0x7E ; 126 - 4aa: 20 93 e8 00 sts 0x00E8, r18 - 4ae: 01 c0 rjmp .+2 ; 0x4b2 - 4b0: b9 01 movw r22, r18 - 4b2: 40 e0 ldi r20, 0x00 ; 0 - 4b4: 61 15 cp r22, r1 - 4b6: 71 05 cpc r23, r1 - 4b8: 79 f1 breq .+94 ; 0x518 - 4ba: 2e b3 in r18, 0x1e ; 30 - 4bc: 22 23 and r18, r18 - 4be: f1 f1 breq .+124 ; 0x53c - 4c0: 25 30 cpi r18, 0x05 ; 5 - 4c2: f1 f1 breq .+124 ; 0x540 - 4c4: 20 91 e8 00 lds r18, 0x00E8 - 4c8: 23 fd sbrc r18, 3 - 4ca: 3c c0 rjmp .+120 ; 0x544 - 4cc: 20 91 e8 00 lds r18, 0x00E8 - 4d0: 22 fd sbrc r18, 2 - 4d2: 2e c0 rjmp .+92 ; 0x530 - 4d4: 20 91 e8 00 lds r18, 0x00E8 - 4d8: 20 ff sbrs r18, 0 - 4da: ec cf rjmp .-40 ; 0x4b4 - 4dc: 20 91 f2 00 lds r18, 0x00F2 - 4e0: 30 e0 ldi r19, 0x00 ; 0 - 4e2: fc 01 movw r30, r24 - 4e4: cf 01 movw r24, r30 - 4e6: 61 15 cp r22, r1 - 4e8: 71 05 cpc r23, r1 - 4ea: 59 f0 breq .+22 ; 0x502 - 4ec: 28 30 cpi r18, 0x08 ; 8 - 4ee: 31 05 cpc r19, r1 - 4f0: 40 f4 brcc .+16 ; 0x502 - 4f2: 81 91 ld r24, Z+ - 4f4: 80 93 f1 00 sts 0x00F1, r24 - 4f8: 61 50 subi r22, 0x01 ; 1 - 4fa: 71 09 sbc r23, r1 - 4fc: 2f 5f subi r18, 0xFF ; 255 - 4fe: 3f 4f sbci r19, 0xFF ; 255 - 500: f1 cf rjmp .-30 ; 0x4e4 - 502: 41 e0 ldi r20, 0x01 ; 1 - 504: 28 30 cpi r18, 0x08 ; 8 - 506: 31 05 cpc r19, r1 - 508: 09 f0 breq .+2 ; 0x50c - 50a: 40 e0 ldi r20, 0x00 ; 0 - 50c: 20 91 e8 00 lds r18, 0x00E8 - 510: 2e 77 andi r18, 0x7E ; 126 - 512: 20 93 e8 00 sts 0x00E8, r18 - 516: ce cf rjmp .-100 ; 0x4b4 - 518: 41 11 cpse r20, r1 - 51a: cf cf rjmp .-98 ; 0x4ba - 51c: 09 c0 rjmp .+18 ; 0x530 - 51e: 8e b3 in r24, 0x1e ; 30 - 520: 88 23 and r24, r24 - 522: 61 f0 breq .+24 ; 0x53c - 524: 85 30 cpi r24, 0x05 ; 5 - 526: 61 f0 breq .+24 ; 0x540 - 528: 80 91 e8 00 lds r24, 0x00E8 - 52c: 83 fd sbrc r24, 3 - 52e: 0a c0 rjmp .+20 ; 0x544 - 530: 80 91 e8 00 lds r24, 0x00E8 - 534: 82 ff sbrs r24, 2 - 536: f3 cf rjmp .-26 ; 0x51e - 538: 80 e0 ldi r24, 0x00 ; 0 - 53a: 08 95 ret - 53c: 82 e0 ldi r24, 0x02 ; 2 - 53e: 08 95 ret - 540: 83 e0 ldi r24, 0x03 ; 3 - 542: 08 95 ret - 544: 81 e0 ldi r24, 0x01 ; 1 - 546: 08 95 ret - -00000548 : - uint16_t Length) -{ - uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length)); - bool LastPacketFull = false; - - if (Length > USB_ControlRequest.wLength) - 548: 20 91 3e 02 lds r18, 0x023E - 54c: 30 91 3f 02 lds r19, 0x023F - 550: 26 17 cp r18, r22 - 552: 37 07 cpc r19, r23 - 554: 48 f0 brcs .+18 ; 0x568 - Length = USB_ControlRequest.wLength; - else if (!(Length)) - 556: 61 15 cp r22, r1 - 558: 71 05 cpc r23, r1 - 55a: 39 f4 brne .+14 ; 0x56a - */ - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearIN(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 55c: 20 91 e8 00 lds r18, 0x00E8 - 560: 2e 77 andi r18, 0x7E ; 126 - 562: 20 93 e8 00 sts 0x00E8, r18 - 566: 01 c0 rjmp .+2 ; 0x56a - 568: b9 01 movw r22, r18 - 56a: fc 01 movw r30, r24 - 56c: 20 e0 ldi r18, 0x00 ; 0 - Endpoint_ClearIN(); - - while (Length || LastPacketFull) - 56e: 61 15 cp r22, r1 - 570: 71 05 cpc r23, r1 - 572: 61 f1 breq .+88 ; 0x5cc - { - uint8_t USB_DeviceState_LCL = USB_DeviceState; - 574: 8e b3 in r24, 0x1e ; 30 - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - 576: 88 23 and r24, r24 - 578: d9 f1 breq .+118 ; 0x5f0 - return ENDPOINT_RWCSTREAM_DeviceDisconnected; - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - 57a: 85 30 cpi r24, 0x05 ; 5 - 57c: d9 f1 breq .+118 ; 0x5f4 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - 57e: 80 91 e8 00 lds r24, 0x00E8 - return ENDPOINT_RWCSTREAM_BusSuspended; - else if (Endpoint_IsSETUPReceived()) - 582: 83 fd sbrc r24, 3 - 584: 39 c0 rjmp .+114 ; 0x5f8 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - return ((UEINTX & (1 << RXOUTI)) ? true : false); - 586: 80 91 e8 00 lds r24, 0x00E8 - return ENDPOINT_RWCSTREAM_HostAborted; - else if (Endpoint_IsOUTReceived()) - 58a: 82 fd sbrc r24, 2 - 58c: 2b c0 rjmp .+86 ; 0x5e4 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - 58e: 80 91 e8 00 lds r24, 0x00E8 - break; - - if (Endpoint_IsINReady()) - 592: 80 ff sbrs r24, 0 - 594: ec cf rjmp .-40 ; 0x56e - #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) - return UEBCX; - #elif defined(USB_SERIES_4_AVR) - return (((uint16_t)UEBCHX << 8) | UEBCLX); - #elif defined(USB_SERIES_2_AVR) - return UEBCLX; - 596: 80 91 f2 00 lds r24, 0x00F2 - 59a: 90 e0 ldi r25, 0x00 ; 0 - { - uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); - - while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize)) - 59c: 61 15 cp r22, r1 - 59e: 71 05 cpc r23, r1 - 5a0: 59 f0 breq .+22 ; 0x5b8 - 5a2: 88 30 cpi r24, 0x08 ; 8 - 5a4: 91 05 cpc r25, r1 - 5a6: 40 f4 brcc .+16 ; 0x5b8 - { - TEMPLATE_TRANSFER_BYTE(DataStream); - 5a8: 24 91 lpm r18, Z - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_8(const uint8_t Data) - { - UEDATX = Data; - 5aa: 20 93 f1 00 sts 0x00F1, r18 - TEMPLATE_BUFFER_MOVE(DataStream, 1); - 5ae: 31 96 adiw r30, 0x01 ; 1 - Length--; - 5b0: 61 50 subi r22, 0x01 ; 1 - 5b2: 71 09 sbc r23, r1 - BytesInEndpoint++; - 5b4: 01 96 adiw r24, 0x01 ; 1 - 5b6: f2 cf rjmp .-28 ; 0x59c - } - - LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize); - 5b8: 21 e0 ldi r18, 0x01 ; 1 - 5ba: 08 97 sbiw r24, 0x08 ; 8 - 5bc: 09 f0 breq .+2 ; 0x5c0 - 5be: 20 e0 ldi r18, 0x00 ; 0 - */ - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearIN(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 5c0: 80 91 e8 00 lds r24, 0x00E8 - 5c4: 8e 77 andi r24, 0x7E ; 126 - 5c6: 80 93 e8 00 sts 0x00E8, r24 - 5ca: d1 cf rjmp .-94 ; 0x56e - if (Length > USB_ControlRequest.wLength) - Length = USB_ControlRequest.wLength; - else if (!(Length)) - Endpoint_ClearIN(); - - while (Length || LastPacketFull) - 5cc: 21 11 cpse r18, r1 - 5ce: d2 cf rjmp .-92 ; 0x574 - 5d0: 09 c0 rjmp .+18 ; 0x5e4 - } - } - - while (!(Endpoint_IsOUTReceived())) - { - uint8_t USB_DeviceState_LCL = USB_DeviceState; - 5d2: 8e b3 in r24, 0x1e ; 30 - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - 5d4: 88 23 and r24, r24 - 5d6: 61 f0 breq .+24 ; 0x5f0 - return ENDPOINT_RWCSTREAM_DeviceDisconnected; - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - 5d8: 85 30 cpi r24, 0x05 ; 5 - 5da: 61 f0 breq .+24 ; 0x5f4 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - 5dc: 80 91 e8 00 lds r24, 0x00E8 - return ENDPOINT_RWCSTREAM_BusSuspended; - else if (Endpoint_IsSETUPReceived()) - 5e0: 83 fd sbrc r24, 3 - 5e2: 0a c0 rjmp .+20 ; 0x5f8 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - return ((UEINTX & (1 << RXOUTI)) ? true : false); - 5e4: 80 91 e8 00 lds r24, 0x00E8 - LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize); - Endpoint_ClearIN(); - } - } - - while (!(Endpoint_IsOUTReceived())) - 5e8: 82 ff sbrs r24, 2 - 5ea: f3 cf rjmp .-26 ; 0x5d2 - return ENDPOINT_RWCSTREAM_BusSuspended; - else if (Endpoint_IsSETUPReceived()) - return ENDPOINT_RWCSTREAM_HostAborted; - } - - return ENDPOINT_RWCSTREAM_NoError; - 5ec: 80 e0 ldi r24, 0x00 ; 0 - 5ee: 08 95 ret - while (Length || LastPacketFull) - { - uint8_t USB_DeviceState_LCL = USB_DeviceState; - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - return ENDPOINT_RWCSTREAM_DeviceDisconnected; - 5f0: 82 e0 ldi r24, 0x02 ; 2 - 5f2: 08 95 ret - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - return ENDPOINT_RWCSTREAM_BusSuspended; - 5f4: 83 e0 ldi r24, 0x03 ; 3 - 5f6: 08 95 ret - else if (Endpoint_IsSETUPReceived()) - return ENDPOINT_RWCSTREAM_HostAborted; - 5f8: 81 e0 ldi r24, 0x01 ; 1 - else if (Endpoint_IsSETUPReceived()) - return ENDPOINT_RWCSTREAM_HostAborted; - } - - return ENDPOINT_RWCSTREAM_NoError; -} - 5fa: 08 95 ret - -000005fc : - UEIENX = 0; - UEINTX = 0; - UECFG1X = 0; - Endpoint_DisableEndpoint(); - } -} - 5fc: 98 2f mov r25, r24 - 5fe: 95 30 cpi r25, 0x05 ; 5 - 600: 58 f5 brcc .+86 ; 0x658 - 602: 90 93 e9 00 sts 0x00E9, r25 - 606: 98 17 cp r25, r24 - 608: 39 f0 breq .+14 ; 0x618 - 60a: 70 91 ec 00 lds r23, 0x00EC - 60e: 20 91 ed 00 lds r18, 0x00ED - 612: 50 91 f0 00 lds r21, 0x00F0 - 616: 03 c0 rjmp .+6 ; 0x61e - 618: 24 2f mov r18, r20 - 61a: 76 2f mov r23, r22 - 61c: 50 e0 ldi r21, 0x00 ; 0 - 61e: 21 ff sbrs r18, 1 - 620: 19 c0 rjmp .+50 ; 0x654 - 622: 30 91 eb 00 lds r19, 0x00EB - 626: 3e 7f andi r19, 0xFE ; 254 - 628: 30 93 eb 00 sts 0x00EB, r19 - 62c: 30 91 ed 00 lds r19, 0x00ED - 630: 3d 7f andi r19, 0xFD ; 253 - 632: 30 93 ed 00 sts 0x00ED, r19 - 636: 30 91 eb 00 lds r19, 0x00EB - 63a: 31 60 ori r19, 0x01 ; 1 - 63c: 30 93 eb 00 sts 0x00EB, r19 - 640: 70 93 ec 00 sts 0x00EC, r23 - 644: 20 93 ed 00 sts 0x00ED, r18 - 648: 50 93 f0 00 sts 0x00F0, r21 - 64c: 20 91 ee 00 lds r18, 0x00EE - 650: 27 ff sbrs r18, 7 - 652: 07 c0 rjmp .+14 ; 0x662 - 654: 9f 5f subi r25, 0xFF ; 255 - 656: d3 cf rjmp .-90 ; 0x5fe - 658: 8f 70 andi r24, 0x0F ; 15 - 65a: 80 93 e9 00 sts 0x00E9, r24 - 65e: 81 e0 ldi r24, 0x01 ; 1 - 660: 08 95 ret - 662: 80 e0 ldi r24, 0x00 ; 0 - 664: 08 95 ret - -00000666 : - 666: ef 92 push r14 - 668: ff 92 push r15 - 66a: 0f 93 push r16 - 66c: 1f 93 push r17 - 66e: cf 93 push r28 - 670: df 93 push r29 - 672: e6 2e mov r14, r22 - 674: ec 01 movw r28, r24 - 676: 8c 01 movw r16, r24 - 678: 0c 5f subi r16, 0xFC ; 252 - 67a: 1f 4f sbci r17, 0xFF ; 255 - 67c: f1 2c mov r15, r1 - 67e: fe 14 cp r15, r14 - 680: 99 f1 breq .+102 ; 0x6e8 - 682: 98 81 ld r25, Y - 684: 99 23 and r25, r25 - 686: 59 f1 breq .+86 ; 0x6de - 688: f8 01 movw r30, r16 - 68a: 20 81 ld r18, Z - 68c: 69 81 ldd r22, Y+1 ; 0x01 - 68e: 7a 81 ldd r23, Y+2 ; 0x02 - 690: 31 97 sbiw r30, 0x01 ; 1 - 692: 30 81 ld r19, Z - 694: 89 2f mov r24, r25 - 696: 8f 70 andi r24, 0x0F ; 15 - 698: 85 30 cpi r24, 0x05 ; 5 - 69a: 10 f0 brcs .+4 ; 0x6a0 - 69c: 80 e0 ldi r24, 0x00 ; 0 - 69e: 25 c0 rjmp .+74 ; 0x6ea - 6a0: 22 30 cpi r18, 0x02 ; 2 - 6a2: 10 f4 brcc .+4 ; 0x6a8 - 6a4: 42 e0 ldi r20, 0x02 ; 2 - 6a6: 01 c0 rjmp .+2 ; 0x6aa - 6a8: 46 e0 ldi r20, 0x06 ; 6 - 6aa: e8 e0 ldi r30, 0x08 ; 8 - 6ac: f0 e0 ldi r31, 0x00 ; 0 - 6ae: 20 e0 ldi r18, 0x00 ; 0 - 6b0: e6 17 cp r30, r22 - 6b2: f7 07 cpc r31, r23 - 6b4: 20 f4 brcc .+8 ; 0x6be - 6b6: 2f 5f subi r18, 0xFF ; 255 - 6b8: ee 0f add r30, r30 - 6ba: ff 1f adc r31, r31 - 6bc: f9 cf rjmp .-14 ; 0x6b0 - 6be: 22 95 swap r18 - 6c0: 20 7f andi r18, 0xF0 ; 240 - 6c2: 42 2b or r20, r18 - 6c4: 23 2f mov r18, r19 - 6c6: 22 95 swap r18 - 6c8: 22 0f add r18, r18 - 6ca: 22 0f add r18, r18 - 6cc: 20 7c andi r18, 0xC0 ; 192 - 6ce: 99 1f adc r25, r25 - 6d0: 99 27 eor r25, r25 - 6d2: 99 1f adc r25, r25 - 6d4: 62 2f mov r22, r18 - 6d6: 69 2b or r22, r25 - 6d8: 91 df rcall .-222 ; 0x5fc - 6da: 88 23 and r24, r24 - 6dc: f9 f2 breq .-66 ; 0x69c - 6de: f3 94 inc r15 - 6e0: 25 96 adiw r28, 0x05 ; 5 - 6e2: 0b 5f subi r16, 0xFB ; 251 - 6e4: 1f 4f sbci r17, 0xFF ; 255 - 6e6: cb cf rjmp .-106 ; 0x67e - 6e8: 81 e0 ldi r24, 0x01 ; 1 - 6ea: df 91 pop r29 - 6ec: cf 91 pop r28 - 6ee: 1f 91 pop r17 - 6f0: 0f 91 pop r16 - 6f2: ff 90 pop r15 - 6f4: ef 90 pop r14 - 6f6: 08 95 ret - -000006f8 : - -void Endpoint_ClearStatusStage(void) -{ - if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST) - 6f8: 80 91 38 02 lds r24, 0x0238 - 6fc: 87 ff sbrs r24, 7 - 6fe: 0f c0 rjmp .+30 ; 0x71e - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - return ((UEINTX & (1 << RXOUTI)) ? true : false); - 700: 80 91 e8 00 lds r24, 0x00E8 - { - while (!(Endpoint_IsOUTReceived())) - 704: 82 fd sbrc r24, 2 - 706: 04 c0 rjmp .+8 ; 0x710 - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - 708: 8e b3 in r24, 0x1e ; 30 - 70a: 81 11 cpse r24, r1 - 70c: f9 cf rjmp .-14 ; 0x700 - 70e: 10 c0 rjmp .+32 ; 0x730 - */ - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearOUT(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - 710: 80 91 e8 00 lds r24, 0x00E8 - 714: 8b 77 andi r24, 0x7B ; 123 - 716: 0a c0 rjmp .+20 ; 0x72c - } - else - { - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - 718: 8e b3 in r24, 0x1e ; 30 - 71a: 88 23 and r24, r24 - 71c: 49 f0 breq .+18 ; 0x730 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - 71e: 80 91 e8 00 lds r24, 0x00E8 - - Endpoint_ClearOUT(); - } - else - { - while (!(Endpoint_IsINReady())) - 722: 80 ff sbrs r24, 0 - 724: f9 cf rjmp .-14 ; 0x718 - */ - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearIN(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 726: 80 91 e8 00 lds r24, 0x00E8 - 72a: 8e 77 andi r24, 0x7E ; 126 - 72c: 80 93 e8 00 sts 0x00E8, r24 - 730: 08 95 ret - -00000732 : - * \return Current USB frame number from the USB controller. - */ - static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; - static inline uint16_t USB_Device_GetFrameNumber(void) - { - return UDFNUM; - 732: 20 91 e4 00 lds r18, 0x00E4 - 736: 30 91 e5 00 lds r19, 0x00E5 - 73a: 95 e6 ldi r25, 0x65 ; 101 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. - */ - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetEndpointDirection(void) - { - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - 73c: 40 91 ec 00 lds r20, 0x00EC - 740: 84 2f mov r24, r20 - 742: 81 70 andi r24, 0x01 ; 1 - 744: 40 ff sbrs r20, 0 - 746: 21 c0 rjmp .+66 ; 0x78a - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - 748: 80 91 e8 00 lds r24, 0x00E8 - - for (;;) - { - if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN) - { - if (Endpoint_IsINReady()) - 74c: 80 fd sbrc r24, 0 - 74e: 1b c0 rjmp .+54 ; 0x786 - { - if (Endpoint_IsOUTReceived()) - return ENDPOINT_READYWAIT_NoError; - } - - uint8_t USB_DeviceState_LCL = USB_DeviceState; - 750: 8e b3 in r24, 0x1e ; 30 - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - 752: 88 23 and r24, r24 - 754: 91 f0 breq .+36 ; 0x77a - return ENDPOINT_READYWAIT_DeviceDisconnected; - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - 756: 85 30 cpi r24, 0x05 ; 5 - 758: 91 f0 breq .+36 ; 0x77e - * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. - */ - static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsStalled(void) - { - return ((UECONX & (1 << STALLRQ)) ? true : false); - 75a: 80 91 eb 00 lds r24, 0x00EB - return ENDPOINT_READYWAIT_BusSuspended; - else if (Endpoint_IsStalled()) - 75e: 85 fd sbrc r24, 5 - 760: 10 c0 rjmp .+32 ; 0x782 - 762: 40 91 e4 00 lds r20, 0x00E4 - 766: 50 91 e5 00 lds r21, 0x00E5 - return ENDPOINT_READYWAIT_EndpointStalled; - - uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber(); - - if (CurrentFrameNumber != PreviousFrameNumber) - 76a: 42 17 cp r20, r18 - 76c: 53 07 cpc r21, r19 - 76e: 31 f3 breq .-52 ; 0x73c - 770: 9a 01 movw r18, r20 - 772: 91 50 subi r25, 0x01 ; 1 - { - PreviousFrameNumber = CurrentFrameNumber; - - if (!(TimeoutMSRem--)) - 774: 19 f7 brne .-58 ; 0x73c - return ENDPOINT_READYWAIT_Timeout; - 776: 84 e0 ldi r24, 0x04 ; 4 - 778: 08 95 ret - } - - uint8_t USB_DeviceState_LCL = USB_DeviceState; - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - return ENDPOINT_READYWAIT_DeviceDisconnected; - 77a: 82 e0 ldi r24, 0x02 ; 2 - 77c: 08 95 ret - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - return ENDPOINT_READYWAIT_BusSuspended; - 77e: 83 e0 ldi r24, 0x03 ; 3 - 780: 08 95 ret - else if (Endpoint_IsStalled()) - return ENDPOINT_READYWAIT_EndpointStalled; - 782: 81 e0 ldi r24, 0x01 ; 1 - 784: 08 95 ret - for (;;) - { - if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN) - { - if (Endpoint_IsINReady()) - return ENDPOINT_READYWAIT_NoError; - 786: 80 e0 ldi r24, 0x00 ; 0 - 788: 08 95 ret - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - return ((UEINTX & (1 << RXOUTI)) ? true : false); - 78a: 40 91 e8 00 lds r20, 0x00E8 - } - else - { - if (Endpoint_IsOUTReceived()) - 78e: 42 ff sbrs r20, 2 - 790: df cf rjmp .-66 ; 0x750 - - if (!(TimeoutMSRem--)) - return ENDPOINT_READYWAIT_Timeout; - } - } -} - 792: 08 95 ret - -00000794 : -{ - #if defined(USB_CAN_BE_BOTH) - bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0); - #endif - - USB_INT_DisableAllInterrupts(); - 794: 3f d0 rcall .+126 ; 0x814 - USB_INT_ClearAllInterrupts(); - 796: 41 d0 rcall .+130 ; 0x81a - } - - static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE; - static inline void USB_Controller_Reset(void) - { - USBCON &= ~(1 << USBE); - 798: 80 91 d8 00 lds r24, 0x00D8 - 79c: 8f 77 andi r24, 0x7F ; 127 - 79e: 80 93 d8 00 sts 0x00D8, r24 - USBCON |= (1 << USBE); - 7a2: 80 91 d8 00 lds r24, 0x00D8 - 7a6: 80 68 ori r24, 0x80 ; 128 - 7a8: 80 93 d8 00 sts 0x00D8, r24 - } - - static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void USB_CLK_Unfreeze(void) - { - USBCON &= ~(1 << FRZCLK); - 7ac: 80 91 d8 00 lds r24, 0x00D8 - 7b0: 8f 7d andi r24, 0xDF ; 223 - 7b2: 80 93 d8 00 sts 0x00D8, r24 - - /* Inline Functions: */ - static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_PLL_On(void) - { - PLLCSR = USB_PLL_PSC; - 7b6: 19 bc out 0x29, r1 ; 41 - PLLCSR = (USB_PLL_PSC | (1 << PLLE)); - 7b8: 82 e0 ldi r24, 0x02 ; 2 - 7ba: 89 bd out 0x29, r24 ; 41 - - if (!(USB_Options & USB_OPT_MANUAL_PLL)) - { - #if defined(USB_SERIES_2_AVR) - USB_PLL_On(); - while (!(USB_PLL_IsReady())); - 7bc: 09 b4 in r0, 0x29 ; 41 - 7be: 00 fe sbrs r0, 0 - 7c0: fd cf rjmp .-6 ; 0x7bc -} - -#if defined(USB_CAN_BE_DEVICE) -static void USB_Init_Device(void) -{ - USB_DeviceState = DEVICE_STATE_Unattached; - 7c2: 1e ba out 0x1e, r1 ; 30 - USB_Device_ConfigurationNumber = 0; - 7c4: 10 92 34 02 sts 0x0234, r1 - - #if !defined(NO_DEVICE_REMOTE_WAKEUP) - USB_Device_RemoteWakeupEnabled = false; - 7c8: 10 92 36 02 sts 0x0236, r1 - #endif - - #if !defined(NO_DEVICE_SELF_POWER) - USB_Device_CurrentlySelfPowered = false; - 7cc: 10 92 35 02 sts 0x0235, r1 - uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); - - if (Number >= ENDPOINT_TOTAL_ENDPOINTS) - return false; - - return Endpoint_ConfigureEndpoint_Prv(Number, - 7d0: 42 e0 ldi r20, 0x02 ; 2 - 7d2: 60 e0 ldi r22, 0x00 ; 0 - 7d4: 80 e0 ldi r24, 0x00 ; 0 - 7d6: 12 df rcall .-476 ; 0x5fc - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDINT &= ~(1 << WAKEUPI); - break; - case USB_INT_SUSPI: - UDINT &= ~(1 << SUSPI); - 7d8: 80 91 e1 00 lds r24, 0x00E1 - 7dc: 8e 7f andi r24, 0xFE ; 254 - 7de: 80 93 e1 00 sts 0x00E1, r24 - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN |= (1 << WAKEUPE); - break; - case USB_INT_SUSPI: - UDIEN |= (1 << SUSPE); - 7e2: 80 91 e2 00 lds r24, 0x00E2 - 7e6: 81 60 ori r24, 0x01 ; 1 - 7e8: 80 93 e2 00 sts 0x00E2, r24 - break; - case USB_INT_EORSTI: - UDIEN |= (1 << EORSTE); - 7ec: 80 91 e2 00 lds r24, 0x00E2 - 7f0: 88 60 ori r24, 0x08 ; 8 - 7f2: 80 93 e2 00 sts 0x00E2, r24 - * register and despite the datasheet making no mention of its requirement in host mode. - */ - static inline void USB_Attach(void) ATTR_ALWAYS_INLINE; - static inline void USB_Attach(void) - { - UDCON &= ~(1 << DETACH); - 7f6: 80 91 e0 00 lds r24, 0x00E0 - 7fa: 8e 7f andi r24, 0xFE ; 254 - 7fc: 80 93 e0 00 sts 0x00E0, r24 - 800: 08 95 ret - -00000802 : - static inline void USB_REG_On(void) - { - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - UHWCON |= (1 << UVREGE); - #else - REGCR &= ~(1 << REGDIS); - 802: e3 e6 ldi r30, 0x63 ; 99 - 804: f0 e0 ldi r31, 0x00 ; 0 - 806: 80 81 ld r24, Z - 808: 8e 7f andi r24, 0xFE ; 254 - 80a: 80 83 st Z, r24 - UHWCON &= ~(1 << UIDE); - USB_CurrentMode = Mode; - } - #endif - - USB_IsInitialized = true; - 80c: 81 e0 ldi r24, 0x01 ; 1 - 80e: 80 93 37 02 sts 0x0237, r24 - - USB_ResetInterface(); - 812: c0 cf rjmp .-128 ; 0x794 - -00000814 : - #if defined(USB_CAN_BE_HOST) - UHIEN = 0; - #endif - - #if defined(USB_CAN_BE_DEVICE) - UDIEN = 0; - 814: 10 92 e2 00 sts 0x00E2, r1 - 818: 08 95 ret - -0000081a : - #if defined(USB_CAN_BE_HOST) - UHINT = 0; - #endif - - #if defined(USB_CAN_BE_DEVICE) - UDINT = 0; - 81a: 10 92 e1 00 sts 0x00E1, r1 - 81e: 08 95 ret - -00000820 <__vector_11>: - #endif -} - -ISR(USB_GEN_vect, ISR_BLOCK) -{ - 820: 1f 92 push r1 - 822: 0f 92 push r0 - 824: 0f b6 in r0, 0x3f ; 63 - 826: 0f 92 push r0 - 828: 11 24 eor r1, r1 - 82a: 2f 93 push r18 - 82c: 3f 93 push r19 - 82e: 4f 93 push r20 - 830: 5f 93 push r21 - 832: 6f 93 push r22 - 834: 7f 93 push r23 - 836: 8f 93 push r24 - 838: 9f 93 push r25 - 83a: af 93 push r26 - 83c: bf 93 push r27 - 83e: ef 93 push r30 - 840: ff 93 push r31 - case USB_INT_SUSPI: - return (UDINT & (1 << SUSPI)); - case USB_INT_EORSTI: - return (UDINT & (1 << EORSTI)); - case USB_INT_SOFI: - return (UDINT & (1 << SOFI)); - 842: 80 91 e1 00 lds r24, 0x00E1 - #if defined(USB_CAN_BE_DEVICE) - #if !defined(NO_SOF_EVENTS) - if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI)) - 846: 82 ff sbrs r24, 2 - 848: 0a c0 rjmp .+20 ; 0x85e <__vector_11+0x3e> - case USB_INT_SUSPI: - return (UDIEN & (1 << SUSPE)); - case USB_INT_EORSTI: - return (UDIEN & (1 << EORSTE)); - case USB_INT_SOFI: - return (UDIEN & (1 << SOFE)); - 84a: 80 91 e2 00 lds r24, 0x00E2 - 84e: 82 ff sbrs r24, 2 - 850: 06 c0 rjmp .+12 ; 0x85e <__vector_11+0x3e> - break; - case USB_INT_EORSTI: - UDINT &= ~(1 << EORSTI); - break; - case USB_INT_SOFI: - UDINT &= ~(1 << SOFI); - 852: 80 91 e1 00 lds r24, 0x00E1 - 856: 8b 7f andi r24, 0xFB ; 251 - 858: 80 93 e1 00 sts 0x00E1, r24 - { - USB_INT_Clear(USB_INT_SOFI); - - EVENT_USB_Device_StartOfFrame(); - 85c: 22 d2 rcall .+1092 ; 0xca2 - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - return (UDINT & (1 << WAKEUPI)); - case USB_INT_SUSPI: - return (UDINT & (1 << SUSPI)); - 85e: 80 91 e1 00 lds r24, 0x00E1 - EVENT_USB_Device_Disconnect(); - } - } - #endif - - if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI)) - 862: 80 ff sbrs r24, 0 - 864: 16 c0 rjmp .+44 ; 0x892 <__vector_11+0x72> - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - return (UDIEN & (1 << WAKEUPE)); - case USB_INT_SUSPI: - return (UDIEN & (1 << SUSPE)); - 866: 80 91 e2 00 lds r24, 0x00E2 - 86a: 80 ff sbrs r24, 0 - 86c: 12 c0 rjmp .+36 ; 0x892 <__vector_11+0x72> - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN &= ~(1 << WAKEUPE); - break; - case USB_INT_SUSPI: - UDIEN &= ~(1 << SUSPE); - 86e: 80 91 e2 00 lds r24, 0x00E2 - 872: 8e 7f andi r24, 0xFE ; 254 - 874: 80 93 e2 00 sts 0x00E2, r24 - USBCON |= (1 << IDTE); - break; - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN |= (1 << WAKEUPE); - 878: 80 91 e2 00 lds r24, 0x00E2 - 87c: 80 61 ori r24, 0x10 ; 16 - 87e: 80 93 e2 00 sts 0x00E2, r24 - #endif - - static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void USB_CLK_Freeze(void) - { - USBCON |= (1 << FRZCLK); - 882: 80 91 d8 00 lds r24, 0x00D8 - 886: 80 62 ori r24, 0x20 ; 32 - 888: 80 93 d8 00 sts 0x00D8, r24 - } - - static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_PLL_Off(void) - { - PLLCSR = 0; - 88c: 19 bc out 0x29, r1 ; 41 - - if (!(USB_Options & USB_OPT_MANUAL_PLL)) - USB_PLL_Off(); - - #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) - USB_DeviceState = DEVICE_STATE_Unattached; - 88e: 1e ba out 0x1e, r1 ; 30 - EVENT_USB_Device_Disconnect(); - 890: 42 dd rcall .-1404 ; 0x316 - case USB_INT_IDTI: - return (USBINT & (1 << IDTI)); - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - return (UDINT & (1 << WAKEUPI)); - 892: 80 91 e1 00 lds r24, 0x00E1 - USB_DeviceState = DEVICE_STATE_Suspended; - EVENT_USB_Device_Suspend(); - #endif - } - - if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI)) - 896: 84 ff sbrs r24, 4 - 898: 2d c0 rjmp .+90 ; 0x8f4 <__vector_11+0xd4> - case USB_INT_IDTI: - return (USBCON & (1 << IDTE)); - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - return (UDIEN & (1 << WAKEUPE)); - 89a: 80 91 e2 00 lds r24, 0x00E2 - 89e: 84 ff sbrs r24, 4 - 8a0: 29 c0 rjmp .+82 ; 0x8f4 <__vector_11+0xd4> - - /* Inline Functions: */ - static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_PLL_On(void) - { - PLLCSR = USB_PLL_PSC; - 8a2: 19 bc out 0x29, r1 ; 41 - PLLCSR = (USB_PLL_PSC | (1 << PLLE)); - 8a4: 82 e0 ldi r24, 0x02 ; 2 - 8a6: 89 bd out 0x29, r24 ; 41 - { - if (!(USB_Options & USB_OPT_MANUAL_PLL)) - { - USB_PLL_On(); - while (!(USB_PLL_IsReady())); - 8a8: 09 b4 in r0, 0x29 ; 41 - 8aa: 00 fe sbrs r0, 0 - 8ac: fd cf rjmp .-6 ; 0x8a8 <__vector_11+0x88> - } - - static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void USB_CLK_Unfreeze(void) - { - USBCON &= ~(1 << FRZCLK); - 8ae: 80 91 d8 00 lds r24, 0x00D8 - 8b2: 8f 7d andi r24, 0xDF ; 223 - 8b4: 80 93 d8 00 sts 0x00D8, r24 - USBINT &= ~(1 << IDTI); - break; - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDINT &= ~(1 << WAKEUPI); - 8b8: 80 91 e1 00 lds r24, 0x00E1 - 8bc: 8f 7e andi r24, 0xEF ; 239 - 8be: 80 93 e1 00 sts 0x00E1, r24 - USBCON &= ~(1 << IDTE); - break; - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN &= ~(1 << WAKEUPE); - 8c2: 80 91 e2 00 lds r24, 0x00E2 - 8c6: 8f 7e andi r24, 0xEF ; 239 - 8c8: 80 93 e2 00 sts 0x00E2, r24 - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN |= (1 << WAKEUPE); - break; - case USB_INT_SUSPI: - UDIEN |= (1 << SUSPE); - 8cc: 80 91 e2 00 lds r24, 0x00E2 - 8d0: 81 60 ori r24, 0x01 ; 1 - 8d2: 80 93 e2 00 sts 0x00E2, r24 - USB_INT_Clear(USB_INT_WAKEUPI); - - USB_INT_Disable(USB_INT_WAKEUPI); - USB_INT_Enable(USB_INT_SUSPI); - - if (USB_Device_ConfigurationNumber) - 8d6: 80 91 34 02 lds r24, 0x0234 - 8da: 88 23 and r24, r24 - 8dc: 11 f0 breq .+4 ; 0x8e2 <__vector_11+0xc2> - USB_DeviceState = DEVICE_STATE_Configured; - 8de: 84 e0 ldi r24, 0x04 ; 4 - 8e0: 07 c0 rjmp .+14 ; 0x8f0 <__vector_11+0xd0> - } - - static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; - static inline bool USB_Device_IsAddressSet(void) - { - return (UDADDR & (1 << ADDEN)); - 8e2: 80 91 e3 00 lds r24, 0x00E3 - else - USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Addressed : DEVICE_STATE_Powered; - 8e6: 87 fd sbrc r24, 7 - 8e8: 02 c0 rjmp .+4 ; 0x8ee <__vector_11+0xce> - 8ea: 81 e0 ldi r24, 0x01 ; 1 - 8ec: 01 c0 rjmp .+2 ; 0x8f0 <__vector_11+0xd0> - 8ee: 83 e0 ldi r24, 0x03 ; 3 - 8f0: 8e bb out 0x1e, r24 ; 30 - - #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) - EVENT_USB_Device_Connect(); - 8f2: 0f dd rcall .-1506 ; 0x312 - case USB_INT_WAKEUPI: - return (UDINT & (1 << WAKEUPI)); - case USB_INT_SUSPI: - return (UDINT & (1 << SUSPI)); - case USB_INT_EORSTI: - return (UDINT & (1 << EORSTI)); - 8f4: 80 91 e1 00 lds r24, 0x00E1 - #else - EVENT_USB_Device_WakeUp(); - #endif - } - - if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI)) - 8f8: 83 ff sbrs r24, 3 - 8fa: 26 c0 rjmp .+76 ; 0x948 <__vector_11+0x128> - case USB_INT_WAKEUPI: - return (UDIEN & (1 << WAKEUPE)); - case USB_INT_SUSPI: - return (UDIEN & (1 << SUSPE)); - case USB_INT_EORSTI: - return (UDIEN & (1 << EORSTE)); - 8fc: 80 91 e2 00 lds r24, 0x00E2 - 900: 83 ff sbrs r24, 3 - 902: 22 c0 rjmp .+68 ; 0x948 <__vector_11+0x128> - break; - case USB_INT_SUSPI: - UDINT &= ~(1 << SUSPI); - break; - case USB_INT_EORSTI: - UDINT &= ~(1 << EORSTI); - 904: 80 91 e1 00 lds r24, 0x00E1 - 908: 87 7f andi r24, 0xF7 ; 247 - 90a: 80 93 e1 00 sts 0x00E1, r24 - { - USB_INT_Clear(USB_INT_EORSTI); - - USB_DeviceState = DEVICE_STATE_Default; - 90e: 82 e0 ldi r24, 0x02 ; 2 - 910: 8e bb out 0x1e, r24 ; 30 - USB_Device_ConfigurationNumber = 0; - 912: 10 92 34 02 sts 0x0234, r1 - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDINT &= ~(1 << WAKEUPI); - break; - case USB_INT_SUSPI: - UDINT &= ~(1 << SUSPI); - 916: 80 91 e1 00 lds r24, 0x00E1 - 91a: 8e 7f andi r24, 0xFE ; 254 - 91c: 80 93 e1 00 sts 0x00E1, r24 - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN &= ~(1 << WAKEUPE); - break; - case USB_INT_SUSPI: - UDIEN &= ~(1 << SUSPE); - 920: 80 91 e2 00 lds r24, 0x00E2 - 924: 8e 7f andi r24, 0xFE ; 254 - 926: 80 93 e2 00 sts 0x00E2, r24 - USBCON |= (1 << IDTE); - break; - #endif - #if defined(USB_CAN_BE_DEVICE) - case USB_INT_WAKEUPI: - UDIEN |= (1 << WAKEUPE); - 92a: 80 91 e2 00 lds r24, 0x00E2 - 92e: 80 61 ori r24, 0x10 ; 16 - 930: 80 93 e2 00 sts 0x00E2, r24 - uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); - - if (Number >= ENDPOINT_TOTAL_ENDPOINTS) - return false; - - return Endpoint_ConfigureEndpoint_Prv(Number, - 934: 42 e0 ldi r20, 0x02 ; 2 - 936: 60 e0 ldi r22, 0x00 ; 0 - 938: 80 e0 ldi r24, 0x00 ; 0 - 93a: 60 de rcall .-832 ; 0x5fc - break; - case USB_INT_SOFI: - UDIEN |= (1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX |= (1 << RXSTPE); - 93c: 80 91 f0 00 lds r24, 0x00F0 - 940: 88 60 ori r24, 0x08 ; 8 - 942: 80 93 f0 00 sts 0x00F0, r24 - - #if defined(INTERRUPT_CONTROL_ENDPOINT) - USB_INT_Enable(USB_INT_RXSTPI); - #endif - - EVENT_USB_Device_Reset(); - 946: ad d1 rcall .+858 ; 0xca2 - USB_ResetInterface(); - - EVENT_USB_UIDChange(); - } - #endif -} - 948: ff 91 pop r31 - 94a: ef 91 pop r30 - 94c: bf 91 pop r27 - 94e: af 91 pop r26 - 950: 9f 91 pop r25 - 952: 8f 91 pop r24 - 954: 7f 91 pop r23 - 956: 6f 91 pop r22 - 958: 5f 91 pop r21 - 95a: 4f 91 pop r20 - 95c: 3f 91 pop r19 - 95e: 2f 91 pop r18 - 960: 0f 90 pop r0 - 962: 0f be out 0x3f, r0 ; 63 - 964: 0f 90 pop r0 - 966: 1f 90 pop r1 - 968: 18 95 reti - -0000096a <__vector_12>: - -#if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE) -ISR(USB_COM_vect, ISR_BLOCK) -{ - 96a: 1f 92 push r1 - 96c: 0f 92 push r0 - 96e: 0f b6 in r0, 0x3f ; 63 - 970: 0f 92 push r0 - 972: 11 24 eor r1, r1 - 974: 2f 93 push r18 - 976: 3f 93 push r19 - 978: 4f 93 push r20 - 97a: 5f 93 push r21 - 97c: 6f 93 push r22 - 97e: 7f 93 push r23 - 980: 8f 93 push r24 - 982: 9f 93 push r25 - 984: af 93 push r26 - 986: bf 93 push r27 - 988: cf 93 push r28 - 98a: df 93 push r29 - 98c: ef 93 push r30 - 98e: ff 93 push r31 - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - 990: c0 91 e9 00 lds r28, 0x00E9 - 994: cf 70 andi r28, 0x0F ; 15 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. - */ - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetEndpointDirection(void) - { - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - 996: 80 91 ec 00 lds r24, 0x00EC - 99a: d8 2f mov r29, r24 - 99c: d1 70 andi r29, 0x01 ; 1 - 99e: 80 fd sbrc r24, 0 - 9a0: d0 e8 ldi r29, 0x80 ; 128 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - 9a2: 10 92 e9 00 sts 0x00E9, r1 - break; - case USB_INT_SOFI: - UDIEN &= ~(1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX &= ~(1 << RXSTPE); - 9a6: 80 91 f0 00 lds r24, 0x00F0 - 9aa: 87 7f andi r24, 0xF7 ; 247 - 9ac: 80 93 f0 00 sts 0x00F0, r24 - static inline void GlobalInterruptEnable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - sei(); - 9b0: 78 94 sei - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - USB_INT_Disable(USB_INT_RXSTPI); - - GlobalInterruptEnable(); - - USB_Device_ProcessControlRequest(); - 9b2: 1e d0 rcall .+60 ; 0x9f0 - 9b4: 10 92 e9 00 sts 0x00E9, r1 - break; - case USB_INT_SOFI: - UDIEN |= (1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX |= (1 << RXSTPE); - 9b8: 80 91 f0 00 lds r24, 0x00F0 - 9bc: 88 60 ori r24, 0x08 ; 8 - 9be: 80 93 f0 00 sts 0x00F0, r24 - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - 9c2: cd 2b or r28, r29 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - 9c4: cf 70 andi r28, 0x0F ; 15 - 9c6: c0 93 e9 00 sts 0x00E9, r28 - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - USB_INT_Enable(USB_INT_RXSTPI); - Endpoint_SelectEndpoint(PrevSelectedEndpoint); -} - 9ca: ff 91 pop r31 - 9cc: ef 91 pop r30 - 9ce: df 91 pop r29 - 9d0: cf 91 pop r28 - 9d2: bf 91 pop r27 - 9d4: af 91 pop r26 - 9d6: 9f 91 pop r25 - 9d8: 8f 91 pop r24 - 9da: 7f 91 pop r23 - 9dc: 6f 91 pop r22 - 9de: 5f 91 pop r21 - 9e0: 4f 91 pop r20 - 9e2: 3f 91 pop r19 - 9e4: 2f 91 pop r18 - 9e6: 0f 90 pop r0 - 9e8: 0f be out 0x3f, r0 ; 63 - 9ea: 0f 90 pop r0 - 9ec: 1f 90 pop r1 - 9ee: 18 95 reti - -000009f0 : -#if !defined(NO_DEVICE_REMOTE_WAKEUP) -bool USB_Device_RemoteWakeupEnabled; -#endif - -void USB_Device_ProcessControlRequest(void) -{ - 9f0: 1f 93 push r17 - 9f2: cf 93 push r28 - 9f4: df 93 push r29 - 9f6: cd b7 in r28, 0x3d ; 61 - 9f8: de b7 in r29, 0x3e ; 62 - 9fa: aa 97 sbiw r28, 0x2a ; 42 - 9fc: 0f b6 in r0, 0x3f ; 63 - 9fe: f8 94 cli - a00: de bf out 0x3e, r29 ; 62 - a02: 0f be out 0x3f, r0 ; 63 - a04: cd bf out 0x3d, r28 ; 61 - a06: e8 e3 ldi r30, 0x38 ; 56 - a08: f2 e0 ldi r31, 0x02 ; 2 - a0a: 88 e0 ldi r24, 0x08 ; 8 - a0c: 8e 0f add r24, r30 - * \return Next byte in the currently selected endpoint's FIFO buffer. - */ - static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_Read_8(void) - { - return UEDATX; - a0e: 90 91 f1 00 lds r25, 0x00F1 - USB_ControlRequest.wLength = Endpoint_Read_16_LE(); - #else - uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest; - - for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++) - *(RequestHeader++) = Endpoint_Read_8(); - a12: 91 93 st Z+, r25 - USB_ControlRequest.wIndex = Endpoint_Read_16_LE(); - USB_ControlRequest.wLength = Endpoint_Read_16_LE(); - #else - uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest; - - for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++) - a14: 8e 13 cpse r24, r30 - a16: fb cf rjmp .-10 ; 0xa0e - *(RequestHeader++) = Endpoint_Read_8(); - #endif - - EVENT_USB_Device_ControlRequest(); - a18: 89 dc rcall .-1774 ; 0x32c - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - a1a: 80 91 e8 00 lds r24, 0x00E8 - - if (Endpoint_IsSETUPReceived()) - a1e: 83 ff sbrs r24, 3 - a20: 28 c1 rjmp .+592 ; 0xc72 - { - uint8_t bmRequestType = USB_ControlRequest.bmRequestType; - a22: 80 91 38 02 lds r24, 0x0238 - - switch (USB_ControlRequest.bRequest) - a26: 90 91 39 02 lds r25, 0x0239 - a2a: 95 30 cpi r25, 0x05 ; 5 - a2c: 09 f4 brne .+2 ; 0xa30 - a2e: 83 c0 rjmp .+262 ; 0xb36 - a30: 30 f4 brcc .+12 ; 0xa3e - a32: 91 30 cpi r25, 0x01 ; 1 - a34: a9 f1 breq .+106 ; 0xaa0 - a36: 68 f0 brcs .+26 ; 0xa52 - a38: 93 30 cpi r25, 0x03 ; 3 - a3a: 91 f1 breq .+100 ; 0xaa0 - a3c: 1a c1 rjmp .+564 ; 0xc72 - a3e: 98 30 cpi r25, 0x08 ; 8 - a40: 09 f4 brne .+2 ; 0xa44 - a42: ed c0 rjmp .+474 ; 0xc1e - a44: 99 30 cpi r25, 0x09 ; 9 - a46: 09 f4 brne .+2 ; 0xa4a - a48: f9 c0 rjmp .+498 ; 0xc3c - a4a: 96 30 cpi r25, 0x06 ; 6 - a4c: 09 f0 breq .+2 ; 0xa50 - a4e: 11 c1 rjmp .+546 ; 0xc72 - a50: 93 c0 rjmp .+294 ; 0xb78 - { - case REQ_GetStatus: - if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) || - a52: 80 38 cpi r24, 0x80 ; 128 - a54: 21 f0 breq .+8 ; 0xa5e - a56: 82 38 cpi r24, 0x82 ; 130 - a58: 09 f0 breq .+2 ; 0xa5c - a5a: 0b c1 rjmp .+534 ; 0xc72 - a5c: 08 c0 rjmp .+16 ; 0xa6e - Endpoint_ClearOUT(); -} - -static void USB_Device_GetStatus(void) -{ - uint8_t CurrentStatus = 0; - a5e: 80 91 35 02 lds r24, 0x0235 - if (USB_Device_CurrentlySelfPowered) - CurrentStatus |= FEATURE_SELFPOWERED_ENABLED; - #endif - - #if !defined(NO_DEVICE_REMOTE_WAKEUP) - if (USB_Device_RemoteWakeupEnabled) - a62: 90 91 36 02 lds r25, 0x0236 - a66: 99 23 and r25, r25 - a68: 89 f0 breq .+34 ; 0xa8c - CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED; - a6a: 82 60 ori r24, 0x02 ; 2 - a6c: 0f c0 rjmp .+30 ; 0xa8c - break; - } - case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT): - { - #if !defined(CONTROL_ONLY_DEVICE) - uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); - a6e: 80 91 3c 02 lds r24, 0x023C - a72: 8f 70 andi r24, 0x0F ; 15 - - if (EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS) - a74: 85 30 cpi r24, 0x05 ; 5 - a76: 08 f0 brcs .+2 ; 0xa7a - a78: fc c0 rjmp .+504 ; 0xc72 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - a7a: 80 93 e9 00 sts 0x00E9, r24 - * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. - */ - static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsStalled(void) - { - return ((UECONX & (1 << STALLRQ)) ? true : false); - a7e: 80 91 eb 00 lds r24, 0x00EB - a82: 85 fb bst r24, 5 - a84: 88 27 eor r24, r24 - a86: 80 f9 bld r24, 0 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - a88: 10 92 e9 00 sts 0x00E9, r1 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - a8c: 90 91 e8 00 lds r25, 0x00E8 - a90: 97 7f andi r25, 0xF7 ; 247 - a92: 90 93 e8 00 sts 0x00E8, r25 - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_16_LE(const uint16_t Data) - { - UEDATX = (Data & 0xFF); - a96: 80 93 f1 00 sts 0x00F1, r24 - UEDATX = (Data >> 8); - a9a: 10 92 f1 00 sts 0x00F1, r1 - a9e: ca c0 rjmp .+404 ; 0xc34 - } - - break; - case REQ_ClearFeature: - case REQ_SetFeature: - if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) || - aa0: 28 2f mov r18, r24 - aa2: 2d 7f andi r18, 0xFD ; 253 - aa4: 09 f0 breq .+2 ; 0xaa8 - aa6: e5 c0 rjmp .+458 ; 0xc72 - Endpoint_ClearStatusStage(); -} - -static void USB_Device_ClearSetFeature(void) -{ - switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT) - aa8: 88 23 and r24, r24 - aaa: 19 f0 breq .+6 ; 0xab2 - aac: 82 30 cpi r24, 0x02 ; 2 - aae: 61 f0 breq .+24 ; 0xac8 - ab0: e0 c0 rjmp .+448 ; 0xc72 - { - #if !defined(NO_DEVICE_REMOTE_WAKEUP) - case REQREC_DEVICE: - { - if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup) - ab2: 80 91 3a 02 lds r24, 0x023A - ab6: 81 30 cpi r24, 0x01 ; 1 - ab8: 09 f0 breq .+2 ; 0xabc - aba: db c0 rjmp .+438 ; 0xc72 - USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); - abc: 93 30 cpi r25, 0x03 ; 3 - abe: 09 f0 breq .+2 ; 0xac2 - ac0: 80 e0 ldi r24, 0x00 ; 0 - ac2: 80 93 36 02 sts 0x0236, r24 - ac6: 2e c0 rjmp .+92 ; 0xb24 - } - #endif - #if !defined(CONTROL_ONLY_DEVICE) - case REQREC_ENDPOINT: - { - if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt) - ac8: 80 91 3a 02 lds r24, 0x023A - acc: 81 11 cpse r24, r1 - ace: 2a c0 rjmp .+84 ; 0xb24 - { - uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); - ad0: 80 91 3c 02 lds r24, 0x023C - ad4: 8f 70 andi r24, 0x0F ; 15 - - if (EndpointIndex == ENDPOINT_CONTROLEP || EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS) - ad6: 2f ef ldi r18, 0xFF ; 255 - ad8: 28 0f add r18, r24 - ada: 24 30 cpi r18, 0x04 ; 4 - adc: 08 f0 brcs .+2 ; 0xae0 - ade: c9 c0 rjmp .+402 ; 0xc72 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - ae0: 80 93 e9 00 sts 0x00E9, r24 - * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise. - */ - static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsEnabled(void) - { - return ((UECONX & (1 << EPEN)) ? true : false); - ae4: 20 91 eb 00 lds r18, 0x00EB - return; - - Endpoint_SelectEndpoint(EndpointIndex); - - if (Endpoint_IsEnabled()) - ae8: 20 ff sbrs r18, 0 - aea: 1c c0 rjmp .+56 ; 0xb24 - { - if (USB_ControlRequest.bRequest == REQ_SetFeature) - aec: 93 30 cpi r25, 0x03 ; 3 - aee: 21 f4 brne .+8 ; 0xaf8 - * \ingroup Group_EndpointPacketManagement_AVR8 - */ - static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_StallTransaction(void) - { - UECONX |= (1 << STALLRQ); - af0: 80 91 eb 00 lds r24, 0x00EB - af4: 80 62 ori r24, 0x20 ; 32 - af6: 14 c0 rjmp .+40 ; 0xb20 - * \ingroup Group_EndpointPacketManagement_AVR8 - */ - static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearStall(void) - { - UECONX |= (1 << STALLRQC); - af8: 90 91 eb 00 lds r25, 0x00EB - afc: 90 61 ori r25, 0x10 ; 16 - afe: 90 93 eb 00 sts 0x00EB, r25 - * \param[in] Address Endpoint address whose FIFO buffers are to be reset. - */ - static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ResetEndpoint(const uint8_t Address) - { - UERST = (1 << (Address & ENDPOINT_EPNUM_MASK)); - b02: 21 e0 ldi r18, 0x01 ; 1 - b04: 30 e0 ldi r19, 0x00 ; 0 - b06: a9 01 movw r20, r18 - b08: 02 c0 rjmp .+4 ; 0xb0e - b0a: 44 0f add r20, r20 - b0c: 55 1f adc r21, r21 - b0e: 8a 95 dec r24 - b10: e2 f7 brpl .-8 ; 0xb0a - b12: 40 93 ea 00 sts 0x00EA, r20 - UERST = 0; - b16: 10 92 ea 00 sts 0x00EA, r1 - - /** Resets the data toggle of the currently selected endpoint. */ - static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ResetDataToggle(void) - { - UECONX |= (1 << RSTDT); - b1a: 80 91 eb 00 lds r24, 0x00EB - b1e: 88 60 ori r24, 0x08 ; 8 - b20: 80 93 eb 00 sts 0x00EB, r24 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - b24: 10 92 e9 00 sts 0x00E9, r1 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - b28: 80 91 e8 00 lds r24, 0x00E8 - b2c: 87 7f andi r24, 0xF7 ; 247 - b2e: 80 93 e8 00 sts 0x00E8, r24 - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - - Endpoint_ClearSETUP(); - - Endpoint_ClearStatusStage(); - b32: e2 dd rcall .-1084 ; 0x6f8 - b34: 9e c0 rjmp .+316 ; 0xc72 - USB_Device_ClearSetFeature(); - } - - break; - case REQ_SetAddress: - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) - b36: 81 11 cpse r24, r1 - b38: 9c c0 rjmp .+312 ; 0xc72 - } -} - -static void USB_Device_SetAddress(void) -{ - uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); - b3a: 10 91 3a 02 lds r17, 0x023A - b3e: 1f 77 andi r17, 0x7F ; 127 - #endif - - static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Device_SetDeviceAddress(const uint8_t Address) - { - UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F); - b40: 80 91 e3 00 lds r24, 0x00E3 - b44: 80 78 andi r24, 0x80 ; 128 - b46: 81 2b or r24, r17 - b48: 80 93 e3 00 sts 0x00E3, r24 - b4c: 80 91 e8 00 lds r24, 0x00E8 - b50: 87 7f andi r24, 0xF7 ; 247 - b52: 80 93 e8 00 sts 0x00E8, r24 - - USB_Device_SetDeviceAddress(DeviceAddress); - - Endpoint_ClearSETUP(); - - Endpoint_ClearStatusStage(); - b56: d0 dd rcall .-1120 ; 0x6f8 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - b58: 80 91 e8 00 lds r24, 0x00E8 - - while (!(Endpoint_IsINReady())); - b5c: 80 ff sbrs r24, 0 - b5e: fc cf rjmp .-8 ; 0xb58 - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) - { - (void)Address; - - UDADDR |= (1 << ADDEN); - b60: 80 91 e3 00 lds r24, 0x00E3 - b64: 80 68 ori r24, 0x80 ; 128 - b66: 80 93 e3 00 sts 0x00E3, r24 - - USB_Device_EnableDeviceAddress(DeviceAddress); - - USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; - b6a: 11 11 cpse r17, r1 - b6c: 02 c0 rjmp .+4 ; 0xb72 - b6e: 82 e0 ldi r24, 0x02 ; 2 - b70: 01 c0 rjmp .+2 ; 0xb74 - b72: 83 e0 ldi r24, 0x03 ; 3 - b74: 8e bb out 0x1e, r24 ; 30 - b76: 7d c0 rjmp .+250 ; 0xc72 - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) - USB_Device_SetAddress(); - - break; - case REQ_GetDescriptor: - if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) || - b78: 80 58 subi r24, 0x80 ; 128 - b7a: 82 30 cpi r24, 0x02 ; 2 - b7c: 08 f0 brcs .+2 ; 0xb80 - b7e: 79 c0 rjmp .+242 ; 0xc72 - !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS)) - uint8_t DescriptorAddressSpace; - #endif - - #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) - if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL)) - b80: 80 91 3a 02 lds r24, 0x023A - b84: 90 91 3b 02 lds r25, 0x023B - b88: 8c 3d cpi r24, 0xDC ; 220 - b8a: 53 e0 ldi r21, 0x03 ; 3 - b8c: 95 07 cpc r25, r21 - b8e: 71 f5 brne .+92 ; 0xbec - { - USB_Descriptor_Header_t Header; - uint16_t UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4]; - } SignatureDescriptor; - - SignatureDescriptor.Header.Type = DTYPE_String; - b90: 83 e0 ldi r24, 0x03 ; 3 - b92: 8a 83 std Y+2, r24 ; 0x02 - SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4); - b94: 8a e2 ldi r24, 0x2A ; 42 - b96: 89 83 std Y+1, r24 ; 0x01 - static inline uint_reg_t GetGlobalInterruptMask(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - return SREG; - b98: 4f b7 in r20, 0x3f ; 63 - static inline void GlobalInterruptDisable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - cli(); - b9a: f8 94 cli - __builtin_ssrf(AVR32_SR_GM_OFFSET); - #elif (ARCH == ARCH_XMEGA) - cli(); - #endif - - GCC_MEMORY_BARRIER(); - b9c: de 01 movw r26, r28 - b9e: 13 96 adiw r26, 0x03 ; 3 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS; - - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++) - ba0: 20 e0 ldi r18, 0x00 ; 0 - static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString) - { - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS; - ba2: 3e e0 ldi r19, 0x0E ; 14 - - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++) - { - uint8_t SerialByte = boot_signature_byte_get(SigReadAddress); - ba4: 51 e2 ldi r21, 0x21 ; 33 - ba6: e3 2f mov r30, r19 - ba8: f0 e0 ldi r31, 0x00 ; 0 - baa: 50 93 57 00 sts 0x0057, r21 - bae: e4 91 lpm r30, Z - - if (SerialCharNum & 0x01) - bb0: 20 ff sbrs r18, 0 - bb2: 03 c0 rjmp .+6 ; 0xbba - { - SerialByte >>= 4; - bb4: e2 95 swap r30 - bb6: ef 70 andi r30, 0x0F ; 15 - SigReadAddress++; - bb8: 3f 5f subi r19, 0xFF ; 255 - } - - SerialByte &= 0x0F; - bba: ef 70 andi r30, 0x0F ; 15 - bbc: 8e 2f mov r24, r30 - bbe: 90 e0 ldi r25, 0x00 ; 0 - - UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ? - bc0: ea 30 cpi r30, 0x0A ; 10 - bc2: 10 f0 brcs .+4 ; 0xbc8 - bc4: c7 96 adiw r24, 0x37 ; 55 - bc6: 01 c0 rjmp .+2 ; 0xbca - bc8: c0 96 adiw r24, 0x30 ; 48 - bca: 8d 93 st X+, r24 - bcc: 9d 93 st X+, r25 - uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); - GlobalInterruptDisable(); - - uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS; - - for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++) - bce: 2f 5f subi r18, 0xFF ; 255 - bd0: 24 31 cpi r18, 0x14 ; 20 - bd2: 49 f7 brne .-46 ; 0xba6 - static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - SREG = GlobalIntState; - bd4: 4f bf out 0x3f, r20 ; 63 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - bd6: 80 91 e8 00 lds r24, 0x00E8 - bda: 87 7f andi r24, 0xF7 ; 247 - bdc: 80 93 e8 00 sts 0x00E8, r24 - - USB_Device_GetSerialString(SignatureDescriptor.UnicodeString); - - Endpoint_ClearSETUP(); - - Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor)); - be0: 6a e2 ldi r22, 0x2A ; 42 - be2: 70 e0 ldi r23, 0x00 ; 0 - be4: ce 01 movw r24, r28 - be6: 01 96 adiw r24, 0x01 ; 1 - be8: 53 dc rcall .-1882 ; 0x490 - bea: 13 c0 rjmp .+38 ; 0xc12 - USB_Device_GetInternalSerialDescriptor(); - return; - } - #endif - - if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, - bec: 60 91 3c 02 lds r22, 0x023C - bf0: 70 91 3d 02 lds r23, 0x023D - bf4: ae 01 movw r20, r28 - bf6: 4f 5f subi r20, 0xFF ; 255 - bf8: 5f 4f sbci r21, 0xFF ; 255 - bfa: 18 dc rcall .-2000 ; 0x42c - bfc: bc 01 movw r22, r24 - bfe: 89 2b or r24, r25 - c00: c1 f1 breq .+112 ; 0xc72 - c02: 90 91 e8 00 lds r25, 0x00E8 - c06: 97 7f andi r25, 0xF7 ; 247 - c08: 90 93 e8 00 sts 0x00E8, r25 - #if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE) - Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize); - #elif defined(USE_EEPROM_DESCRIPTORS) - Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize); - #elif defined(USE_FLASH_DESCRIPTORS) - Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize); - c0c: 89 81 ldd r24, Y+1 ; 0x01 - c0e: 9a 81 ldd r25, Y+2 ; 0x02 - c10: 9b dc rcall .-1738 ; 0x548 - */ - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearOUT(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - c12: 80 91 e8 00 lds r24, 0x00E8 - c16: 8b 77 andi r24, 0x7B ; 123 - c18: 80 93 e8 00 sts 0x00E8, r24 - c1c: 2a c0 rjmp .+84 ; 0xc72 - USB_Device_GetDescriptor(); - } - - break; - case REQ_GetConfiguration: - if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) - c1e: 80 38 cpi r24, 0x80 ; 128 - c20: 41 f5 brne .+80 ; 0xc72 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - c22: 80 91 e8 00 lds r24, 0x00E8 - c26: 87 7f andi r24, 0xF7 ; 247 - c28: 80 93 e8 00 sts 0x00E8, r24 - -static void USB_Device_GetConfiguration(void) -{ - Endpoint_ClearSETUP(); - - Endpoint_Write_8(USB_Device_ConfigurationNumber); - c2c: 80 91 34 02 lds r24, 0x0234 - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_8(const uint8_t Data) - { - UEDATX = Data; - c30: 80 93 f1 00 sts 0x00F1, r24 - */ - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearIN(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - c34: 80 91 e8 00 lds r24, 0x00E8 - c38: 8e 77 andi r24, 0x7E ; 126 - c3a: 79 cf rjmp .-270 ; 0xb2e - if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) - USB_Device_GetConfiguration(); - - break; - case REQ_SetConfiguration: - if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) - c3c: 81 11 cpse r24, r1 - c3e: 19 c0 rjmp .+50 ; 0xc72 -} - -static void USB_Device_SetConfiguration(void) -{ - #if defined(FIXED_NUM_CONFIGURATIONS) - if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS) - c40: 90 91 3a 02 lds r25, 0x023A - c44: 92 30 cpi r25, 0x02 ; 2 - c46: a8 f4 brcc .+42 ; 0xc72 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - c48: 80 91 e8 00 lds r24, 0x00E8 - c4c: 87 7f andi r24, 0xF7 ; 247 - c4e: 80 93 e8 00 sts 0x00E8, r24 - #endif - #endif - - Endpoint_ClearSETUP(); - - USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue; - c52: 90 93 34 02 sts 0x0234, r25 - - Endpoint_ClearStatusStage(); - c56: 50 dd rcall .-1376 ; 0x6f8 - - if (USB_Device_ConfigurationNumber) - c58: 80 91 34 02 lds r24, 0x0234 - c5c: 81 11 cpse r24, r1 - c5e: 06 c0 rjmp .+12 ; 0xc6c - } - - static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; - static inline bool USB_Device_IsAddressSet(void) - { - return (UDADDR & (1 << ADDEN)); - c60: 80 91 e3 00 lds r24, 0x00E3 - USB_DeviceState = DEVICE_STATE_Configured; - else - USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; - c64: 87 fd sbrc r24, 7 - c66: 02 c0 rjmp .+4 ; 0xc6c - c68: 81 e0 ldi r24, 0x01 ; 1 - c6a: 01 c0 rjmp .+2 ; 0xc6e - c6c: 84 e0 ldi r24, 0x04 ; 4 - c6e: 8e bb out 0x1e, r24 ; 30 - - EVENT_USB_Device_ConfigurationChanged(); - c70: 54 db rcall .-2392 ; 0x31a - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - c72: 80 91 e8 00 lds r24, 0x00E8 - default: - break; - } - } - - if (Endpoint_IsSETUPReceived()) - c76: 83 ff sbrs r24, 3 - c78: 0a c0 rjmp .+20 ; 0xc8e - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - c7a: 80 91 e8 00 lds r24, 0x00E8 - c7e: 87 7f andi r24, 0xF7 ; 247 - c80: 80 93 e8 00 sts 0x00E8, r24 - * \ingroup Group_EndpointPacketManagement_AVR8 - */ - static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_StallTransaction(void) - { - UECONX |= (1 << STALLRQ); - c84: 80 91 eb 00 lds r24, 0x00EB - c88: 80 62 ori r24, 0x20 ; 32 - c8a: 80 93 eb 00 sts 0x00EB, r24 - { - Endpoint_ClearSETUP(); - Endpoint_StallTransaction(); - } -} - c8e: aa 96 adiw r28, 0x2a ; 42 - c90: 0f b6 in r0, 0x3f ; 63 - c92: f8 94 cli - c94: de bf out 0x3e, r29 ; 62 - c96: 0f be out 0x3f, r0 ; 63 - c98: cd bf out 0x3d, r28 ; 61 - c9a: df 91 pop r29 - c9c: cf 91 pop r28 - c9e: 1f 91 pop r17 - ca0: 08 95 ret - -00000ca2 : -#define __INCLUDE_FROM_EVENTS_C -#define __INCLUDE_FROM_USB_DRIVER -#include "Events.h" - -void USB_Event_Stub(void) -{ - ca2: 08 95 ret - -00000ca4 : -#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR) -volatile uint8_t USB_DeviceState; -#endif - -void USB_USBTask(void) -{ - ca4: cf 93 push r28 -} - -#if defined(USB_CAN_BE_DEVICE) -static void USB_DeviceTask(void) -{ - if (USB_DeviceState == DEVICE_STATE_Unattached) - ca6: 8e b3 in r24, 0x1e ; 30 - ca8: 88 23 and r24, r24 - caa: 99 f0 breq .+38 ; 0xcd2 - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - cac: c0 91 e9 00 lds r28, 0x00E9 - cb0: cf 70 andi r28, 0x0F ; 15 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. - */ - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetEndpointDirection(void) - { - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - cb2: 90 91 ec 00 lds r25, 0x00EC - cb6: 89 2f mov r24, r25 - cb8: 81 70 andi r24, 0x01 ; 1 - cba: 90 fd sbrc r25, 0 - cbc: 80 e8 ldi r24, 0x80 ; 128 - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - cbe: c8 2b or r28, r24 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - cc0: 10 92 e9 00 sts 0x00E9, r1 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - cc4: 80 91 e8 00 lds r24, 0x00E8 - - uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint(); - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - - if (Endpoint_IsSETUPReceived()) - cc8: 83 fd sbrc r24, 3 - USB_Device_ProcessControlRequest(); - cca: 92 de rcall .-732 ; 0x9f0 - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - ccc: cf 70 andi r28, 0x0F ; 15 - cce: c0 93 e9 00 sts 0x00E9, r28 - #elif defined(USB_CAN_BE_HOST) - USB_HostTask(); - #elif defined(USB_CAN_BE_DEVICE) - USB_DeviceTask(); - #endif -} - cd2: cf 91 pop r28 - cd4: 08 95 ret - -00000cd6 : - -void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); - cd6: cf 93 push r28 - cd8: df 93 push r29 - cda: ec 01 movw r28, r24 - cdc: fc 01 movw r30, r24 - cde: 70 96 adiw r30, 0x10 ; 16 - ce0: 8b e0 ldi r24, 0x0B ; 11 - ce2: df 01 movw r26, r30 - ce4: 1d 92 st X+, r1 - ce6: 8a 95 dec r24 - ce8: e9 f7 brne .-6 ; 0xce4 - cea: 82 e0 ldi r24, 0x02 ; 2 - cec: 8c 83 std Y+4, r24 ; 0x04 - cee: 89 87 std Y+9, r24 ; 0x09 - cf0: 83 e0 ldi r24, 0x03 ; 3 - cf2: 8e 87 std Y+14, r24 ; 0x0e - cf4: 61 e0 ldi r22, 0x01 ; 1 - cf6: ce 01 movw r24, r28 - cf8: 01 96 adiw r24, 0x01 ; 1 - cfa: b5 dc rcall .-1686 ; 0x666 - cfc: 88 23 and r24, r24 - cfe: 61 f0 breq .+24 ; 0xd18 - d00: 61 e0 ldi r22, 0x01 ; 1 - d02: ce 01 movw r24, r28 - d04: 06 96 adiw r24, 0x06 ; 6 - d06: af dc rcall .-1698 ; 0x666 - d08: 88 23 and r24, r24 - d0a: 31 f0 breq .+12 ; 0xd18 - d0c: 61 e0 ldi r22, 0x01 ; 1 - d0e: ce 01 movw r24, r28 - d10: 0b 96 adiw r24, 0x0b ; 11 - d12: df 91 pop r29 - d14: cf 91 pop r28 - d16: a7 cc rjmp .-1714 ; 0x666 - d18: 80 e0 ldi r24, 0x00 ; 0 - d1a: df 91 pop r29 - d1c: cf 91 pop r28 - d1e: 08 95 ret - -00000d20 : - d20: 0f 93 push r16 - d22: 1f 93 push r17 - d24: cf 93 push r28 - d26: 2e b3 in r18, 0x1e ; 30 - d28: 24 30 cpi r18, 0x04 ; 4 - d2a: f9 f4 brne .+62 ; 0xd6a - d2c: fc 01 movw r30, r24 - d2e: 04 89 ldd r16, Z+20 ; 0x14 - d30: 15 89 ldd r17, Z+21 ; 0x15 - d32: 26 89 ldd r18, Z+22 ; 0x16 - d34: 37 89 ldd r19, Z+23 ; 0x17 - d36: 01 2b or r16, r17 - d38: 02 2b or r16, r18 - d3a: 03 2b or r16, r19 - d3c: b1 f0 breq .+44 ; 0xd6a - d3e: c6 2f mov r28, r22 - d40: 81 81 ldd r24, Z+1 ; 0x01 - d42: 8f 70 andi r24, 0x0F ; 15 - d44: 80 93 e9 00 sts 0x00E9, r24 - d48: 80 91 e8 00 lds r24, 0x00E8 - d4c: 85 ff sbrs r24, 5 - d4e: 04 c0 rjmp .+8 ; 0xd58 - d50: c0 93 f1 00 sts 0x00F1, r28 - d54: 80 e0 ldi r24, 0x00 ; 0 - d56: 0a c0 rjmp .+20 ; 0xd6c - d58: 80 91 e8 00 lds r24, 0x00E8 - d5c: 8e 77 andi r24, 0x7E ; 126 - d5e: 80 93 e8 00 sts 0x00E8, r24 - d62: e7 dc rcall .-1586 ; 0x732 - d64: 88 23 and r24, r24 - d66: a1 f3 breq .-24 ; 0xd50 - d68: 01 c0 rjmp .+2 ; 0xd6c - d6a: 82 e0 ldi r24, 0x02 ; 2 - d6c: cf 91 pop r28 - d6e: 1f 91 pop r17 - d70: 0f 91 pop r16 - d72: 08 95 ret - -00000d74 : - d74: 2e b3 in r18, 0x1e ; 30 - d76: 24 30 cpi r18, 0x04 ; 4 - d78: 21 f5 brne .+72 ; 0xdc2 - d7a: fc 01 movw r30, r24 - d7c: 44 89 ldd r20, Z+20 ; 0x14 - d7e: 55 89 ldd r21, Z+21 ; 0x15 - d80: 66 89 ldd r22, Z+22 ; 0x16 - d82: 77 89 ldd r23, Z+23 ; 0x17 - d84: 45 2b or r20, r21 - d86: 46 2b or r20, r22 - d88: 47 2b or r20, r23 - d8a: d9 f0 breq .+54 ; 0xdc2 - d8c: 81 81 ldd r24, Z+1 ; 0x01 - d8e: 8f 70 andi r24, 0x0F ; 15 - d90: 80 93 e9 00 sts 0x00E9, r24 - d94: 80 91 f2 00 lds r24, 0x00F2 - d98: 88 23 and r24, r24 - d9a: 89 f0 breq .+34 ; 0xdbe - d9c: 90 91 e8 00 lds r25, 0x00E8 - da0: 80 91 e8 00 lds r24, 0x00E8 - da4: 8e 77 andi r24, 0x7E ; 126 - da6: 80 93 e8 00 sts 0x00E8, r24 - daa: 95 fd sbrc r25, 5 - dac: 08 c0 rjmp .+16 ; 0xdbe - dae: c1 dc rcall .-1662 ; 0x732 - db0: 81 11 cpse r24, r1 - db2: 08 c0 rjmp .+16 ; 0xdc4 - db4: 80 91 e8 00 lds r24, 0x00E8 - db8: 8e 77 andi r24, 0x7E ; 126 - dba: 80 93 e8 00 sts 0x00E8, r24 - dbe: 80 e0 ldi r24, 0x00 ; 0 - dc0: 08 95 ret - dc2: 82 e0 ldi r24, 0x02 ; 2 - dc4: 08 95 ret - -00000dc6 : - dc6: 2e b3 in r18, 0x1e ; 30 - dc8: 24 30 cpi r18, 0x04 ; 4 - dca: 89 f4 brne .+34 ; 0xdee - dcc: fc 01 movw r30, r24 - dce: 44 89 ldd r20, Z+20 ; 0x14 - dd0: 55 89 ldd r21, Z+21 ; 0x15 - dd2: 66 89 ldd r22, Z+22 ; 0x16 - dd4: 77 89 ldd r23, Z+23 ; 0x17 - dd6: 45 2b or r20, r21 - dd8: 46 2b or r20, r22 - dda: 47 2b or r20, r23 - ddc: 41 f0 breq .+16 ; 0xdee - dde: 21 81 ldd r18, Z+1 ; 0x01 - de0: 2f 70 andi r18, 0x0F ; 15 - de2: 20 93 e9 00 sts 0x00E9, r18 - de6: 20 91 e8 00 lds r18, 0x00E8 - dea: 20 fd sbrc r18, 0 - dec: c3 cf rjmp .-122 ; 0xd74 - dee: 08 95 ret - -00000df0 : - df0: 2e b3 in r18, 0x1e ; 30 - df2: 24 30 cpi r18, 0x04 ; 4 - df4: 19 f0 breq .+6 ; 0xdfc - df6: 8f ef ldi r24, 0xFF ; 255 - df8: 9f ef ldi r25, 0xFF ; 255 - dfa: 08 95 ret - dfc: fc 01 movw r30, r24 - dfe: 44 89 ldd r20, Z+20 ; 0x14 - e00: 55 89 ldd r21, Z+21 ; 0x15 - e02: 66 89 ldd r22, Z+22 ; 0x16 - e04: 77 89 ldd r23, Z+23 ; 0x17 - e06: 45 2b or r20, r21 - e08: 46 2b or r20, r22 - e0a: 47 2b or r20, r23 - e0c: a1 f3 breq .-24 ; 0xdf6 - e0e: 86 81 ldd r24, Z+6 ; 0x06 - e10: 8f 70 andi r24, 0x0F ; 15 - e12: 80 93 e9 00 sts 0x00E9, r24 - e16: 80 91 e8 00 lds r24, 0x00E8 - e1a: 82 ff sbrs r24, 2 - e1c: ec cf rjmp .-40 ; 0xdf6 - e1e: 80 91 f2 00 lds r24, 0x00F2 - e22: 88 23 and r24, r24 - e24: 21 f0 breq .+8 ; 0xe2e - e26: 20 91 f1 00 lds r18, 0x00F1 - e2a: 30 e0 ldi r19, 0x00 ; 0 - e2c: 02 c0 rjmp .+4 ; 0xe32 - e2e: 2f ef ldi r18, 0xFF ; 255 - e30: 3f ef ldi r19, 0xFF ; 255 - e32: 80 91 f2 00 lds r24, 0x00F2 - e36: 81 11 cpse r24, r1 - e38: 05 c0 rjmp .+10 ; 0xe44 - e3a: 80 91 e8 00 lds r24, 0x00E8 - e3e: 8b 77 andi r24, 0x7B ; 123 - e40: 80 93 e8 00 sts 0x00E8, r24 - e44: c9 01 movw r24, r18 - e46: 08 95 ret - -00000e48 : - return ReceivedByte; -} -#endif - -void CDC_Device_Event_Stub(void) -{ - e48: 08 95 ret - -00000e4a : -#define __INCLUDE_FROM_CDC_DRIVER -#define __INCLUDE_FROM_CDC_DEVICE_C -#include "CDCClassDevice.h" - -void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - e4a: cf 93 push r28 - e4c: df 93 push r29 - e4e: ec 01 movw r28, r24 - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return ((UEINTX & (1 << RXSTPI)) ? true : false); - e50: 80 91 e8 00 lds r24, 0x00E8 - if (!(Endpoint_IsSETUPReceived())) - e54: 83 ff sbrs r24, 3 - e56: a5 c0 rjmp .+330 ; 0xfa2 - return; - - if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber) - e58: 88 81 ld r24, Y - e5a: 90 e0 ldi r25, 0x00 ; 0 - e5c: 20 91 3c 02 lds r18, 0x023C - e60: 30 91 3d 02 lds r19, 0x023D - e64: 28 17 cp r18, r24 - e66: 39 07 cpc r19, r25 - e68: 09 f0 breq .+2 ; 0xe6c - e6a: 9b c0 rjmp .+310 ; 0xfa2 - return; - - switch (USB_ControlRequest.bRequest) - e6c: 80 91 39 02 lds r24, 0x0239 - e70: 81 32 cpi r24, 0x21 ; 33 - e72: 61 f0 breq .+24 ; 0xe8c - e74: 20 f4 brcc .+8 ; 0xe7e - e76: 80 32 cpi r24, 0x20 ; 32 - e78: 09 f4 brne .+2 ; 0xe7c - e7a: 3e c0 rjmp .+124 ; 0xef8 - e7c: 92 c0 rjmp .+292 ; 0xfa2 - e7e: 82 32 cpi r24, 0x22 ; 34 - e80: 09 f4 brne .+2 ; 0xe84 - e82: 6b c0 rjmp .+214 ; 0xf5a - e84: 83 32 cpi r24, 0x23 ; 35 - e86: 09 f4 brne .+2 ; 0xe8a - e88: 7c c0 rjmp .+248 ; 0xf82 - e8a: 8b c0 rjmp .+278 ; 0xfa2 - { - case CDC_REQ_GetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - e8c: 80 91 38 02 lds r24, 0x0238 - e90: 81 3a cpi r24, 0xA1 ; 161 - e92: 09 f0 breq .+2 ; 0xe96 - e94: 86 c0 rjmp .+268 ; 0xfa2 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - e96: 80 91 e8 00 lds r24, 0x00E8 - e9a: 87 7f andi r24, 0xF7 ; 247 - e9c: 80 93 e8 00 sts 0x00E8, r24 - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - return ((UEINTX & (1 << TXINI)) ? true : false); - ea0: 80 91 e8 00 lds r24, 0x00E8 - { - Endpoint_ClearSETUP(); - - while (!(Endpoint_IsINReady())); - ea4: 80 ff sbrs r24, 0 - ea6: fc cf rjmp .-8 ; 0xea0 - - Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - ea8: 8c 89 ldd r24, Y+20 ; 0x14 - eaa: 9d 89 ldd r25, Y+21 ; 0x15 - eac: ae 89 ldd r26, Y+22 ; 0x16 - eae: bf 89 ldd r27, Y+23 ; 0x17 - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_32_LE(const uint32_t Data) - { - UEDATX = (Data & 0xFF); - eb0: 80 93 f1 00 sts 0x00F1, r24 - UEDATX = (Data >> 8); - eb4: 49 2f mov r20, r25 - eb6: 5a 2f mov r21, r26 - eb8: 6b 2f mov r22, r27 - eba: 77 27 eor r23, r23 - ebc: 40 93 f1 00 sts 0x00F1, r20 - UEDATX = (Data >> 16); - ec0: ad 01 movw r20, r26 - ec2: 66 27 eor r22, r22 - ec4: 77 27 eor r23, r23 - ec6: 40 93 f1 00 sts 0x00F1, r20 - UEDATX = (Data >> 24); - eca: 8b 2f mov r24, r27 - ecc: 99 27 eor r25, r25 - ece: aa 27 eor r26, r26 - ed0: bb 27 eor r27, r27 - ed2: 80 93 f1 00 sts 0x00F1, r24 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat); - ed6: 88 8d ldd r24, Y+24 ; 0x18 - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_8(const uint8_t Data) - { - UEDATX = Data; - ed8: 80 93 f1 00 sts 0x00F1, r24 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType); - edc: 89 8d ldd r24, Y+25 ; 0x19 - ede: 80 93 f1 00 sts 0x00F1, r24 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits); - ee2: 8a 8d ldd r24, Y+26 ; 0x1a - ee4: 80 93 f1 00 sts 0x00F1, r24 - */ - static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearIN(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - ee8: 80 91 e8 00 lds r24, 0x00E8 - eec: 8e 77 andi r24, 0x7E ; 126 - eee: 80 93 e8 00 sts 0x00E8, r24 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - } - - break; - } -} - ef2: df 91 pop r29 - ef4: cf 91 pop r28 - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat); - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType); - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits); - - Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); - ef6: 00 cc rjmp .-2048 ; 0x6f8 - } - - break; - case CDC_REQ_SetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - ef8: 80 91 38 02 lds r24, 0x0238 - efc: 81 32 cpi r24, 0x21 ; 33 - efe: 09 f0 breq .+2 ; 0xf02 - f00: 50 c0 rjmp .+160 ; 0xfa2 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - f02: 80 91 e8 00 lds r24, 0x00E8 - f06: 87 7f andi r24, 0xF7 ; 247 - f08: 80 93 e8 00 sts 0x00E8, r24 - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - return ((UEINTX & (1 << RXOUTI)) ? true : false); - f0c: 80 91 e8 00 lds r24, 0x00E8 - { - Endpoint_ClearSETUP(); - - while (!(Endpoint_IsOUTReceived())) - f10: 82 fd sbrc r24, 2 - f12: 04 c0 rjmp .+8 ; 0xf1c - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - f14: 8e b3 in r24, 0x1e ; 30 - f16: 81 11 cpse r24, r1 - f18: f9 cf rjmp .-14 ; 0xf0c - f1a: 43 c0 rjmp .+134 ; 0xfa2 - { - uint32_t Value; - uint8_t Bytes[4]; - } Data; - - Data.Bytes[0] = UEDATX; - f1c: 30 91 f1 00 lds r19, 0x00F1 - Data.Bytes[1] = UEDATX; - f20: 20 91 f1 00 lds r18, 0x00F1 - Data.Bytes[2] = UEDATX; - f24: 90 91 f1 00 lds r25, 0x00F1 - Data.Bytes[3] = UEDATX; - f28: 80 91 f1 00 lds r24, 0x00F1 - return; - } - - CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE(); - f2c: 3c 8b std Y+20, r19 ; 0x14 - f2e: 2d 8b std Y+21, r18 ; 0x15 - f30: 9e 8b std Y+22, r25 ; 0x16 - f32: 8f 8b std Y+23, r24 ; 0x17 - * \return Next byte in the currently selected endpoint's FIFO buffer. - */ - static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_Read_8(void) - { - return UEDATX; - f34: 80 91 f1 00 lds r24, 0x00F1 - CDCInterfaceInfo->State.LineEncoding.CharFormat = Endpoint_Read_8(); - f38: 88 8f std Y+24, r24 ; 0x18 - f3a: 80 91 f1 00 lds r24, 0x00F1 - CDCInterfaceInfo->State.LineEncoding.ParityType = Endpoint_Read_8(); - f3e: 89 8f std Y+25, r24 ; 0x19 - f40: 80 91 f1 00 lds r24, 0x00F1 - CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8(); - f44: 8a 8f std Y+26, r24 ; 0x1a - */ - static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearOUT(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - f46: 80 91 e8 00 lds r24, 0x00E8 - f4a: 8b 77 andi r24, 0x7B ; 123 - f4c: 80 93 e8 00 sts 0x00E8, r24 - - Endpoint_ClearOUT(); - Endpoint_ClearStatusStage(); - f50: d3 db rcall .-2138 ; 0x6f8 - - EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo); - f52: ce 01 movw r24, r28 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - } - - break; - } -} - f54: df 91 pop r29 - f56: cf 91 pop r28 - CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8(); - - Endpoint_ClearOUT(); - Endpoint_ClearStatusStage(); - - EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo); - f58: 24 ca rjmp .-3000 ; 0x3a2 - } - - break; - case CDC_REQ_SetControlLineState: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - f5a: 80 91 38 02 lds r24, 0x0238 - f5e: 81 32 cpi r24, 0x21 ; 33 - f60: 01 f5 brne .+64 ; 0xfa2 - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - UEINTX &= ~(1 << RXSTPI); - f62: 80 91 e8 00 lds r24, 0x00E8 - f66: 87 7f andi r24, 0xF7 ; 247 - f68: 80 93 e8 00 sts 0x00E8, r24 - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - f6c: c5 db rcall .-2166 ; 0x6f8 - - CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue; - f6e: 80 91 3a 02 lds r24, 0x023A - f72: 90 91 3b 02 lds r25, 0x023B - f76: 99 8b std Y+17, r25 ; 0x11 - f78: 88 8b std Y+16, r24 ; 0x10 - - EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo); - f7a: ce 01 movw r24, r28 - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - } - - break; - } -} - f7c: df 91 pop r29 - f7e: cf 91 pop r28 - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue; - - EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo); - f80: 63 cf rjmp .-314 ; 0xe48 - } - - break; - case CDC_REQ_SendBreak: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - f82: 80 91 38 02 lds r24, 0x0238 - f86: 81 32 cpi r24, 0x21 ; 33 - f88: 61 f4 brne .+24 ; 0xfa2 - f8a: 80 91 e8 00 lds r24, 0x00E8 - f8e: 87 7f andi r24, 0xF7 ; 247 - f90: 80 93 e8 00 sts 0x00E8, r24 - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - f94: b1 db rcall .-2206 ; 0x6f8 - - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - f96: 60 91 3a 02 lds r22, 0x023A - f9a: ce 01 movw r24, r28 - } - - break; - } -} - f9c: df 91 pop r29 - f9e: cf 91 pop r28 - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - fa0: 53 cf rjmp .-346 ; 0xe48 - } - - break; - } -} - fa2: df 91 pop r29 - fa4: cf 91 pop r28 - fa6: 08 95 ret - -00000fa8 <__udivmodsi4>: - fa8: a1 e2 ldi r26, 0x21 ; 33 - faa: 1a 2e mov r1, r26 - fac: aa 1b sub r26, r26 - fae: bb 1b sub r27, r27 - fb0: fd 01 movw r30, r26 - fb2: 0d c0 rjmp .+26 ; 0xfce <__udivmodsi4_ep> - -00000fb4 <__udivmodsi4_loop>: - fb4: aa 1f adc r26, r26 - fb6: bb 1f adc r27, r27 - fb8: ee 1f adc r30, r30 - fba: ff 1f adc r31, r31 - fbc: a2 17 cp r26, r18 - fbe: b3 07 cpc r27, r19 - fc0: e4 07 cpc r30, r20 - fc2: f5 07 cpc r31, r21 - fc4: 20 f0 brcs .+8 ; 0xfce <__udivmodsi4_ep> - fc6: a2 1b sub r26, r18 - fc8: b3 0b sbc r27, r19 - fca: e4 0b sbc r30, r20 - fcc: f5 0b sbc r31, r21 - -00000fce <__udivmodsi4_ep>: - fce: 66 1f adc r22, r22 - fd0: 77 1f adc r23, r23 - fd2: 88 1f adc r24, r24 - fd4: 99 1f adc r25, r25 - fd6: 1a 94 dec r1 - fd8: 69 f7 brne .-38 ; 0xfb4 <__udivmodsi4_loop> - fda: 60 95 com r22 - fdc: 70 95 com r23 - fde: 80 95 com r24 - fe0: 90 95 com r25 - fe2: 9b 01 movw r18, r22 - fe4: ac 01 movw r20, r24 - fe6: bd 01 movw r22, r26 - fe8: cf 01 movw r24, r30 - fea: 08 95 ret - -00000fec <_exit>: - fec: f8 94 cli - -00000fee <__stop_program>: - fee: ff cf rjmp .-2 ; 0xfee <__stop_program> diff --git a/gadget/USB_gadget.map b/gadget/USB_gadget.map deleted file mode 100644 index 5edd4a3..0000000 --- a/gadget/USB_gadget.map +++ /dev/null @@ -1,1493 +0,0 @@ -Membre d'archive inclu pour satisfaire la référence par fichier (symbole) - -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - obj/HIDParser.o (__mulhi3) -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - obj/USB_gadget.o (__udivmodsi4) -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o (exit) -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - obj/USB_gadget.o (__do_copy_data) -/usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - obj/USB_gadget.o (__do_clear_bss) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - obj/RNDISClassDevice.o (memcpy_P) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - obj/CDCClassDevice.o (__strlen_P) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - obj/HIDClassDevice.o (memcmp) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - obj/HIDClassDevice.o (memcpy) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - obj/HIDClassDevice.o (memset) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - obj/EndpointStream_AVR8.o (eeprom_read_byte) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - obj/EndpointStream_AVR8.o (eeprom_update_byte) - -Allocation des symboles communs -Symbole commun taille fichier - -USB_IsInitialized 0x1 obj/USBTask.o -USB_Device_ConfigurationNumber - 0x1 obj/DeviceStandardReq.o -USB_Device_CurrentlySelfPowered - 0x1 obj/DeviceStandardReq.o -USB_ControlRequest 0x8 obj/USBTask.o -USB_Device_RemoteWakeupEnabled - 0x1 obj/DeviceStandardReq.o - -Sections d'entrée éliminées - - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - .text 0x0000000000000000 0x0 obj/USB_gadget.o - .text 0x0000000000000000 0x0 obj/Descriptors.o - .data 0x0000000000000000 0x0 obj/Descriptors.o - .bss 0x0000000000000000 0x0 obj/Descriptors.o - .text 0x0000000000000000 0x0 obj/HIDParser.o - .data 0x0000000000000000 0x0 obj/HIDParser.o - .bss 0x0000000000000000 0x0 obj/HIDParser.o - .text.USB_ProcessHIDReport - 0x0000000000000000 0x6fa obj/HIDParser.o - .text.USB_GetHIDReportItemInfo - 0x0000000000000000 0xbc obj/HIDParser.o - .text.USB_SetHIDReportItemInfo - 0x0000000000000000 0xc0 obj/HIDParser.o - .text.USB_GetHIDReportSize - 0x0000000000000000 0x54 obj/HIDParser.o - .debug_info 0x0000000000000000 0x738 obj/HIDParser.o - .debug_abbrev 0x0000000000000000 0x21e obj/HIDParser.o - .debug_loc 0x0000000000000000 0xa78 obj/HIDParser.o - .debug_aranges - 0x0000000000000000 0x38 obj/HIDParser.o - .debug_ranges 0x0000000000000000 0xd0 obj/HIDParser.o - .debug_line 0x0000000000000000 0x56f obj/HIDParser.o - .debug_str 0x0000000000000000 0x6c4 obj/HIDParser.o - .comment 0x0000000000000000 0x12 obj/HIDParser.o - .debug_frame 0x0000000000000000 0x11c obj/HIDParser.o - .text 0x0000000000000000 0x0 obj/Device_AVR8.o - .data 0x0000000000000000 0x0 obj/Device_AVR8.o - .bss 0x0000000000000000 0x0 obj/Device_AVR8.o - .text.USB_Device_SendRemoteWakeup - 0x0000000000000000 0x2a obj/Device_AVR8.o - .debug_info 0x0000000000000000 0xd2 obj/Device_AVR8.o - .debug_abbrev 0x0000000000000000 0x80 obj/Device_AVR8.o - .debug_aranges - 0x0000000000000000 0x20 obj/Device_AVR8.o - .debug_ranges 0x0000000000000000 0x10 obj/Device_AVR8.o - .debug_line 0x0000000000000000 0xfe obj/Device_AVR8.o - .debug_str 0x0000000000000000 0x200 obj/Device_AVR8.o - .comment 0x0000000000000000 0x12 obj/Device_AVR8.o - .debug_frame 0x0000000000000000 0x24 obj/Device_AVR8.o - .text 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o - .data 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o - .bss 0x0000000000000000 0x0 obj/EndpointStream_AVR8.o - .text.Endpoint_Discard_Stream - 0x0000000000000000 0x80 obj/EndpointStream_AVR8.o - .text.Endpoint_Null_Stream - 0x0000000000000000 0x80 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Stream_LE - 0x0000000000000000 0x96 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Stream_BE - 0x0000000000000000 0xa2 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Stream_LE - 0x0000000000000000 0x96 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Stream_BE - 0x0000000000000000 0xa2 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_PStream_LE - 0x0000000000000000 0x9a obj/EndpointStream_AVR8.o - .text.Endpoint_Write_PStream_BE - 0x0000000000000000 0xa4 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_EStream_LE - 0x0000000000000000 0x9e obj/EndpointStream_AVR8.o - .text.Endpoint_Write_EStream_BE - 0x0000000000000000 0xa6 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_EStream_LE - 0x0000000000000000 0x9e obj/EndpointStream_AVR8.o - .text.Endpoint_Read_EStream_BE - 0x0000000000000000 0xa6 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Control_Stream_BE - 0x0000000000000000 0xc2 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Control_Stream_LE - 0x0000000000000000 0x74 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Control_Stream_BE - 0x0000000000000000 0x76 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Control_PStream_BE - 0x0000000000000000 0xc4 obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Control_EStream_LE - 0x0000000000000000 0xea obj/EndpointStream_AVR8.o - .text.Endpoint_Write_Control_EStream_BE - 0x0000000000000000 0xf6 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Control_EStream_LE - 0x0000000000000000 0x88 obj/EndpointStream_AVR8.o - .text.Endpoint_Read_Control_EStream_BE - 0x0000000000000000 0x86 obj/EndpointStream_AVR8.o - .text 0x0000000000000000 0x0 obj/Endpoint_AVR8.o - .data 0x0000000000000000 0x0 obj/Endpoint_AVR8.o - .bss 0x0000000000000000 0x0 obj/Endpoint_AVR8.o - .text.Endpoint_ClearEndpoints - 0x0000000000000000 0x28 obj/Endpoint_AVR8.o - .text 0x0000000000000000 0x0 obj/Host_AVR8.o - .data 0x0000000000000000 0x0 obj/Host_AVR8.o - .bss 0x0000000000000000 0x0 obj/Host_AVR8.o - .debug_info 0x0000000000000000 0x56 obj/Host_AVR8.o - .debug_abbrev 0x0000000000000000 0x26 obj/Host_AVR8.o - .debug_aranges - 0x0000000000000000 0x18 obj/Host_AVR8.o - .debug_line 0x0000000000000000 0x1a obj/Host_AVR8.o - .debug_str 0x0000000000000000 0x19f obj/Host_AVR8.o - .comment 0x0000000000000000 0x12 obj/Host_AVR8.o - .text 0x0000000000000000 0x0 obj/PipeStream_AVR8.o - .data 0x0000000000000000 0x0 obj/PipeStream_AVR8.o - .bss 0x0000000000000000 0x0 obj/PipeStream_AVR8.o - .debug_info 0x0000000000000000 0x56 obj/PipeStream_AVR8.o - .debug_abbrev 0x0000000000000000 0x26 obj/PipeStream_AVR8.o - .debug_aranges - 0x0000000000000000 0x18 obj/PipeStream_AVR8.o - .debug_line 0x0000000000000000 0x1a obj/PipeStream_AVR8.o - .debug_str 0x0000000000000000 0x1a5 obj/PipeStream_AVR8.o - .comment 0x0000000000000000 0x12 obj/PipeStream_AVR8.o - .text 0x0000000000000000 0x0 obj/Pipe_AVR8.o - .data 0x0000000000000000 0x0 obj/Pipe_AVR8.o - .bss 0x0000000000000000 0x0 obj/Pipe_AVR8.o - .debug_info 0x0000000000000000 0x56 obj/Pipe_AVR8.o - .debug_abbrev 0x0000000000000000 0x26 obj/Pipe_AVR8.o - .debug_aranges - 0x0000000000000000 0x18 obj/Pipe_AVR8.o - .debug_line 0x0000000000000000 0x1a obj/Pipe_AVR8.o - .debug_str 0x0000000000000000 0x19f obj/Pipe_AVR8.o - .comment 0x0000000000000000 0x12 obj/Pipe_AVR8.o - .text 0x0000000000000000 0x0 obj/USBController_AVR8.o - .data 0x0000000000000000 0x0 obj/USBController_AVR8.o - .bss 0x0000000000000000 0x0 obj/USBController_AVR8.o - .text.USB_Disable - 0x0000000000000000 0x2e obj/USBController_AVR8.o - .text 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o - .data 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o - .bss 0x0000000000000000 0x0 obj/USBInterrupt_AVR8.o - .text 0x0000000000000000 0x0 obj/ConfigDescriptors.o - .data 0x0000000000000000 0x0 obj/ConfigDescriptors.o - .bss 0x0000000000000000 0x0 obj/ConfigDescriptors.o - .text.USB_GetNextDescriptor - 0x0000000000000000 0x3c obj/ConfigDescriptors.o - .text.USB_GetNextDescriptorOfType - 0x0000000000000000 0x48 obj/ConfigDescriptors.o - .text.USB_GetNextDescriptorOfTypeBefore - 0x0000000000000000 0x58 obj/ConfigDescriptors.o - .text.USB_GetNextDescriptorOfTypeAfter - 0x0000000000000000 0x3e obj/ConfigDescriptors.o - .text.USB_GetNextDescriptorComp - 0x0000000000000000 0x66 obj/ConfigDescriptors.o - .debug_info 0x0000000000000000 0x3cd obj/ConfigDescriptors.o - .debug_abbrev 0x0000000000000000 0x183 obj/ConfigDescriptors.o - .debug_loc 0x0000000000000000 0x5bd obj/ConfigDescriptors.o - .debug_aranges - 0x0000000000000000 0x40 obj/ConfigDescriptors.o - .debug_ranges 0x0000000000000000 0x30 obj/ConfigDescriptors.o - .debug_line 0x0000000000000000 0x1ce obj/ConfigDescriptors.o - .debug_str 0x0000000000000000 0x3e8 obj/ConfigDescriptors.o - .comment 0x0000000000000000 0x12 obj/ConfigDescriptors.o - .debug_frame 0x0000000000000000 0x108 obj/ConfigDescriptors.o - .text 0x0000000000000000 0x0 obj/DeviceStandardReq.o - .data 0x0000000000000000 0x0 obj/DeviceStandardReq.o - .bss 0x0000000000000000 0x0 obj/DeviceStandardReq.o - .text 0x0000000000000000 0x0 obj/Events.o - .data 0x0000000000000000 0x0 obj/Events.o - .bss 0x0000000000000000 0x0 obj/Events.o - .text 0x0000000000000000 0x0 obj/HostStandardReq.o - .data 0x0000000000000000 0x0 obj/HostStandardReq.o - .bss 0x0000000000000000 0x0 obj/HostStandardReq.o - .debug_info 0x0000000000000000 0x56 obj/HostStandardReq.o - .debug_abbrev 0x0000000000000000 0x26 obj/HostStandardReq.o - .debug_aranges - 0x0000000000000000 0x18 obj/HostStandardReq.o - .debug_line 0x0000000000000000 0x1a obj/HostStandardReq.o - .debug_str 0x0000000000000000 0x1a0 obj/HostStandardReq.o - .comment 0x0000000000000000 0x12 obj/HostStandardReq.o - .text 0x0000000000000000 0x0 obj/USBTask.o - .data 0x0000000000000000 0x0 obj/USBTask.o - .bss 0x0000000000000000 0x0 obj/USBTask.o - .text 0x0000000000000000 0x0 obj/AudioClassDevice.o - .data 0x0000000000000000 0x0 obj/AudioClassDevice.o - .bss 0x0000000000000000 0x0 obj/AudioClassDevice.o - .text.Audio_Device_ConfigureEndpoints - 0x0000000000000000 0x32 obj/AudioClassDevice.o - .text.Audio_Device_Event_Stub - 0x0000000000000000 0x2 obj/AudioClassDevice.o - .text.Audio_Device_ProcessControlRequest - 0x0000000000000000 0x2e4 obj/AudioClassDevice.o - .debug_info 0x0000000000000000 0x8ea obj/AudioClassDevice.o - .debug_abbrev 0x0000000000000000 0x205 obj/AudioClassDevice.o - .debug_loc 0x0000000000000000 0x37c obj/AudioClassDevice.o - .debug_aranges - 0x0000000000000000 0x30 obj/AudioClassDevice.o - .debug_ranges 0x0000000000000000 0x20 obj/AudioClassDevice.o - .debug_line 0x0000000000000000 0x3e3 obj/AudioClassDevice.o - .debug_str 0x0000000000000000 0x6ac obj/AudioClassDevice.o - .comment 0x0000000000000000 0x12 obj/AudioClassDevice.o - .debug_frame 0x0000000000000000 0xa8 obj/AudioClassDevice.o - .text 0x0000000000000000 0x0 obj/CDCClassDevice.o - .data 0x0000000000000000 0x0 obj/CDCClassDevice.o - .bss 0x0000000000000000 0x0 obj/CDCClassDevice.o - .text.CDC_Device_SendString - 0x0000000000000000 0x40 obj/CDCClassDevice.o - .text.CDC_Device_SendString_P - 0x0000000000000000 0x50 obj/CDCClassDevice.o - .text.CDC_Device_SendData - 0x0000000000000000 0x32 obj/CDCClassDevice.o - .text.CDC_Device_SendData_P - 0x0000000000000000 0x32 obj/CDCClassDevice.o - .text.CDC_Device_putchar - 0x0000000000000000 0x22 obj/CDCClassDevice.o - .text.CDC_Device_BytesReceived - 0x0000000000000000 0x48 obj/CDCClassDevice.o - .text.CDC_Device_getchar - 0x0000000000000000 0x14 obj/CDCClassDevice.o - .text.CDC_Device_getchar_Blocking - 0x0000000000000000 0x30 obj/CDCClassDevice.o - .rodata 0x0000000000000000 0x8 obj/CDCClassDevice.o - .text.CDC_Device_SendControlLineStateChange - 0x0000000000000000 0x8c obj/CDCClassDevice.o - .text.CDC_Device_CreateStream - 0x0000000000000000 0x26 obj/CDCClassDevice.o - .text.CDC_Device_CreateBlockingStream - 0x0000000000000000 0x26 obj/CDCClassDevice.o - .text 0x0000000000000000 0x0 obj/HIDClassDevice.o - .data 0x0000000000000000 0x0 obj/HIDClassDevice.o - .bss 0x0000000000000000 0x0 obj/HIDClassDevice.o - .text.HID_Device_ProcessControlRequest - 0x0000000000000000 0x282 obj/HIDClassDevice.o - .text.HID_Device_ConfigureEndpoints - 0x0000000000000000 0x28 obj/HIDClassDevice.o - .text.HID_Device_USBTask - 0x0000000000000000 0x18c obj/HIDClassDevice.o - .debug_info 0x0000000000000000 0x9f5 obj/HIDClassDevice.o - .debug_abbrev 0x0000000000000000 0x264 obj/HIDClassDevice.o - .debug_loc 0x0000000000000000 0x44b obj/HIDClassDevice.o - .debug_aranges - 0x0000000000000000 0x30 obj/HIDClassDevice.o - .debug_ranges 0x0000000000000000 0x20 obj/HIDClassDevice.o - .debug_line 0x0000000000000000 0x4ed obj/HIDClassDevice.o - .debug_str 0x0000000000000000 0x6fe obj/HIDClassDevice.o - .comment 0x0000000000000000 0x12 obj/HIDClassDevice.o - .debug_frame 0x0000000000000000 0xe8 obj/HIDClassDevice.o - .text 0x0000000000000000 0x0 obj/MassStorageClassDevice.o - .data 0x0000000000000000 0x0 obj/MassStorageClassDevice.o - .bss 0x0000000000000000 0x0 obj/MassStorageClassDevice.o - .text.MS_Device_ProcessControlRequest - 0x0000000000000000 0x86 obj/MassStorageClassDevice.o - .text.MS_Device_ConfigureEndpoints - 0x0000000000000000 0x3e obj/MassStorageClassDevice.o - .text.MS_Device_USBTask - 0x0000000000000000 0x232 obj/MassStorageClassDevice.o - .debug_info 0x0000000000000000 0x949 obj/MassStorageClassDevice.o - .debug_abbrev 0x0000000000000000 0x2a8 obj/MassStorageClassDevice.o - .debug_loc 0x0000000000000000 0x2b8 obj/MassStorageClassDevice.o - .debug_aranges - 0x0000000000000000 0x30 obj/MassStorageClassDevice.o - .debug_ranges 0x0000000000000000 0x20 obj/MassStorageClassDevice.o - .debug_line 0x0000000000000000 0x479 obj/MassStorageClassDevice.o - .debug_str 0x0000000000000000 0x7f8 obj/MassStorageClassDevice.o - .comment 0x0000000000000000 0x12 obj/MassStorageClassDevice.o - .debug_frame 0x0000000000000000 0x80 obj/MassStorageClassDevice.o - .text 0x0000000000000000 0x0 obj/MIDIClassDevice.o - .data 0x0000000000000000 0x0 obj/MIDIClassDevice.o - .bss 0x0000000000000000 0x0 obj/MIDIClassDevice.o - .text.MIDI_Device_ConfigureEndpoints - 0x0000000000000000 0x32 obj/MIDIClassDevice.o - .text.MIDI_Device_SendEventPacket - 0x0000000000000000 0x44 obj/MIDIClassDevice.o - .text.MIDI_Device_Flush - 0x0000000000000000 0x2a obj/MIDIClassDevice.o - .text.MIDI_Device_USBTask - 0x0000000000000000 0x20 obj/MIDIClassDevice.o - .text.MIDI_Device_ReceiveEventPacket - 0x0000000000000000 0x48 obj/MIDIClassDevice.o - .debug_info 0x0000000000000000 0x629 obj/MIDIClassDevice.o - .debug_abbrev 0x0000000000000000 0x22b obj/MIDIClassDevice.o - .debug_loc 0x0000000000000000 0x304 obj/MIDIClassDevice.o - .debug_aranges - 0x0000000000000000 0x40 obj/MIDIClassDevice.o - .debug_ranges 0x0000000000000000 0x30 obj/MIDIClassDevice.o - .debug_line 0x0000000000000000 0x320 obj/MIDIClassDevice.o - .debug_str 0x0000000000000000 0x66d obj/MIDIClassDevice.o - .comment 0x0000000000000000 0x12 obj/MIDIClassDevice.o - .debug_frame 0x0000000000000000 0x70 obj/MIDIClassDevice.o - .text 0x0000000000000000 0x0 obj/PrinterClassDevice.o - .data 0x0000000000000000 0x0 obj/PrinterClassDevice.o - .bss 0x0000000000000000 0x0 obj/PrinterClassDevice.o - .text.PRNT_Device_ConfigureEndpoints - 0x0000000000000000 0x38 obj/PrinterClassDevice.o - .text.PRNT_Device_SendString - 0x0000000000000000 0x30 obj/PrinterClassDevice.o - .text.PRNT_Device_SendData - 0x0000000000000000 0x22 obj/PrinterClassDevice.o - .text.PRNT_Device_SendByte - 0x0000000000000000 0x3e obj/PrinterClassDevice.o - .text.PRNT_Device_putchar - 0x0000000000000000 0x22 obj/PrinterClassDevice.o - .text.PRNT_Device_Flush - 0x0000000000000000 0x44 obj/PrinterClassDevice.o - .text.PRNT_Device_USBTask - 0x0000000000000000 0x9a obj/PrinterClassDevice.o - .text.PRNT_Device_BytesReceived - 0x0000000000000000 0x38 obj/PrinterClassDevice.o - .text.PRNT_Device_ReceiveByte - 0x0000000000000000 0x48 obj/PrinterClassDevice.o - .text.PRNT_Device_getchar - 0x0000000000000000 0x14 obj/PrinterClassDevice.o - .text.PRNT_Device_getchar_Blocking - 0x0000000000000000 0x30 obj/PrinterClassDevice.o - .text.PRNT_Device_CreateStream - 0x0000000000000000 0x26 obj/PrinterClassDevice.o - .text.PRNT_Device_CreateBlockingStream - 0x0000000000000000 0x26 obj/PrinterClassDevice.o - .text.PRNT_Device_Event_Stub - 0x0000000000000000 0x2 obj/PrinterClassDevice.o - .text.PRNT_Device_ProcessControlRequest - 0x0000000000000000 0xd6 obj/PrinterClassDevice.o - .debug_info 0x0000000000000000 0xcd3 obj/PrinterClassDevice.o - .debug_abbrev 0x0000000000000000 0x343 obj/PrinterClassDevice.o - .debug_loc 0x0000000000000000 0x837 obj/PrinterClassDevice.o - .debug_aranges - 0x0000000000000000 0x90 obj/PrinterClassDevice.o - .debug_ranges 0x0000000000000000 0x80 obj/PrinterClassDevice.o - .debug_line 0x0000000000000000 0x67f obj/PrinterClassDevice.o - .debug_str 0x0000000000000000 0x936 obj/PrinterClassDevice.o - .comment 0x0000000000000000 0x12 obj/PrinterClassDevice.o - .debug_frame 0x0000000000000000 0x13c obj/PrinterClassDevice.o - .text 0x0000000000000000 0x0 obj/RNDISClassDevice.o - .data 0x0000000000000000 0x0 obj/RNDISClassDevice.o - .bss 0x0000000000000000 0x0 obj/RNDISClassDevice.o - .text.RNDIS_Device_ProcessControlRequest - 0x0000000000000000 0x4ec obj/RNDISClassDevice.o - .text.RNDIS_Device_ConfigureEndpoints - 0x0000000000000000 0x64 obj/RNDISClassDevice.o - .rodata 0x0000000000000000 0x8 obj/RNDISClassDevice.o - .text.RNDIS_Device_USBTask - 0x0000000000000000 0x7e obj/RNDISClassDevice.o - .text.RNDIS_Device_IsPacketReceived - 0x0000000000000000 0x26 obj/RNDISClassDevice.o - .text.RNDIS_Device_ReadPacket - 0x0000000000000000 0xb4 obj/RNDISClassDevice.o - .text.RNDIS_Device_SendPacket - 0x0000000000000000 0xd2 obj/RNDISClassDevice.o - .progmem.data 0x0000000000000000 0x6c obj/RNDISClassDevice.o - .debug_info 0x0000000000000000 0x1154 obj/RNDISClassDevice.o - .debug_abbrev 0x0000000000000000 0x36f obj/RNDISClassDevice.o - .debug_loc 0x0000000000000000 0xdce obj/RNDISClassDevice.o - .debug_aranges - 0x0000000000000000 0x48 obj/RNDISClassDevice.o - .debug_ranges 0x0000000000000000 0x88 obj/RNDISClassDevice.o - .debug_line 0x0000000000000000 0x692 obj/RNDISClassDevice.o - .debug_str 0x0000000000000000 0xd6e obj/RNDISClassDevice.o - .comment 0x0000000000000000 0x12 obj/RNDISClassDevice.o - .debug_frame 0x0000000000000000 0x10c obj/RNDISClassDevice.o - .text 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o - .data 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o - .bss 0x0000000000000000 0x0 obj/AndroidAccessoryClassHost.o - .debug_info 0x0000000000000000 0x56 obj/AndroidAccessoryClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/AndroidAccessoryClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/AndroidAccessoryClassHost.o - .debug_line 0x0000000000000000 0x1a obj/AndroidAccessoryClassHost.o - .debug_str 0x0000000000000000 0x1b0 obj/AndroidAccessoryClassHost.o - .comment 0x0000000000000000 0x12 obj/AndroidAccessoryClassHost.o - .text 0x0000000000000000 0x0 obj/AudioClassHost.o - .data 0x0000000000000000 0x0 obj/AudioClassHost.o - .bss 0x0000000000000000 0x0 obj/AudioClassHost.o - .debug_info 0x0000000000000000 0x56 obj/AudioClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/AudioClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/AudioClassHost.o - .debug_line 0x0000000000000000 0x1a obj/AudioClassHost.o - .debug_str 0x0000000000000000 0x1a5 obj/AudioClassHost.o - .comment 0x0000000000000000 0x12 obj/AudioClassHost.o - .text 0x0000000000000000 0x0 obj/CDCClassHost.o - .data 0x0000000000000000 0x0 obj/CDCClassHost.o - .bss 0x0000000000000000 0x0 obj/CDCClassHost.o - .debug_info 0x0000000000000000 0x56 obj/CDCClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/CDCClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/CDCClassHost.o - .debug_line 0x0000000000000000 0x1a obj/CDCClassHost.o - .debug_str 0x0000000000000000 0x1a3 obj/CDCClassHost.o - .comment 0x0000000000000000 0x12 obj/CDCClassHost.o - .text 0x0000000000000000 0x0 obj/HIDClassHost.o - .data 0x0000000000000000 0x0 obj/HIDClassHost.o - .bss 0x0000000000000000 0x0 obj/HIDClassHost.o - .debug_info 0x0000000000000000 0x56 obj/HIDClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/HIDClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/HIDClassHost.o - .debug_line 0x0000000000000000 0x1a obj/HIDClassHost.o - .debug_str 0x0000000000000000 0x1a3 obj/HIDClassHost.o - .comment 0x0000000000000000 0x12 obj/HIDClassHost.o - .text 0x0000000000000000 0x0 obj/MassStorageClassHost.o - .data 0x0000000000000000 0x0 obj/MassStorageClassHost.o - .bss 0x0000000000000000 0x0 obj/MassStorageClassHost.o - .debug_info 0x0000000000000000 0x56 obj/MassStorageClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/MassStorageClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/MassStorageClassHost.o - .debug_line 0x0000000000000000 0x1a obj/MassStorageClassHost.o - .debug_str 0x0000000000000000 0x1ab obj/MassStorageClassHost.o - .comment 0x0000000000000000 0x12 obj/MassStorageClassHost.o - .text 0x0000000000000000 0x0 obj/MIDIClassHost.o - .data 0x0000000000000000 0x0 obj/MIDIClassHost.o - .bss 0x0000000000000000 0x0 obj/MIDIClassHost.o - .debug_info 0x0000000000000000 0x56 obj/MIDIClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/MIDIClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/MIDIClassHost.o - .debug_line 0x0000000000000000 0x1a obj/MIDIClassHost.o - .debug_str 0x0000000000000000 0x1a4 obj/MIDIClassHost.o - .comment 0x0000000000000000 0x12 obj/MIDIClassHost.o - .text 0x0000000000000000 0x0 obj/PrinterClassHost.o - .data 0x0000000000000000 0x0 obj/PrinterClassHost.o - .bss 0x0000000000000000 0x0 obj/PrinterClassHost.o - .debug_info 0x0000000000000000 0x56 obj/PrinterClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/PrinterClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/PrinterClassHost.o - .debug_line 0x0000000000000000 0x1a obj/PrinterClassHost.o - .debug_str 0x0000000000000000 0x1a7 obj/PrinterClassHost.o - .comment 0x0000000000000000 0x12 obj/PrinterClassHost.o - .text 0x0000000000000000 0x0 obj/RNDISClassHost.o - .data 0x0000000000000000 0x0 obj/RNDISClassHost.o - .bss 0x0000000000000000 0x0 obj/RNDISClassHost.o - .debug_info 0x0000000000000000 0x56 obj/RNDISClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/RNDISClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/RNDISClassHost.o - .debug_line 0x0000000000000000 0x1a obj/RNDISClassHost.o - .debug_str 0x0000000000000000 0x1a5 obj/RNDISClassHost.o - .comment 0x0000000000000000 0x12 obj/RNDISClassHost.o - .text 0x0000000000000000 0x0 obj/StillImageClassHost.o - .data 0x0000000000000000 0x0 obj/StillImageClassHost.o - .bss 0x0000000000000000 0x0 obj/StillImageClassHost.o - .debug_info 0x0000000000000000 0x56 obj/StillImageClassHost.o - .debug_abbrev 0x0000000000000000 0x26 obj/StillImageClassHost.o - .debug_aranges - 0x0000000000000000 0x18 obj/StillImageClassHost.o - .debug_line 0x0000000000000000 0x1a obj/StillImageClassHost.o - .debug_str 0x0000000000000000 0x1aa obj/StillImageClassHost.o - .comment 0x0000000000000000 0x12 obj/StillImageClassHost.o - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.mul - 0x0000000000000000 0x22 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.div - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.prologue - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.builtins - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.fmul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text.libgcc.fixed - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc.mul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc.prologue - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc.builtins - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc.fmul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text.libgcc.fixed - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.mul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.div - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.prologue - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.builtins - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.fmul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text.libgcc.fixed - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.mul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.div - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.prologue - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.builtins - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.fmul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text.libgcc.fixed - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.mul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.div - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.prologue - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.builtins - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.fmul - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text.libgcc.fixed - 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - .text.avr-libc - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - .text.avr-libc - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - .text.avr-libc - 0x0000000000000000 0x1a /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - .text.avr-libc - 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - .text.avr-libc - 0x0000000000000000 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - .text.avr-libc - 0x0000000000000000 0x10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - .text 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - .data 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - .bss 0x0000000000000000 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - .text.avr-libc - 0x0000000000000000 0x24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - -Configuration mémoire - -Nom Origine Longueur Attributs -text 0x0000000000000000 0x0000000000010000 xr -data 0x0000000000800060 0x000000000000ffa0 rw !x -eeprom 0x0000000000810000 0x0000000000010000 rw !x -fuse 0x0000000000820000 0x0000000000000400 rw !x -lock 0x0000000000830000 0x0000000000000400 rw !x -signature 0x0000000000840000 0x0000000000000400 rw !x -user_signatures 0x0000000000850000 0x0000000000000400 rw !x -*default* 0x0000000000000000 0xffffffffffffffff - -Script de l'éditeurs de liens and table de projection mémoire - -Adresse de la section .data initialisé à 0x800100 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -LOAD obj/USB_gadget.o -LOAD obj/Descriptors.o -LOAD obj/HIDParser.o -LOAD obj/Device_AVR8.o -LOAD obj/EndpointStream_AVR8.o -LOAD obj/Endpoint_AVR8.o -LOAD obj/Host_AVR8.o -LOAD obj/PipeStream_AVR8.o -LOAD obj/Pipe_AVR8.o -LOAD obj/USBController_AVR8.o -LOAD obj/USBInterrupt_AVR8.o -LOAD obj/ConfigDescriptors.o -LOAD obj/DeviceStandardReq.o -LOAD obj/Events.o -LOAD obj/HostStandardReq.o -LOAD obj/USBTask.o -LOAD obj/AudioClassDevice.o -LOAD obj/CDCClassDevice.o -LOAD obj/HIDClassDevice.o -LOAD obj/MassStorageClassDevice.o -LOAD obj/MIDIClassDevice.o -LOAD obj/PrinterClassDevice.o -LOAD obj/RNDISClassDevice.o -LOAD obj/AndroidAccessoryClassHost.o -LOAD obj/AudioClassHost.o -LOAD obj/CDCClassHost.o -LOAD obj/HIDClassHost.o -LOAD obj/MassStorageClassHost.o -LOAD obj/MIDIClassHost.o -LOAD obj/PrinterClassHost.o -LOAD obj/RNDISClassHost.o -LOAD obj/StillImageClassHost.o -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libm.a -START GROUP -LOAD /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libm.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a -END GROUP - -.hash - *(.hash) - -.dynsym - *(.dynsym) - -.dynstr - *(.dynstr) - -.gnu.version - *(.gnu.version) - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r - *(.gnu.version_r) - -.rel.init - *(.rel.init) - -.rela.init - *(.rela.init) - -.rel.text - *(.rel.text) - *(.rel.text.*) - *(.rel.gnu.linkonce.t*) - -.rela.text - *(.rela.text) - *(.rela.text.*) - *(.rela.gnu.linkonce.t*) - -.rel.fini - *(.rel.fini) - -.rela.fini - *(.rela.fini) - -.rel.rodata - *(.rel.rodata) - *(.rel.rodata.*) - *(.rel.gnu.linkonce.r*) - -.rela.rodata - *(.rela.rodata) - *(.rela.rodata.*) - *(.rela.gnu.linkonce.r*) - -.rel.data - *(.rel.data) - *(.rel.data.*) - *(.rel.gnu.linkonce.d*) - -.rela.data - *(.rela.data) - *(.rela.data.*) - *(.rela.gnu.linkonce.d*) - -.rel.ctors - *(.rel.ctors) - -.rela.ctors - *(.rela.ctors) - -.rel.dtors - *(.rel.dtors) - -.rela.dtors - *(.rela.dtors) - -.rel.got - *(.rel.got) - -.rela.got - *(.rela.got) - -.rel.bss - *(.rel.bss) - -.rela.bss - *(.rela.bss) - -.rel.plt - *(.rel.plt) - -.rela.plt - *(.rela.plt) - -.text 0x0000000000000000 0xff0 - *(.vectors) - .vectors 0x0000000000000000 0x74 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - 0x0000000000000000 __vectors - 0x0000000000000000 __vector_default - *(.vectors) - *(.progmem.gcc*) - 0x0000000000000074 . = ALIGN (0x2) - 0x0000000000000074 __trampolines_start = . - *(.trampolines) - .trampolines 0x0000000000000074 0x0 linker stubs - *(.trampolines*) - 0x0000000000000074 __trampolines_end = . - *(.progmem*) - .progmem.data 0x0000000000000074 0x9e obj/Descriptors.o - 0x0000000000000074 ProductString - 0x00000000000000a4 ManufacturerString - 0x00000000000000be LanguageString - 0x00000000000000c2 ConfigurationDescriptor - 0x0000000000000100 DeviceDescriptor - 0x0000000000000112 . = ALIGN (0x2) - *(.jumptables) - *(.jumptables*) - *(.lowtext) - *(.lowtext*) - 0x0000000000000112 __ctors_start = . - *(.ctors) - 0x0000000000000112 __ctors_end = . - 0x0000000000000112 __dtors_start = . - *(.dtors) - 0x0000000000000112 __dtors_end = . - SORT(*)(.ctors) - SORT(*)(.dtors) - *(.init0) - .init0 0x0000000000000112 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - 0x0000000000000112 __init - *(.init0) - *(.init1) - *(.init1) - *(.init2) - .init2 0x0000000000000112 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - *(.init2) - *(.init3) - *(.init3) - *(.init4) - .init4 0x000000000000011e 0x16 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - 0x000000000000011e __do_copy_data - .init4 0x0000000000000134 0x10 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - 0x0000000000000134 __do_clear_bss - *(.init4) - *(.init5) - *(.init5) - *(.init6) - *(.init6) - *(.init7) - *(.init7) - *(.init8) - *(.init8) - *(.init9) - .init9 0x0000000000000144 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - *(.init9) - *(.text) - .text 0x0000000000000148 0x2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - 0x0000000000000148 __vector_22 - 0x0000000000000148 __vector_28 - 0x0000000000000148 __vector_1 - 0x0000000000000148 __vector_24 - 0x0000000000000148 __bad_interrupt - 0x0000000000000148 __vector_6 - 0x0000000000000148 __vector_3 - 0x0000000000000148 __vector_25 - 0x0000000000000148 __vector_13 - 0x0000000000000148 __vector_17 - 0x0000000000000148 __vector_19 - 0x0000000000000148 __vector_7 - 0x0000000000000148 __vector_27 - 0x0000000000000148 __vector_5 - 0x0000000000000148 __vector_4 - 0x0000000000000148 __vector_9 - 0x0000000000000148 __vector_2 - 0x0000000000000148 __vector_21 - 0x0000000000000148 __vector_15 - 0x0000000000000148 __vector_8 - 0x0000000000000148 __vector_26 - 0x0000000000000148 __vector_14 - 0x0000000000000148 __vector_10 - 0x0000000000000148 __vector_16 - 0x0000000000000148 __vector_18 - 0x0000000000000148 __vector_20 - 0x000000000000014a . = ALIGN (0x2) - *(.text.*) - .text.LEDs_SetAllLEDs - 0x000000000000014a 0xc obj/USB_gadget.o - .text.RingBuffer_Insert - 0x0000000000000156 0x36 obj/USB_gadget.o - .text.RingBuffer_Remove - 0x000000000000018c 0x32 obj/USB_gadget.o - .text.SetupHardware - 0x00000000000001be 0x3c obj/USB_gadget.o - 0x00000000000001be SetupHardware - .text.startup.main - 0x00000000000001fa 0x118 obj/USB_gadget.o - 0x00000000000001fa main - .text.EVENT_USB_Device_Connect - 0x0000000000000312 0x4 obj/USB_gadget.o - 0x0000000000000312 EVENT_USB_Device_Connect - .text.EVENT_USB_Device_Disconnect - 0x0000000000000316 0x4 obj/USB_gadget.o - 0x0000000000000316 EVENT_USB_Device_Disconnect - .text.EVENT_USB_Device_ConfigurationChanged - 0x000000000000031a 0x12 obj/USB_gadget.o - 0x000000000000031a EVENT_USB_Device_ConfigurationChanged - .text.EVENT_USB_Device_ControlRequest - 0x000000000000032c 0x6 obj/USB_gadget.o - 0x000000000000032c EVENT_USB_Device_ControlRequest - .text.__vector_23 - 0x0000000000000332 0x70 obj/USB_gadget.o - 0x0000000000000332 __vector_23 - .text.EVENT_CDC_Device_LineEncodingChanged - 0x00000000000003a2 0x8a obj/USB_gadget.o - 0x00000000000003a2 EVENT_CDC_Device_LineEncodingChanged - .text.CALLBACK_USB_GetDescriptor - 0x000000000000042c 0x64 obj/Descriptors.o - 0x000000000000042c CALLBACK_USB_GetDescriptor - .text.Endpoint_Write_Control_Stream_LE - 0x0000000000000490 0xb8 obj/EndpointStream_AVR8.o - 0x0000000000000490 Endpoint_Write_Control_Stream_LE - .text.Endpoint_Write_Control_PStream_LE - 0x0000000000000548 0xb4 obj/EndpointStream_AVR8.o - 0x0000000000000548 Endpoint_Write_Control_PStream_LE - .text.Endpoint_ConfigureEndpoint_Prv - 0x00000000000005fc 0x6a obj/Endpoint_AVR8.o - 0x00000000000005fc Endpoint_ConfigureEndpoint_Prv - .text.Endpoint_ConfigureEndpointTable - 0x0000000000000666 0x92 obj/Endpoint_AVR8.o - 0x0000000000000666 Endpoint_ConfigureEndpointTable - .text.Endpoint_ClearStatusStage - 0x00000000000006f8 0x3a obj/Endpoint_AVR8.o - 0x00000000000006f8 Endpoint_ClearStatusStage - .text.Endpoint_WaitUntilReady - 0x0000000000000732 0x62 obj/Endpoint_AVR8.o - 0x0000000000000732 Endpoint_WaitUntilReady - .text.USB_ResetInterface - 0x0000000000000794 0x6e obj/USBController_AVR8.o - 0x0000000000000794 USB_ResetInterface - .text.USB_Init - 0x0000000000000802 0x12 obj/USBController_AVR8.o - 0x0000000000000802 USB_Init - .text.USB_INT_DisableAllInterrupts - 0x0000000000000814 0x6 obj/USBInterrupt_AVR8.o - 0x0000000000000814 USB_INT_DisableAllInterrupts - .text.USB_INT_ClearAllInterrupts - 0x000000000000081a 0x6 obj/USBInterrupt_AVR8.o - 0x000000000000081a USB_INT_ClearAllInterrupts - .text.__vector_11 - 0x0000000000000820 0x14a obj/USBInterrupt_AVR8.o - 0x0000000000000820 __vector_11 - .text.__vector_12 - 0x000000000000096a 0x86 obj/USBInterrupt_AVR8.o - 0x000000000000096a __vector_12 - .text.USB_Device_ProcessControlRequest - 0x00000000000009f0 0x2b2 obj/DeviceStandardReq.o - 0x00000000000009f0 USB_Device_ProcessControlRequest - .text.USB_Event_Stub - 0x0000000000000ca2 0x2 obj/Events.o - 0x0000000000000ca2 EVENT_USB_Device_WakeUp - 0x0000000000000ca2 USB_Event_Stub - 0x0000000000000ca2 EVENT_USB_Device_Suspend - 0x0000000000000ca2 EVENT_USB_Device_StartOfFrame - 0x0000000000000ca2 EVENT_USB_Device_Reset - .text.USB_USBTask - 0x0000000000000ca4 0x32 obj/USBTask.o - 0x0000000000000ca4 USB_USBTask - .text.CDC_Device_ConfigureEndpoints - 0x0000000000000cd6 0x4a obj/CDCClassDevice.o - 0x0000000000000cd6 CDC_Device_ConfigureEndpoints - .text.CDC_Device_SendByte - 0x0000000000000d20 0x54 obj/CDCClassDevice.o - 0x0000000000000d20 CDC_Device_SendByte - .text.CDC_Device_Flush - 0x0000000000000d74 0x52 obj/CDCClassDevice.o - 0x0000000000000d74 CDC_Device_Flush - .text.CDC_Device_USBTask - 0x0000000000000dc6 0x2a obj/CDCClassDevice.o - 0x0000000000000dc6 CDC_Device_USBTask - .text.CDC_Device_ReceiveByte - 0x0000000000000df0 0x58 obj/CDCClassDevice.o - 0x0000000000000df0 CDC_Device_ReceiveByte - .text.CDC_Device_Event_Stub - 0x0000000000000e48 0x2 obj/CDCClassDevice.o - 0x0000000000000e48 EVENT_CDC_Device_ControLineStateChanged - 0x0000000000000e48 EVENT_CDC_Device_BreakSent - 0x0000000000000e48 CDC_Device_Event_Stub - .text.CDC_Device_ProcessControlRequest - 0x0000000000000e4a 0x15e obj/CDCClassDevice.o - 0x0000000000000e4a CDC_Device_ProcessControlRequest - .text.libgcc.div - 0x0000000000000fa8 0x44 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - 0x0000000000000fa8 __udivmodsi4 - 0x0000000000000fec . = ALIGN (0x2) - *(.fini9) - .fini9 0x0000000000000fec 0x0 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - 0x0000000000000fec exit - 0x0000000000000fec _exit - *(.fini9) - *(.fini8) - *(.fini8) - *(.fini7) - *(.fini7) - *(.fini6) - *(.fini6) - *(.fini5) - *(.fini5) - *(.fini4) - *(.fini4) - *(.fini3) - *(.fini3) - *(.fini2) - *(.fini2) - *(.fini1) - *(.fini1) - *(.fini0) - .fini0 0x0000000000000fec 0x4 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - *(.fini0) - 0x0000000000000ff0 _etext = . - -.data 0x0000000000800100 0x1c address de chargement 0x0000000000000ff0 - 0x0000000000800100 PROVIDE (__data_start, .) - *(.data) - .data 0x0000000000800100 0x1b obj/USB_gadget.o - 0x0000000000800100 VirtualSerial_CDC_Interface - *(.data*) - *(.rodata) - *(.rodata*) - *(.gnu.linkonce.d*) - 0x000000000080011c . = ALIGN (0x2) - *fill* 0x000000000080011b 0x1 - 0x000000000080011c _edata = . - 0x000000000080011c PROVIDE (__data_end, .) - -.bss 0x000000000080011c 0x124 - 0x000000000080011c PROVIDE (__bss_start, .) - *(.bss) - .bss 0x000000000080011c 0x118 obj/USB_gadget.o - *(.bss*) - *(COMMON) - COMMON 0x0000000000800234 0x3 obj/DeviceStandardReq.o - 0x0000000000800234 USB_Device_ConfigurationNumber - 0x0000000000800235 USB_Device_CurrentlySelfPowered - 0x0000000000800236 USB_Device_RemoteWakeupEnabled - COMMON 0x0000000000800237 0x9 obj/USBTask.o - 0x0000000000800237 USB_IsInitialized - 0x0000000000800238 USB_ControlRequest - 0x0000000000800240 PROVIDE (__bss_end, .) - 0x0000000000000ff0 __data_load_start = LOADADDR (.data) - 0x000000000000100c __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x0000000000800240 0x0 - 0x0000000000800240 PROVIDE (__noinit_start, .) - *(.noinit*) - 0x0000000000800240 PROVIDE (__noinit_end, .) - 0x0000000000800240 _end = . - 0x0000000000800240 PROVIDE (__heap_start, .) - -.eeprom 0x0000000000810000 0x0 - *(.eeprom*) - 0x0000000000810000 __eeprom_end = . - -.fuse - *(.fuse) - *(.lfuse) - *(.hfuse) - *(.efuse) - -.lock - *(.lock*) - -.signature - *(.signature*) - -.user_signatures - *(.user_signatures*) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x0000000000000000 0x11 - *(.comment) - .comment 0x0000000000000000 0x11 obj/USB_gadget.o - 0x12 (taille avant relaxe) - .comment 0x0000000000000011 0x12 obj/Descriptors.o - .comment 0x0000000000000011 0x12 obj/EndpointStream_AVR8.o - .comment 0x0000000000000011 0x12 obj/Endpoint_AVR8.o - .comment 0x0000000000000011 0x12 obj/USBController_AVR8.o - .comment 0x0000000000000011 0x12 obj/USBInterrupt_AVR8.o - .comment 0x0000000000000011 0x12 obj/DeviceStandardReq.o - .comment 0x0000000000000011 0x12 obj/Events.o - .comment 0x0000000000000011 0x12 obj/USBTask.o - .comment 0x0000000000000011 0x12 obj/CDCClassDevice.o - -.note.gnu.avr.deviceinfo - 0x0000000000000000 0x40 - .note.gnu.avr.deviceinfo - 0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o - -.note.gnu.build-id - *(.note.gnu.build-id) - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x0000000000000000 0x308 - *(.debug_aranges) - .debug_aranges - 0x0000000000000000 0x70 obj/USB_gadget.o - .debug_aranges - 0x0000000000000070 0x20 obj/Descriptors.o - .debug_aranges - 0x0000000000000090 0xc8 obj/EndpointStream_AVR8.o - .debug_aranges - 0x0000000000000158 0x40 obj/Endpoint_AVR8.o - .debug_aranges - 0x0000000000000198 0x30 obj/USBController_AVR8.o - .debug_aranges - 0x00000000000001c8 0x38 obj/USBInterrupt_AVR8.o - .debug_aranges - 0x0000000000000200 0x20 obj/DeviceStandardReq.o - .debug_aranges - 0x0000000000000220 0x20 obj/Events.o - .debug_aranges - 0x0000000000000240 0x20 obj/USBTask.o - .debug_aranges - 0x0000000000000260 0xa8 obj/CDCClassDevice.o - -.debug_pubnames - *(.debug_pubnames) - -.debug_info 0x0000000000000000 0x5bcc - *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x0000000000000000 0xdeb obj/USB_gadget.o - .debug_info 0x0000000000000deb 0x779 obj/Descriptors.o - .debug_info 0x0000000000001564 0x17c4 obj/EndpointStream_AVR8.o - .debug_info 0x0000000000002d28 0x602 obj/Endpoint_AVR8.o - .debug_info 0x000000000000332a 0x458 obj/USBController_AVR8.o - .debug_info 0x0000000000003782 0x6fa obj/USBInterrupt_AVR8.o - .debug_info 0x0000000000003e7c 0xa66 obj/DeviceStandardReq.o - .debug_info 0x00000000000048e2 0x78 obj/Events.o - .debug_info 0x000000000000495a 0x254 obj/USBTask.o - .debug_info 0x0000000000004bae 0x101e obj/CDCClassDevice.o - -.debug_abbrev 0x0000000000000000 0x158c - *(.debug_abbrev) - .debug_abbrev 0x0000000000000000 0x3dc obj/USB_gadget.o - .debug_abbrev 0x00000000000003dc 0x136 obj/Descriptors.o - .debug_abbrev 0x0000000000000512 0x1fd obj/EndpointStream_AVR8.o - .debug_abbrev 0x000000000000070f 0x20c obj/Endpoint_AVR8.o - .debug_abbrev 0x000000000000091b 0x18d obj/USBController_AVR8.o - .debug_abbrev 0x0000000000000aa8 0x237 obj/USBInterrupt_AVR8.o - .debug_abbrev 0x0000000000000cdf 0x2c2 obj/DeviceStandardReq.o - .debug_abbrev 0x0000000000000fa1 0x44 obj/Events.o - .debug_abbrev 0x0000000000000fe5 0x168 obj/USBTask.o - .debug_abbrev 0x000000000000114d 0x43f obj/CDCClassDevice.o - -.debug_line 0x0000000000000000 0x36c6 - *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x0000000000000000 0x7e9 obj/USB_gadget.o - .debug_line 0x00000000000007e9 0x183 obj/Descriptors.o - .debug_line 0x000000000000096c 0x13ad obj/EndpointStream_AVR8.o - .debug_line 0x0000000000001d19 0x461 obj/Endpoint_AVR8.o - .debug_line 0x000000000000217a 0x287 obj/USBController_AVR8.o - .debug_line 0x0000000000002401 0x44f obj/USBInterrupt_AVR8.o - .debug_line 0x0000000000002850 0x44d obj/DeviceStandardReq.o - .debug_line 0x0000000000002c9d 0x4f obj/Events.o - .debug_line 0x0000000000002cec 0x14b obj/USBTask.o - .debug_line 0x0000000000002e37 0x88f obj/CDCClassDevice.o - -.debug_frame 0x0000000000000000 0x8cc - *(.debug_frame) - .debug_frame 0x0000000000000000 0x114 obj/USB_gadget.o - .debug_frame 0x0000000000000114 0x24 obj/Descriptors.o - .debug_frame 0x0000000000000138 0x3bc obj/EndpointStream_AVR8.o - .debug_frame 0x00000000000004f4 0x84 obj/Endpoint_AVR8.o - .debug_frame 0x0000000000000578 0x44 obj/USBController_AVR8.o - .debug_frame 0x00000000000005bc 0xec obj/USBInterrupt_AVR8.o - .debug_frame 0x00000000000006a8 0x3c obj/DeviceStandardReq.o - .debug_frame 0x00000000000006e4 0x24 obj/Events.o - .debug_frame 0x0000000000000708 0x2c obj/USBTask.o - .debug_frame 0x0000000000000734 0x198 obj/CDCClassDevice.o - -.debug_str 0x0000000000000000 0x246c - *(.debug_str) - .debug_str 0x0000000000000000 0x92e obj/USB_gadget.o - 0x9bb (taille avant relaxe) - .debug_str 0x000000000000092e 0x918 obj/Descriptors.o - 0xb51 (taille avant relaxe) - .debug_str 0x0000000000001246 0x5cb obj/EndpointStream_AVR8.o - 0x852 (taille avant relaxe) - .debug_str 0x0000000000001811 0x1f7 obj/Endpoint_AVR8.o - 0x612 (taille avant relaxe) - .debug_str 0x0000000000001a08 0x261 obj/USBController_AVR8.o - 0x528 (taille avant relaxe) - .debug_str 0x0000000000001c69 0x12e obj/USBInterrupt_AVR8.o - 0x57d (taille avant relaxe) - .debug_str 0x0000000000001d97 0x3ab obj/DeviceStandardReq.o - 0x9c4 (taille avant relaxe) - .debug_str 0x0000000000002142 0x31 obj/Events.o - 0x1a6 (taille avant relaxe) - .debug_str 0x0000000000002173 0x3f obj/USBTask.o - 0x377 (taille avant relaxe) - .debug_str 0x00000000000021b2 0x2ba obj/CDCClassDevice.o - 0xa64 (taille avant relaxe) - -.debug_loc 0x0000000000000000 0x3926 - *(.debug_loc) - .debug_loc 0x0000000000000000 0x406 obj/USB_gadget.o - .debug_loc 0x0000000000000406 0x186 obj/Descriptors.o - .debug_loc 0x000000000000058c 0x1e78 obj/EndpointStream_AVR8.o - .debug_loc 0x0000000000002404 0x3df obj/Endpoint_AVR8.o - .debug_loc 0x00000000000027e3 0x33b obj/USBInterrupt_AVR8.o - .debug_loc 0x0000000000002b1e 0x306 obj/DeviceStandardReq.o - .debug_loc 0x0000000000002e24 0x49 obj/USBTask.o - .debug_loc 0x0000000000002e6d 0xab9 obj/CDCClassDevice.o - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -.debug_pubtypes - *(.debug_pubtypes) - -.debug_ranges 0x0000000000000000 0x420 - *(.debug_ranges) - .debug_ranges 0x0000000000000000 0x60 obj/USB_gadget.o - .debug_ranges 0x0000000000000060 0x10 obj/Descriptors.o - .debug_ranges 0x0000000000000070 0x1f8 obj/EndpointStream_AVR8.o - .debug_ranges 0x0000000000000268 0x78 obj/Endpoint_AVR8.o - .debug_ranges 0x00000000000002e0 0x20 obj/USBController_AVR8.o - .debug_ranges 0x0000000000000300 0x40 obj/USBInterrupt_AVR8.o - .debug_ranges 0x0000000000000340 0x28 obj/DeviceStandardReq.o - .debug_ranges 0x0000000000000368 0x10 obj/Events.o - .debug_ranges 0x0000000000000378 0x10 obj/USBTask.o - .debug_ranges 0x0000000000000388 0x98 obj/CDCClassDevice.o - -.debug_macro - *(.debug_macro) -OUTPUT(USB_gadget.elf elf32-avr) -LOAD linker stubs - -Table de référence croisé - -Symbole Fichier -Audio_Device_ConfigureEndpoints obj/AudioClassDevice.o -Audio_Device_Event_Stub obj/AudioClassDevice.o -Audio_Device_ProcessControlRequest obj/AudioClassDevice.o -CALLBACK_Audio_Device_GetSetEndpointProperty obj/AudioClassDevice.o -CALLBACK_Audio_Device_GetSetInterfaceProperty obj/AudioClassDevice.o -CALLBACK_HIDParser_FilterHIDReportItem obj/HIDParser.o -CALLBACK_HID_Device_CreateHIDReport obj/HIDClassDevice.o -CALLBACK_HID_Device_ProcessHIDReport obj/HIDClassDevice.o -CALLBACK_MS_Device_SCSICommandReceived obj/MassStorageClassDevice.o -CALLBACK_USB_GetDescriptor obj/Descriptors.o - obj/DeviceStandardReq.o -CDC_Device_BytesReceived obj/CDCClassDevice.o -CDC_Device_ConfigureEndpoints obj/CDCClassDevice.o - obj/USB_gadget.o -CDC_Device_CreateBlockingStream obj/CDCClassDevice.o -CDC_Device_CreateStream obj/CDCClassDevice.o -CDC_Device_Event_Stub obj/CDCClassDevice.o -CDC_Device_Flush obj/CDCClassDevice.o -CDC_Device_ProcessControlRequest obj/CDCClassDevice.o - obj/USB_gadget.o -CDC_Device_ReceiveByte obj/CDCClassDevice.o - obj/USB_gadget.o -CDC_Device_SendByte obj/CDCClassDevice.o - obj/USB_gadget.o -CDC_Device_SendControlLineStateChange obj/CDCClassDevice.o -CDC_Device_SendData obj/CDCClassDevice.o -CDC_Device_SendData_P obj/CDCClassDevice.o -CDC_Device_SendString obj/CDCClassDevice.o -CDC_Device_SendString_P obj/CDCClassDevice.o -CDC_Device_USBTask obj/CDCClassDevice.o - obj/USB_gadget.o -ConfigurationDescriptor obj/Descriptors.o -DeviceDescriptor obj/Descriptors.o -EVENT_Audio_Device_StreamStartStop obj/AudioClassDevice.o -EVENT_CDC_Device_BreakSent obj/CDCClassDevice.o -EVENT_CDC_Device_ControLineStateChanged obj/CDCClassDevice.o -EVENT_CDC_Device_LineEncodingChanged obj/USB_gadget.o -EVENT_PRNT_Device_SoftReset obj/PrinterClassDevice.o -EVENT_USB_Device_ConfigurationChanged obj/USB_gadget.o - obj/DeviceStandardReq.o -EVENT_USB_Device_Connect obj/USB_gadget.o - obj/USBInterrupt_AVR8.o -EVENT_USB_Device_ControlRequest obj/USB_gadget.o - obj/DeviceStandardReq.o -EVENT_USB_Device_Disconnect obj/USB_gadget.o - obj/USBInterrupt_AVR8.o -EVENT_USB_Device_Reset obj/Events.o - obj/USBInterrupt_AVR8.o -EVENT_USB_Device_StartOfFrame obj/Events.o - obj/USBInterrupt_AVR8.o -EVENT_USB_Device_Suspend obj/Events.o -EVENT_USB_Device_WakeUp obj/Events.o -Endpoint_ClearEndpoints obj/Endpoint_AVR8.o -Endpoint_ClearStatusStage obj/Endpoint_AVR8.o - obj/PrinterClassDevice.o - obj/MassStorageClassDevice.o - obj/HIDClassDevice.o - obj/CDCClassDevice.o - obj/AudioClassDevice.o - obj/DeviceStandardReq.o -Endpoint_ConfigureEndpointTable obj/Endpoint_AVR8.o - obj/RNDISClassDevice.o - obj/PrinterClassDevice.o - obj/MIDIClassDevice.o - obj/MassStorageClassDevice.o - obj/HIDClassDevice.o - obj/CDCClassDevice.o - obj/AudioClassDevice.o -Endpoint_ConfigureEndpoint_Prv obj/Endpoint_AVR8.o - obj/USBInterrupt_AVR8.o - obj/USBController_AVR8.o -Endpoint_Discard_Stream obj/EndpointStream_AVR8.o -Endpoint_Null_Stream obj/EndpointStream_AVR8.o -Endpoint_Read_Control_EStream_BE obj/EndpointStream_AVR8.o -Endpoint_Read_Control_EStream_LE obj/EndpointStream_AVR8.o -Endpoint_Read_Control_Stream_BE obj/EndpointStream_AVR8.o -Endpoint_Read_Control_Stream_LE obj/EndpointStream_AVR8.o - obj/RNDISClassDevice.o - obj/HIDClassDevice.o - obj/AudioClassDevice.o -Endpoint_Read_EStream_BE obj/EndpointStream_AVR8.o -Endpoint_Read_EStream_LE obj/EndpointStream_AVR8.o -Endpoint_Read_Stream_BE obj/EndpointStream_AVR8.o -Endpoint_Read_Stream_LE obj/EndpointStream_AVR8.o - obj/RNDISClassDevice.o - obj/MIDIClassDevice.o - obj/MassStorageClassDevice.o -Endpoint_WaitUntilReady obj/Endpoint_AVR8.o - obj/RNDISClassDevice.o - obj/PrinterClassDevice.o - obj/MIDIClassDevice.o - obj/CDCClassDevice.o - obj/EndpointStream_AVR8.o -Endpoint_Write_Control_EStream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_Control_EStream_LE obj/EndpointStream_AVR8.o -Endpoint_Write_Control_PStream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_Control_PStream_LE obj/EndpointStream_AVR8.o - obj/DeviceStandardReq.o -Endpoint_Write_Control_Stream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_Control_Stream_LE obj/EndpointStream_AVR8.o - obj/RNDISClassDevice.o - obj/PrinterClassDevice.o - obj/HIDClassDevice.o - obj/AudioClassDevice.o - obj/DeviceStandardReq.o -Endpoint_Write_EStream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_EStream_LE obj/EndpointStream_AVR8.o -Endpoint_Write_PStream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_PStream_LE obj/EndpointStream_AVR8.o - obj/CDCClassDevice.o -Endpoint_Write_Stream_BE obj/EndpointStream_AVR8.o -Endpoint_Write_Stream_LE obj/EndpointStream_AVR8.o - obj/RNDISClassDevice.o - obj/PrinterClassDevice.o - obj/MIDIClassDevice.o - obj/MassStorageClassDevice.o - obj/HIDClassDevice.o - obj/CDCClassDevice.o -HID_Device_ConfigureEndpoints obj/HIDClassDevice.o -HID_Device_ProcessControlRequest obj/HIDClassDevice.o -HID_Device_USBTask obj/HIDClassDevice.o -LanguageString obj/Descriptors.o -MIDI_Device_ConfigureEndpoints obj/MIDIClassDevice.o -MIDI_Device_Flush obj/MIDIClassDevice.o -MIDI_Device_ReceiveEventPacket obj/MIDIClassDevice.o -MIDI_Device_SendEventPacket obj/MIDIClassDevice.o -MIDI_Device_USBTask obj/MIDIClassDevice.o -MS_Device_ConfigureEndpoints obj/MassStorageClassDevice.o -MS_Device_ProcessControlRequest obj/MassStorageClassDevice.o -MS_Device_USBTask obj/MassStorageClassDevice.o -ManufacturerString obj/Descriptors.o -PRNT_Device_BytesReceived obj/PrinterClassDevice.o -PRNT_Device_ConfigureEndpoints obj/PrinterClassDevice.o -PRNT_Device_CreateBlockingStream obj/PrinterClassDevice.o -PRNT_Device_CreateStream obj/PrinterClassDevice.o -PRNT_Device_Event_Stub obj/PrinterClassDevice.o -PRNT_Device_Flush obj/PrinterClassDevice.o -PRNT_Device_ProcessControlRequest obj/PrinterClassDevice.o -PRNT_Device_ReceiveByte obj/PrinterClassDevice.o -PRNT_Device_SendByte obj/PrinterClassDevice.o -PRNT_Device_SendData obj/PrinterClassDevice.o -PRNT_Device_SendString obj/PrinterClassDevice.o -PRNT_Device_USBTask obj/PrinterClassDevice.o -ProductString obj/Descriptors.o -RNDIS_Device_ConfigureEndpoints obj/RNDISClassDevice.o -RNDIS_Device_IsPacketReceived obj/RNDISClassDevice.o -RNDIS_Device_ProcessControlRequest obj/RNDISClassDevice.o -RNDIS_Device_ReadPacket obj/RNDISClassDevice.o -RNDIS_Device_SendPacket obj/RNDISClassDevice.o -RNDIS_Device_USBTask obj/RNDISClassDevice.o -SetupHardware obj/USB_gadget.o -USB_ControlRequest obj/USBTask.o - obj/RNDISClassDevice.o - obj/PrinterClassDevice.o - obj/MassStorageClassDevice.o - obj/HIDClassDevice.o - obj/CDCClassDevice.o - obj/AudioClassDevice.o - obj/DeviceStandardReq.o - obj/Endpoint_AVR8.o - obj/EndpointStream_AVR8.o -USB_Device_ConfigurationNumber obj/DeviceStandardReq.o - obj/USBInterrupt_AVR8.o - obj/USBController_AVR8.o -USB_Device_CurrentlySelfPowered obj/DeviceStandardReq.o - obj/USBController_AVR8.o -USB_Device_ProcessControlRequest obj/DeviceStandardReq.o - obj/USBTask.o - obj/USBInterrupt_AVR8.o -USB_Device_RemoteWakeupEnabled obj/DeviceStandardReq.o - obj/USBController_AVR8.o -USB_Device_SendRemoteWakeup obj/Device_AVR8.o -USB_Disable obj/USBController_AVR8.o -USB_Event_Stub obj/Events.o -USB_GetHIDReportItemInfo obj/HIDParser.o -USB_GetHIDReportSize obj/HIDParser.o -USB_GetNextDescriptorComp obj/ConfigDescriptors.o -USB_GetNextDescriptorOfType obj/ConfigDescriptors.o -USB_GetNextDescriptorOfTypeAfter obj/ConfigDescriptors.o -USB_GetNextDescriptorOfTypeBefore obj/ConfigDescriptors.o -USB_INT_ClearAllInterrupts obj/USBInterrupt_AVR8.o - obj/USBController_AVR8.o -USB_INT_DisableAllInterrupts obj/USBInterrupt_AVR8.o - obj/USBController_AVR8.o -USB_Init obj/USBController_AVR8.o - obj/USB_gadget.o -USB_IsInitialized obj/USBTask.o - obj/USBController_AVR8.o -USB_ProcessHIDReport obj/HIDParser.o -USB_ResetInterface obj/USBController_AVR8.o -USB_SetHIDReportItemInfo obj/HIDParser.o -USB_USBTask obj/USBTask.o - obj/PrinterClassDevice.o - obj/CDCClassDevice.o - obj/USB_gadget.o -VirtualSerial_CDC_Interface obj/USB_gadget.o -__bad_interrupt /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__bss_end /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) -__bss_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) -__data_end /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) -__data_load_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) -__data_start /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) -__do_clear_bss /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_clear_bss.o) - obj/USBTask.o - obj/DeviceStandardReq.o - obj/USB_gadget.o -__do_copy_data /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_copy_data.o) - obj/RNDISClassDevice.o - obj/CDCClassDevice.o - obj/USB_gadget.o -__heap_end /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__init /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__mulhi3 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_mulhi3.o) - obj/HIDParser.o -__stack /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__strlen_P /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(strlen_P.o) - obj/CDCClassDevice.o -__udivmodsi4 /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_udivmodsi4.o) - obj/USB_gadget.o -__vector_1 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_11 obj/USBInterrupt_AVR8.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_12 obj/USBInterrupt_AVR8.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_13 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_14 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_15 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_17 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_19 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_21 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_23 obj/USB_gadget.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_25 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_26 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_27 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_28 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_5 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_7 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_9 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vector_default /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -__vectors /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -_exit /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) -eeprom_read_byte /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eerd_byte.o) - obj/EndpointStream_AVR8.o -eeprom_update_byte /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) - obj/EndpointStream_AVR8.o -eeprom_update_r18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libatmega16u2.a(eeupd_byte.o) -exit /usr/lib/gcc/avr/4.9.2/avr35/libgcc.a(_exit.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -main obj/USB_gadget.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/crtatmega16u2.o -memcmp /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcmp.o) - obj/HIDClassDevice.o -memcpy /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy.o) - obj/RNDISClassDevice.o - obj/HIDClassDevice.o -memcpy_P /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memcpy_P.o) - obj/RNDISClassDevice.o -memset /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr35/libc.a(memset.o) - obj/HIDClassDevice.o diff --git a/gadget/USB_gadget.sym b/gadget/USB_gadget.sym deleted file mode 100644 index 8e6afea..0000000 --- a/gadget/USB_gadget.sym +++ /dev/null @@ -1,168 +0,0 @@ - U CALLBACK_Audio_Device_GetSetEndpointProperty - U CALLBACK_Audio_Device_GetSetInterfaceProperty - U CALLBACK_HID_Device_CreateHIDReport - U CALLBACK_HID_Device_ProcessHIDReport - U CALLBACK_HIDParser_FilterHIDReportItem - U CALLBACK_MS_Device_SCSICommandReceived -00000000 W __heap_end -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 W __vector_default -00000000 T __vectors -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -00000074 T ProductString -00000074 T __trampolines_end -00000074 T __trampolines_start -000000a4 T ManufacturerString -000000be T LanguageString -000000c2 T ConfigurationDescriptor -00000100 T DeviceDescriptor -00000112 T __ctors_end -00000112 T __ctors_start -00000112 T __dtors_end -00000112 T __dtors_start -00000112 W __init -0000011e T __do_copy_data -00000134 T __do_clear_bss -0000013c t .do_clear_bss_loop -0000013e t .do_clear_bss_start -00000148 T __bad_interrupt -00000148 W __vector_1 -00000148 W __vector_10 -00000148 W __vector_13 -00000148 W __vector_14 -00000148 W __vector_15 -00000148 W __vector_16 -00000148 W __vector_17 -00000148 W __vector_18 -00000148 W __vector_19 -00000148 W __vector_2 -00000148 W __vector_20 -00000148 W __vector_21 -00000148 W __vector_22 -00000148 W __vector_24 -00000148 W __vector_25 -00000148 W __vector_26 -00000148 W __vector_27 -00000148 W __vector_28 -00000148 W __vector_3 -00000148 W __vector_4 -00000148 W __vector_5 -00000148 W __vector_6 -00000148 W __vector_7 -00000148 W __vector_8 -00000148 W __vector_9 -0000014a t LEDs_SetAllLEDs -00000156 t RingBuffer_Insert -0000018c t RingBuffer_Remove -000001be T SetupHardware -000001fa T main -000002ff W __stack -00000312 T EVENT_USB_Device_Connect -00000316 T EVENT_USB_Device_Disconnect -0000031a T EVENT_USB_Device_ConfigurationChanged -0000032c T EVENT_USB_Device_ControlRequest -00000332 T __vector_23 -000003a2 T EVENT_CDC_Device_LineEncodingChanged -0000042c T CALLBACK_USB_GetDescriptor -00000490 T Endpoint_Write_Control_Stream_LE -00000548 T Endpoint_Write_Control_PStream_LE -000005fc T Endpoint_ConfigureEndpoint_Prv -00000666 T Endpoint_ConfigureEndpointTable -000006f8 T Endpoint_ClearStatusStage -00000732 T Endpoint_WaitUntilReady -00000794 T USB_ResetInterface -00000802 T USB_Init -00000814 T USB_INT_DisableAllInterrupts -0000081a T USB_INT_ClearAllInterrupts -00000820 T __vector_11 -0000096a T __vector_12 -000009f0 T USB_Device_ProcessControlRequest -00000ca2 W EVENT_USB_Device_Reset -00000ca2 W EVENT_USB_Device_StartOfFrame -00000ca2 W EVENT_USB_Device_Suspend -00000ca2 W EVENT_USB_Device_WakeUp -00000ca2 T USB_Event_Stub -00000ca4 T USB_USBTask -00000cd6 T CDC_Device_ConfigureEndpoints -00000d20 T CDC_Device_SendByte -00000d74 T CDC_Device_Flush -00000dc6 T CDC_Device_USBTask -00000df0 T CDC_Device_ReceiveByte -00000e48 T CDC_Device_Event_Stub -00000e48 W EVENT_CDC_Device_BreakSent -00000e48 W EVENT_CDC_Device_ControLineStateChanged -00000e4a T CDC_Device_ProcessControlRequest -00000fa8 T __udivmodsi4 -00000fb4 t __udivmodsi4_loop -00000fce t __udivmodsi4_ep -00000fec W exit -00000fec T _exit -00000fee t __stop_program -00000ff0 A __data_load_start -00000ff0 T _etext -0000100c A __data_load_end -00800100 D __data_start -00800100 D VirtualSerial_CDC_Interface -0080011c B __bss_start -0080011c D __data_end -0080011c D _edata -0080011c b USARTtoUSB_Buffer_Data -0080019c b USARTtoUSB_Buffer -008001a8 b USBtoUSART_Buffer_Data -00800228 b USBtoUSART_Buffer -00800234 B USB_Device_ConfigurationNumber -00800235 B USB_Device_CurrentlySelfPowered -00800236 B USB_Device_RemoteWakeupEnabled -00800237 B USB_IsInitialized -00800238 B USB_ControlRequest -00800240 B __bss_end -00800240 N _end -00810000 N __eeprom_end diff --git a/lufa/Config/LUFAConfig.h b/lufa/Config/LUFAConfig.h deleted file mode 100644 index f7d7e62..0000000 --- a/lufa/Config/LUFAConfig.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief LUFA Library Configuration Header File - * - * This header file is used to configure LUFA's compile time options, - * as an alternative to the compile time constants supplied through - * a makefile. - * - * For information on what each token does, refer to the LUFA - * manual section "Summary of Compile Tokens". - */ - -#ifndef _LUFA_CONFIG_H_ -#define _LUFA_CONFIG_H_ - - #if (ARCH == ARCH_AVR8) - - /* Non-USB Related Configuration Tokens: */ -// #define DISABLE_TERMINAL_CODES - - /* USB Class Driver Related Tokens: */ -// #define HID_HOST_BOOT_PROTOCOL_ONLY -// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here} -// #define HID_USAGE_STACK_DEPTH {Insert Value Here} -// #define HID_MAX_COLLECTIONS {Insert Value Here} -// #define HID_MAX_REPORTITEMS {Insert Value Here} -// #define HID_MAX_REPORT_IDS {Insert Value Here} -// #define NO_CLASS_DRIVER_AUTOFLUSH - - /* General USB Driver Related Tokens: */ -// #define ORDERED_EP_CONFIG - #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL) - #define USB_DEVICE_ONLY -// #define USB_HOST_ONLY -// #define USB_STREAM_TIMEOUT_MS {Insert Value Here} -// #define NO_LIMITED_CONTROLLER_CONNECT -// #define NO_SOF_EVENTS - - /* USB Device Mode Driver Related Tokens: */ -// #define USE_RAM_DESCRIPTORS - #define USE_FLASH_DESCRIPTORS -// #define USE_EEPROM_DESCRIPTORS -// #define NO_INTERNAL_SERIAL - #define FIXED_CONTROL_ENDPOINT_SIZE 8 - #define DEVICE_STATE_AS_GPIOR 0 - #define FIXED_NUM_CONFIGURATIONS 1 -// #define CONTROL_ONLY_DEVICE - #define INTERRUPT_CONTROL_ENDPOINT -// #define NO_DEVICE_REMOTE_WAKEUP -// #define NO_DEVICE_SELF_POWER - - /* USB Host Mode Driver Related Tokens: */ -// #define HOST_STATE_AS_GPIOR 0 -// #define USB_HOST_TIMEOUT_MS {Insert Value Here} -// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here} -// #define NO_AUTO_VBUS_MANAGEMENT -// #define INVERTED_VBUS_ENABLE_LINE - - #else - - #error Unsupported architecture for this LUFA configuration file. - - #endif -#endif diff --git a/lufa/Descriptors.c b/lufa/Descriptors.c deleted file mode 100644 index 9827037..0000000 --- a/lufa/Descriptors.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special - * computer-readable structures which the host requests upon device enumeration, to determine - * the device's capabilities and functions. - */ - -#include "Descriptors.h" - - -/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall - * device characteristics, including the supported USB version, control endpoint size and the - * number of device configurations. The descriptor is read out by the USB host when the enumeration - * process begins. - */ -const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = -{ - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - - .USBSpecification = VERSION_BCD(1,1,0), - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_NoSpecificSubclass, - .Protocol = CDC_CSCP_NoSpecificProtocol, - - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - - .VendorID = 0x03EB, - .ProductID = 0x204B, - .ReleaseNumber = VERSION_BCD(0,0,1), - - .ManufacturerStrIndex = STRING_ID_Manufacturer, - .ProductStrIndex = STRING_ID_Product, - .SerialNumStrIndex = USE_INTERNAL_SERIAL, - - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS -}; - -/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage - * of the device in one of its supported configurations, including information about any device interfaces - * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting - * a configuration so that the host may correctly communicate with the USB device. - */ -const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = -{ - .Config = - { - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, - - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = 2, - - .ConfigurationNumber = 1, - .ConfigurationStrIndex = NO_DESCRIPTOR, - - .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED), - - .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) - }, - - .CDC_CCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = INTERFACE_ID_CDC_CCI, - .AlternateSetting = 0, - - .TotalEndpoints = 1, - - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_ACMSubclass, - .Protocol = CDC_CSCP_ATCommandProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_Functional_Header = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface}, - .Subtype = CDC_DSUBTYPE_CSInterface_Header, - - .CDCSpecification = VERSION_BCD(1,1,0), - }, - - .CDC_Functional_ACM = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface}, - .Subtype = CDC_DSUBTYPE_CSInterface_ACM, - - .Capabilities = 0x06, - }, - - .CDC_Functional_Union = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface}, - .Subtype = CDC_DSUBTYPE_CSInterface_Union, - - .MasterInterfaceNumber = INTERFACE_ID_CDC_CCI, - .SlaveInterfaceNumber = INTERFACE_ID_CDC_DCI, - }, - - .CDC_NotificationEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_NOTIFICATION_EPADDR, - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_NOTIFICATION_EPSIZE, - .PollingIntervalMS = 0xFF - }, - - .CDC_DCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = INTERFACE_ID_CDC_DCI, - .AlternateSetting = 0, - - .TotalEndpoints = 2, - - .Class = CDC_CSCP_CDCDataClass, - .SubClass = CDC_CSCP_NoDataSubclass, - .Protocol = CDC_CSCP_NoDataProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_DataOutEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_RX_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x05 - }, - - .CDC_DataInEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_TX_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x05 - } -}; - -/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests - * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate - * via the language ID table available at USB.org what languages the device supports for its string descriptors. - */ -const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG); - -/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable - * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera"); - -/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, - * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA USB-RS232 Adapter"); - -/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" - * documentation) by the application code so that the address and size of a requested descriptor can be given - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the - * USB host. - */ -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - const void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { - case DTYPE_Device: - Address = &DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = &ConfigurationDescriptor; - Size = sizeof(USB_Descriptor_Configuration_t); - break; - case DTYPE_String: - switch (DescriptorNumber) - { - case STRING_ID_Language: - Address = &LanguageString; - Size = pgm_read_byte(&LanguageString.Header.Size); - break; - case STRING_ID_Manufacturer: - Address = &ManufacturerString; - Size = pgm_read_byte(&ManufacturerString.Header.Size); - break; - case STRING_ID_Product: - Address = &ProductString; - Size = pgm_read_byte(&ProductString.Header.Size); - break; - } - - break; - } - - *DescriptorAddress = Address; - return Size; -} - diff --git a/lufa/Descriptors.h b/lufa/Descriptors.h deleted file mode 100644 index b19682a..0000000 --- a/lufa/Descriptors.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Descriptors.c. - */ - -#ifndef _DESCRIPTORS_H_ -#define _DESCRIPTORS_H_ - - /* Includes: */ - #include - - #include - - /* Macros: */ - /** Endpoint address of the CDC device-to-host notification IN endpoint. */ - #define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 2) - - /** Endpoint address of the CDC device-to-host data IN endpoint. */ - #define CDC_TX_EPADDR (ENDPOINT_DIR_IN | 3) - - /** Endpoint address of the CDC host-to-device data OUT endpoint. */ - #define CDC_RX_EPADDR (ENDPOINT_DIR_OUT | 4) - - /** Size in bytes of the CDC device-to-host notification IN endpoint. */ - #define CDC_NOTIFICATION_EPSIZE 8 - - /** Size in bytes of the CDC data IN and OUT endpoints. */ - #define CDC_TXRX_EPSIZE 16 - - /* Type Defines: */ - /** Type define for the device configuration descriptor structure. This must be defined in the - * application code, as the configuration descriptor contains several sub-descriptors which - * vary between devices, and which describe the device's usage to the host. - */ - typedef struct - { - USB_Descriptor_Configuration_Header_t Config; - - // CDC Command Interface - USB_Descriptor_Interface_t CDC_CCI_Interface; - USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; - USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; - USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; - USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; - - // CDC Data Interface - USB_Descriptor_Interface_t CDC_DCI_Interface; - USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; - USB_Descriptor_Endpoint_t CDC_DataInEndpoint; - } USB_Descriptor_Configuration_t; - - /** Enum for the device interface descriptor IDs within the device. Each interface descriptor - * should have a unique ID index associated with it, which can be used to refer to the - * interface from other descriptors. - */ - enum InterfaceDescriptors_t - { - INTERFACE_ID_CDC_CCI = 0, /**< CDC CCI interface descriptor ID */ - INTERFACE_ID_CDC_DCI = 1, /**< CDC DCI interface descriptor ID */ - }; - - /** Enum for the device string descriptor IDs within the device. Each string descriptor should - * have a unique ID index associated with it, which can be used to refer to the string from - * other descriptors. - */ - enum StringDescriptors_t - { - STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */ - STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */ - STRING_ID_Product = 2, /**< Product string ID */ - }; - - /* Function Prototypes: */ - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); - -#endif - diff --git a/lufa/LUFA USBtoSerial.inf b/lufa/LUFA USBtoSerial.inf deleted file mode 100644 index b00fab6..0000000 --- a/lufa/LUFA USBtoSerial.inf +++ /dev/null @@ -1,66 +0,0 @@ -;************************************************************ -; Windows USB CDC ACM Setup File -; Copyright (c) 2000 Microsoft Corporation -;************************************************************ - -[DefaultInstall] -CopyINF="LUFA USBtoSerial.inf" - -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%MFGNAME% -DriverVer=7/1/2012,10.0.0.0 - -[Manufacturer] -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 - -[SourceDisksNames] - -[SourceDisksFiles] - -[DestinationDirs] -DefaultDestDir=12 - -[DriverInstall] -Include=mdmcpq.inf -CopyFiles=FakeModemCopyFileSection -AddReg=DriverInstall.AddReg - -[DriverInstall.Services] -Include=mdmcpq.inf -AddService=usbser, 0x00000002, LowerFilter_Service_Inst - -[DriverInstall.AddReg] -HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider" - -;------------------------------------------------------------------------------ -; Vendor and Product ID Definitions -;------------------------------------------------------------------------------ -; When developing your USB device, the VID and PID used in the PC side -; application program and the firmware on the microcontroller must match. -; Modify the below line to use your VID and PID. Use the format as shown below. -; Note: One INF file can be used for multiple devices with different VID and PIDs. -; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. -;------------------------------------------------------------------------------ -[DeviceList] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B - -[DeviceList.NTx86] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B - -[DeviceList.NTamd64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B - -[DeviceList.NTia64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204B - -;------------------------------------------------------------------------------ -; String Definitions -;------------------------------------------------------------------------------ -;Modify these strings to customize your device -;------------------------------------------------------------------------------ -[Strings] -MFGNAME="http://www.lufa-lib.org" -DESCRIPTION="LUFA USB to Serial" \ No newline at end of file diff --git a/lufa/LUFA VirtualSerial.inf b/lufa/LUFA VirtualSerial.inf deleted file mode 100644 index 21d2d12..0000000 --- a/lufa/LUFA VirtualSerial.inf +++ /dev/null @@ -1,66 +0,0 @@ -;************************************************************ -; Windows USB CDC ACM Setup File -; Copyright (c) 2000 Microsoft Corporation -;************************************************************ - -[DefaultInstall] -CopyINF="LUFA VirtualSerial.inf" - -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%MFGNAME% -DriverVer=7/1/2012,10.0.0.0 - -[Manufacturer] -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 - -[SourceDisksNames] - -[SourceDisksFiles] - -[DestinationDirs] -DefaultDestDir=12 - -[DriverInstall] -Include=mdmcpq.inf -CopyFiles=FakeModemCopyFileSection -AddReg=DriverInstall.AddReg - -[DriverInstall.Services] -Include=mdmcpq.inf -AddService=usbser, 0x00000002, LowerFilter_Service_Inst - -[DriverInstall.AddReg] -HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider" - -;------------------------------------------------------------------------------ -; Vendor and Product ID Definitions -;------------------------------------------------------------------------------ -; When developing your USB device, the VID and PID used in the PC side -; application program and the firmware on the microcontroller must match. -; Modify the below line to use your VID and PID. Use the format as shown below. -; Note: One INF file can be used for multiple devices with different VID and PIDs. -; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. -;------------------------------------------------------------------------------ -[DeviceList] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 - -[DeviceList.NTx86] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 - -[DeviceList.NTamd64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 - -[DeviceList.NTia64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 - -;------------------------------------------------------------------------------ -; String Definitions -;------------------------------------------------------------------------------ -;Modify these strings to customize your device -;------------------------------------------------------------------------------ -[Strings] -MFGNAME="http://www.lufa-lib.org" -DESCRIPTION="LUFA CDC-ACM Virtual Serial Port" \ No newline at end of file diff --git a/lufa/USB_gadget.c b/lufa/USB_gadget.c deleted file mode 100644 index a4db054..0000000 --- a/lufa/USB_gadget.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Main source file for the USBtoSerial project. This file contains the main tasks of - * the project and is responsible for the initial application hardware configuration. - */ - -#include "USB_gadget.h" - -/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */ -static RingBuffer_t USBtoUSART_Buffer; - -/** Underlying data buffer for \ref USBtoUSART_Buffer, where the stored bytes are located. */ -static uint8_t USBtoUSART_Buffer_Data[128]; - -/** Circular buffer to hold data from the serial port before it is sent to the host. */ -static RingBuffer_t USARTtoUSB_Buffer; - -/** Underlying data buffer for \ref USARTtoUSB_Buffer, where the stored bytes are located. */ -static uint8_t USARTtoUSB_Buffer_Data[128]; - -/** LUFA CDC Class driver interface configuration and state information. This structure is - * passed to all CDC Class driver functions, so that multiple instances of the same class - * within a device can be differentiated from one another. - */ -USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = - { - .Config = - { - .ControlInterfaceNumber = INTERFACE_ID_CDC_CCI, - .DataINEndpoint = - { - .Address = CDC_TX_EPADDR, - .Size = CDC_TXRX_EPSIZE, - .Banks = 1, - }, - .DataOUTEndpoint = - { - .Address = CDC_RX_EPADDR, - .Size = CDC_TXRX_EPSIZE, - .Banks = 1, - }, - .NotificationEndpoint = - { - .Address = CDC_NOTIFICATION_EPADDR, - .Size = CDC_NOTIFICATION_EPSIZE, - .Banks = 1, - }, - }, - }; - - -/** Main program entry point. This routine contains the overall program flow, including initial - * setup of all components and the main program loop. - */ -int main(void) -{ - SetupHardware(); - - RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data)); - RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data)); - - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - GlobalInterruptEnable(); - - for (;;) - { - /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */ - if (!(RingBuffer_IsFull(&USBtoUSART_Buffer))) - { - int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); - - /* Store received byte into the USART transmit buffer */ - if (!(ReceivedByte < 0)) - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte); - } - - uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer); - if (BufferCount) - { - Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address); - - /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data - * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */ - if (Endpoint_IsINReady()) - { - /* Never send more than one bank size less one byte to the host at a time, so that we don't block - * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */ - uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1)); - - /* Read bytes from the USART receive buffer into the USB IN endpoint */ - while (BytesToSend--) - { - /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */ - if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface, - RingBuffer_Peek(&USARTtoUSB_Buffer)) != ENDPOINT_READYWAIT_NoError) - { - break; - } - - /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */ - RingBuffer_Remove(&USARTtoUSB_Buffer); - } - } - } - - /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */ - if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) - Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer)); - - CDC_Device_USBTask(&VirtualSerial_CDC_Interface); - USB_USBTask(); - } -} - -/** Configures the board hardware and chip peripherals for the demo's functionality. */ -void SetupHardware(void) -{ -#if (ARCH == ARCH_AVR8) - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Disable clock division */ - clock_prescale_set(clock_div_1); -#endif - - /* Hardware Initialization */ - LEDs_Init(); - USB_Init(); -} - -/** Event handler for the library USB Connection event. */ -void EVENT_USB_Device_Connect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); -} - -/** Event handler for the library USB Disconnection event. */ -void EVENT_USB_Device_Disconnect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); -} - -/** Event handler for the library USB Configuration Changed event. */ -void EVENT_USB_Device_ConfigurationChanged(void) -{ - bool ConfigSuccess = true; - - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); - - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); -} - -/** Event handler for the library USB Control Request reception event. */ -void EVENT_USB_Device_ControlRequest(void) -{ - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); -} - -/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer - * for later transmission to the host. - */ -ISR(USART1_RX_vect, ISR_BLOCK) -{ - uint8_t ReceivedByte = UDR1; - - if ((USB_DeviceState == DEVICE_STATE_Configured) && !(RingBuffer_IsFull(&USARTtoUSB_Buffer))) - RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte); -} - -/** Event handler for the CDC Class driver Line Encoding Changed event. - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - uint8_t ConfigMask = 0; - - switch (CDCInterfaceInfo->State.LineEncoding.ParityType) - { - case CDC_PARITY_Odd: - ConfigMask = ((1 << UPM11) | (1 << UPM10)); - break; - case CDC_PARITY_Even: - ConfigMask = (1 << UPM11); - break; - } - - if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) - ConfigMask |= (1 << USBS1); - - switch (CDCInterfaceInfo->State.LineEncoding.DataBits) - { - case 6: - ConfigMask |= (1 << UCSZ10); - break; - case 7: - ConfigMask |= (1 << UCSZ11); - break; - case 8: - ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10)); - break; - } - - /* Keep the TX line held high (idle) while the USART is reconfigured */ - PORTD |= (1 << 3); - - /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */ - UCSR1B = 0; - UCSR1A = 0; - UCSR1C = 0; - - /* Set the new baud rate before configuring the USART */ - UBRR1 = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - - /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */ - UCSR1C = ConfigMask; - UCSR1A = (1 << U2X1); - UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); - - /* Release the TX line after the USART has been reconfigured */ - PORTD &= ~(1 << 3); -} - diff --git a/lufa/USB_gadget.h b/lufa/USB_gadget.h deleted file mode 100644 index ed6880b..0000000 --- a/lufa/USB_gadget.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for USBtoSerial.c. - */ - -#ifndef _USB_SERIAL_H_ -#define _USB_SERIAL_H_ - - /* Includes: */ - #include - #include - #include - #include - - #include "Descriptors.h" - - #include - #include - #include - #include - #include - - /* Macros: */ - /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ - #define LEDMASK_USB_NOTREADY LEDS_LED1 - - /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ - #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) - - /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ - #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) - - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ - #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) - - /* Function Prototypes: */ - void SetupHardware(void); - - void EVENT_USB_Device_Connect(void); - void EVENT_USB_Device_Disconnect(void); - void EVENT_USB_Device_ConfigurationChanged(void); - void EVENT_USB_Device_ControlRequest(void); - - void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); - -#endif - diff --git a/lufa/USBtoSerial.txt b/lufa/USBtoSerial.txt deleted file mode 100644 index 0620f93..0000000 --- a/lufa/USBtoSerial.txt +++ /dev/null @@ -1,78 +0,0 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \mainpage USB to Serial Converter Project - * - * \section Sec_Compat Project Compatibility: - * - * The following list indicates what microcontrollers are compatible with this project. - * - * \li Series 7 USB AVRs (AT90USBxxx7) - * \li Series 6 USB AVRs (AT90USBxxx6) - * \li Series 4 USB AVRs (ATMEGAxxU4) - * \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2) - * - * \section Sec_Info USB Information: - * - * The following table gives a rundown of the USB utilization of this project. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
USB Mode:Device
USB Class:Communications Device Class (CDC)
USB Subclass:Abstract Control Model (ACM)
Relevant Standards:USBIF CDC Class Standard
Supported USB Speeds:Full Speed Mode
- * - * \section Sec_Description Project Description: - * - * USB to Serial bridge project. This project allows a USB AVR to serve - * as a USB to USART bridge between a USB host and a device lacking a - * USB port. When programmed into a USB AVR, the AVR will enumerate as a - * virtual COM port. - * - * The AVR's hardware USART's settings will change to mirror as closely as - * possible the serial settings set on the host. However, due to hardware - * limitations, some options may not be supported (baud rates with unacceptable - * error rates at the AVR's clock speed, data lengths other than 6, 7 or 8 bits, - * 1.5 stop bits, parity other than none, even or odd). - * - * After running this project for the first time on a new computer, - * you will need to supply the .INF file located in this project - * project's directory as the device's driver when running under - * Windows. This will enable Windows to use its inbuilt CDC drivers, - * negating the need for custom drivers for the device. Other - * Operating Systems should automatically use their own inbuilt - * CDC-ACM drivers. - * - * \section Sec_Options Project Options - * - * The following defines can be found in this project, which can control the project behaviour when defined, or changed in value. - * - * - * - * - * - *
- * None - *
- */ - diff --git a/lufa/VirtualSerial.c b/lufa/VirtualSerial.c deleted file mode 100644 index a3d419a..0000000 --- a/lufa/VirtualSerial.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Main source file for the VirtualSerial demo. This file contains the main tasks of - * the demo and is responsible for the initial application hardware configuration. - */ - -#include "VirtualSerial.h" - -/** LUFA CDC Class driver interface configuration and state information. This structure is - * passed to all CDC Class driver functions, so that multiple instances of the same class - * within a device can be differentiated from one another. - */ -USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = - { - .Config = - { - .ControlInterfaceNumber = INTERFACE_ID_CDC_CCI, - .DataINEndpoint = - { - .Address = CDC_TX_EPADDR, - .Size = CDC_TXRX_EPSIZE, - .Banks = 1, - }, - .DataOUTEndpoint = - { - .Address = CDC_RX_EPADDR, - .Size = CDC_TXRX_EPSIZE, - .Banks = 1, - }, - .NotificationEndpoint = - { - .Address = CDC_NOTIFICATION_EPADDR, - .Size = CDC_NOTIFICATION_EPSIZE, - .Banks = 1, - }, - }, - }; - -/** Standard file stream for the CDC interface when set up, so that the virtual CDC COM port can be - * used like any regular character stream in the C APIs. - */ -static FILE USBSerialStream; - - -/** Main program entry point. This routine contains the overall program flow, including initial - * setup of all components and the main program loop. - */ -int main(void) -{ - SetupHardware(); - - /* Create a regular character stream for the interface so that it can be used with the stdio.h functions */ - CDC_Device_CreateStream(&VirtualSerial_CDC_Interface, &USBSerialStream); - - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - GlobalInterruptEnable(); - - for (;;) - { - CheckJoystickMovement(); - - /* Must throw away unused bytes from the host, or it will lock up while waiting for the device */ - CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); - - CDC_Device_USBTask(&VirtualSerial_CDC_Interface); - USB_USBTask(); - } -} - -/** Configures the board hardware and chip peripherals for the demo's functionality. */ -void SetupHardware(void) -{ -#if (ARCH == ARCH_AVR8) - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Disable clock division */ - clock_prescale_set(clock_div_1); -#elif (ARCH == ARCH_XMEGA) - /* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */ - XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU); - XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL); - - /* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */ - XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ); - XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB); - - PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm; -#endif - - /* Hardware Initialization */ - Joystick_Init(); - LEDs_Init(); - USB_Init(); -} - -/** Checks for changes in the position of the board joystick, sending strings to the host upon each change. */ -void CheckJoystickMovement(void) -{ - uint8_t JoyStatus_LCL = Joystick_GetStatus(); - char* ReportString = NULL; - static bool ActionSent = false; - - if (JoyStatus_LCL & JOY_UP) - ReportString = "Joystick Up\r\n"; - else if (JoyStatus_LCL & JOY_DOWN) - ReportString = "Joystick Down\r\n"; - else if (JoyStatus_LCL & JOY_LEFT) - ReportString = "Joystick Left\r\n"; - else if (JoyStatus_LCL & JOY_RIGHT) - ReportString = "Joystick Right\r\n"; - else if (JoyStatus_LCL & JOY_PRESS) - ReportString = "Joystick Pressed\r\n"; - else - ActionSent = false; - - if ((ReportString != NULL) && (ActionSent == false)) - { - ActionSent = true; - - /* Write the string to the virtual COM port via the created character stream */ - fputs(ReportString, &USBSerialStream); - - /* Alternatively, without the stream: */ - // CDC_Device_SendString(&VirtualSerial_CDC_Interface, ReportString); - } -} - -/** Event handler for the library USB Connection event. */ -void EVENT_USB_Device_Connect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); -} - -/** Event handler for the library USB Disconnection event. */ -void EVENT_USB_Device_Disconnect(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); -} - -/** Event handler for the library USB Configuration Changed event. */ -void EVENT_USB_Device_ConfigurationChanged(void) -{ - bool ConfigSuccess = true; - - ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); - - LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); -} - -/** Event handler for the library USB Control Request reception event. */ -void EVENT_USB_Device_ControlRequest(void) -{ - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); -} - -/** CDC class driver callback function the processing of changes to the virtual - * control lines sent from the host.. - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t *const CDCInterfaceInfo) -{ - /* You can get changes to the virtual CDC lines in this callback; a common - use-case is to use the Data Terminal Ready (DTR) flag to enable and - disable CDC communications in your application when set to avoid the - application blocking while waiting for a host to become ready and read - in the pending data from the USB endpoints. - */ - bool HostReady = (CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR) != 0; -} diff --git a/lufa/VirtualSerial.h b/lufa/VirtualSerial.h deleted file mode 100644 index 89f8099..0000000 --- a/lufa/VirtualSerial.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for VirtualSerial.c. - */ - -#ifndef _VIRTUALSERIAL_H_ -#define _VIRTUALSERIAL_H_ - - /* Includes: */ - #include - #include - #include - #include - #include - #include - - #include "Descriptors.h" - - #include - #include - #include - #include - - /* Macros: */ - /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ - #define LEDMASK_USB_NOTREADY LEDS_LED1 - - /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ - #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) - - /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ - #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) - - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ - #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) - - /* Function Prototypes: */ - void SetupHardware(void); - void CheckJoystickMovement(void); - - void EVENT_USB_Device_Connect(void); - void EVENT_USB_Device_Disconnect(void); - void EVENT_USB_Device_ConfigurationChanged(void); - void EVENT_USB_Device_ControlRequest(void); - -#endif - diff --git a/lufa/VirtualSerial.txt b/lufa/VirtualSerial.txt deleted file mode 100644 index c802d99..0000000 --- a/lufa/VirtualSerial.txt +++ /dev/null @@ -1,76 +0,0 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \mainpage Communications Device Class (Virtual Serial Port) Demo - * - * \section Sec_Compat Demo Compatibility: - * - * The following list indicates what microcontrollers are compatible with this demo. - * - * \li Series 7 USB AVRs (AT90USBxxx7) - * \li Series 6 USB AVRs (AT90USBxxx6) - * \li Series 4 USB AVRs (ATMEGAxxU4) - * \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2) - * \li Series AU XMEGA AVRs (ATXMEGAxxxAxU) - * \li Series B XMEGA AVRs (ATXMEGAxxxBx) - * \li Series C XMEGA AVRs (ATXMEGAxxxCx) - * - * \section Sec_Info USB Information: - * - * The following table gives a rundown of the USB utilization of this demo. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
USB Mode:Device
USB Class:Communications Device Class (CDC)
USB Subclass:Abstract Control Model (ACM)
Relevant Standards:USBIF CDC Class Standard
Supported USB Speeds:Full Speed Mode
- * - * \section Sec_Description Project Description: - * - * Communications Device Class demonstration application. - * This gives a simple reference application for implementing - * a CDC device acting as a virtual serial port. Joystick - * actions are transmitted to the host as strings. The device - * does not respond to serial data sent from the host. - * - * After running this demo for the first time on a new computer, - * you will need to supply the .INF file located in this demo - * project's directory as the device's driver when running under - * Windows. This will enable Windows to use its inbuilt CDC drivers, - * negating the need for custom drivers for the device. Other - * Operating Systems should automatically use their own inbuilt - * CDC-ACM drivers. - * - * \section Sec_Options Project Options - * - * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value. - * - * - * - * - * - *
- * None - *
- */ - diff --git a/lufa/asf.xml b/lufa/asf.xml deleted file mode 100644 index 5afcafe..0000000 --- a/lufa/asf.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - USB to Serial USART converter project. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lufa/doxyfile b/lufa/doxyfile deleted file mode 100644 index 4f79dc6..0000000 --- a/lufa/doxyfile +++ /dev/null @@ -1,2395 +0,0 @@ -# Doxyfile 1.8.9 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "LUFA Library - USB to Serial Device Project" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ./Documentation/ - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = NO - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = NO - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = NO - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = NO - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = YES - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = ./ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.h \ - *.c \ - *.txt - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = Documentation/ - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = __* \ - INCLUDE_FROM_* - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = NO - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = YES - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = YES - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = YES - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 1 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /