--- /dev/null
+\r
+AudioInputHost.elf: file format elf32-avr\r
+\r
+Sections:\r
+Idx Name Size VMA LMA File off Algn\r
+ 0 .data 0000001c 00800100 000018fa 0000198e 2**0\r
+ CONTENTS, ALLOC, LOAD, DATA\r
+ 1 .text 000018fa 00000000 00000000 00000094 2**1\r
+ CONTENTS, ALLOC, LOAD, READONLY, CODE\r
+ 2 .bss 00000024 0080011c 0080011c 000019aa 2**0\r
+ ALLOC\r
+ 3 .stab 00000e28 00000000 00000000 000019ac 2**2\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 4 .stabstr 0000026b 00000000 00000000 000027d4 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 5 .debug_aranges 000003b0 00000000 00000000 00002a3f 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 6 .debug_pubnames 0000089a 00000000 00000000 00002def 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 7 .debug_info 000056c7 00000000 00000000 00003689 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 8 .debug_abbrev 00001b65 00000000 00000000 00008d50 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 9 .debug_line 000053bf 00000000 00000000 0000a8b5 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 10 .debug_frame 00000540 00000000 00000000 0000fc74 2**2\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 11 .debug_str 000026bf 00000000 00000000 000101b4 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 12 .debug_loc 00003422 00000000 00000000 00012873 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 13 .debug_pubtypes 00000a86 00000000 00000000 00015c95 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+ 14 .debug_ranges 00000490 00000000 00000000 0001671b 2**0\r
+ CONTENTS, READONLY, DEBUGGING\r
+\r
+Disassembly of section .text:\r
+\r
+00000000 <__vectors>:\r
+ 0: 51 c1 rjmp .+674 ; 0x2a4 <__ctors_end>\r
+ 2: 00 00 nop\r
+ 4: 6d c1 rjmp .+730 ; 0x2e0 <__bad_interrupt>\r
+ 6: 00 00 nop\r
+ 8: 6b c1 rjmp .+726 ; 0x2e0 <__bad_interrupt>\r
+ a: 00 00 nop\r
+ c: 69 c1 rjmp .+722 ; 0x2e0 <__bad_interrupt>\r
+ e: 00 00 nop\r
+ 10: 67 c1 rjmp .+718 ; 0x2e0 <__bad_interrupt>\r
+ 12: 00 00 nop\r
+ 14: 65 c1 rjmp .+714 ; 0x2e0 <__bad_interrupt>\r
+ 16: 00 00 nop\r
+ 18: 63 c1 rjmp .+710 ; 0x2e0 <__bad_interrupt>\r
+ 1a: 00 00 nop\r
+ 1c: 61 c1 rjmp .+706 ; 0x2e0 <__bad_interrupt>\r
+ 1e: 00 00 nop\r
+ 20: 5f c1 rjmp .+702 ; 0x2e0 <__bad_interrupt>\r
+ 22: 00 00 nop\r
+ 24: 5d c1 rjmp .+698 ; 0x2e0 <__bad_interrupt>\r
+ 26: 00 00 nop\r
+ 28: d5 c6 rjmp .+3498 ; 0xdd4 <__vector_10>\r
+ 2a: 00 00 nop\r
+ 2c: 59 c1 rjmp .+690 ; 0x2e0 <__bad_interrupt>\r
+ 2e: 00 00 nop\r
+ 30: 57 c1 rjmp .+686 ; 0x2e0 <__bad_interrupt>\r
+ 32: 00 00 nop\r
+ 34: 55 c1 rjmp .+682 ; 0x2e0 <__bad_interrupt>\r
+ 36: 00 00 nop\r
+ 38: 53 c1 rjmp .+678 ; 0x2e0 <__bad_interrupt>\r
+ 3a: 00 00 nop\r
+ 3c: 51 c1 rjmp .+674 ; 0x2e0 <__bad_interrupt>\r
+ 3e: 00 00 nop\r
+ 40: 4f c1 rjmp .+670 ; 0x2e0 <__bad_interrupt>\r
+ 42: 00 00 nop\r
+ 44: 4d c1 rjmp .+666 ; 0x2e0 <__bad_interrupt>\r
+ 46: 00 00 nop\r
+ 48: 4b c1 rjmp .+662 ; 0x2e0 <__bad_interrupt>\r
+ 4a: 00 00 nop\r
+ 4c: 49 c1 rjmp .+658 ; 0x2e0 <__bad_interrupt>\r
+ 4e: 00 00 nop\r
+ 50: 47 c1 rjmp .+654 ; 0x2e0 <__bad_interrupt>\r
+ 52: 00 00 nop\r
+ 54: 8b c2 rjmp .+1302 ; 0x56c <__vector_21>\r
+ 56: 00 00 nop\r
+ 58: 43 c1 rjmp .+646 ; 0x2e0 <__bad_interrupt>\r
+ 5a: 00 00 nop\r
+ 5c: 41 c1 rjmp .+642 ; 0x2e0 <__bad_interrupt>\r
+ 5e: 00 00 nop\r
+ 60: 3f c1 rjmp .+638 ; 0x2e0 <__bad_interrupt>\r
+ 62: 00 00 nop\r
+ 64: 3d c1 rjmp .+634 ; 0x2e0 <__bad_interrupt>\r
+ 66: 00 00 nop\r
+ 68: 3b c1 rjmp .+630 ; 0x2e0 <__bad_interrupt>\r
+ 6a: 00 00 nop\r
+ 6c: 39 c1 rjmp .+626 ; 0x2e0 <__bad_interrupt>\r
+ 6e: 00 00 nop\r
+ 70: 37 c1 rjmp .+622 ; 0x2e0 <__bad_interrupt>\r
+ 72: 00 00 nop\r
+ 74: 35 c1 rjmp .+618 ; 0x2e0 <__bad_interrupt>\r
+ 76: 00 00 nop\r
+ 78: 33 c1 rjmp .+614 ; 0x2e0 <__bad_interrupt>\r
+ 7a: 00 00 nop\r
+ 7c: 31 c1 rjmp .+610 ; 0x2e0 <__bad_interrupt>\r
+ 7e: 00 00 nop\r
+ 80: 2f c1 rjmp .+606 ; 0x2e0 <__bad_interrupt>\r
+ 82: 00 00 nop\r
+ 84: 2d c1 rjmp .+602 ; 0x2e0 <__bad_interrupt>\r
+ 86: 00 00 nop\r
+ 88: 2b c1 rjmp .+598 ; 0x2e0 <__bad_interrupt>\r
+ 8a: 00 00 nop\r
+ 8c: 29 c1 rjmp .+594 ; 0x2e0 <__bad_interrupt>\r
+ 8e: 00 00 nop\r
+ 90: 27 c1 rjmp .+590 ; 0x2e0 <__bad_interrupt>\r
+ 92: 00 00 nop\r
+ 94: 25 c1 rjmp .+586 ; 0x2e0 <__bad_interrupt>\r
+ 96: 00 00 nop\r
+\r
+00000098 <__c.3939>:\r
+ 98: 4d 69 63 72 6f 70 68 6f 6e 65 20 45 6e 75 6d 65 Microphone Enume\r
+ a8: 72 61 74 65 64 2e 0d 0a 00 rated....\r
+\r
+000000b1 <__c.3935>:\r
+ b1: 1b 5b 33 31 6d 43 6f 75 6c 64 20 6e 6f 74 20 73 .[31mCould not s\r
+ c1: 65 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 73 et alternative s\r
+ d1: 74 72 65 61 6d 69 6e 67 20 69 6e 74 65 72 66 61 treaming interfa\r
+ e1: 63 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 2d 2d ce setting... --\r
+ f1: 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 25 64 0d Error Code: %d.\r
+ 101: 0a 1b 5b 33 37 6d 00 ..[37m.\r
+\r
+00000108 <__c.3933>:\r
+ 108: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err\r
+ 118: 6f 72 20 28 53 65 74 20 43 6f 6e 66 69 67 75 72 or (Set Configur\r
+ 128: 61 74 69 6f 6e 29 2e 0d 0a 20 2d 2d 20 45 72 72 ation)... -- Err\r
+ 138: 6f 72 20 43 6f 64 65 3a 20 25 64 0d 0a 1b 5b 33 or Code: %d...[3\r
+ 148: 37 6d 00 7m.\r
+\r
+0000014b <__c.3930>:\r
+ 14b: 20 2d 2d 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 -- Error Code: \r
+ 15b: 25 64 0d 0a 1b 5b 33 37 6d 00 %d...[37m.\r
+\r
+00000165 <__c.3928>:\r
+ 165: 1b 5b 33 31 6d 49 6e 76 61 6c 69 64 20 44 65 76 .[31mInvalid Dev\r
+ 175: 69 63 65 2e 0d 0a 00 ice....\r
+\r
+0000017c <__c.3926>:\r
+ 17c: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err\r
+ 18c: 6f 72 20 28 47 65 74 20 43 6f 6e 66 69 67 75 72 or (Get Configur\r
+ 19c: 61 74 69 6f 6e 29 2e 0d 0a 00 ation)....\r
+\r
+000001a6 <__c.3924>:\r
+ 1a6: 47 65 74 74 69 6e 67 20 43 6f 6e 66 69 67 20 44 Getting Config D\r
+ 1b6: 61 74 61 2e 0d 0a 00 ata....\r
+\r
+000001bd <__c.3917>:\r
+ 1bd: 1b 5b 33 31 6d 44 65 76 20 45 6e 75 6d 20 45 72 .[31mDev Enum Er\r
+ 1cd: 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 43 ror.. -- Error C\r
+ 1dd: 6f 64 65 20 25 64 0d 0a 20 2d 2d 20 53 75 62 20 ode %d.. -- Sub \r
+ 1ed: 45 72 72 6f 72 20 43 6f 64 65 20 25 64 0d 0a 20 Error Code %d.. \r
+ 1fd: 2d 2d 20 49 6e 20 53 74 61 74 65 20 25 64 0d 0a -- In State %d..\r
+ 20d: 1b 5b 33 37 6d 00 .[37m.\r
+\r
+00000213 <__c.3910>:\r
+ 213: 1b 5b 33 31 6d 48 6f 73 74 20 4d 6f 64 65 20 45 .[31mHost Mode E\r
+ 223: 72 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 rror.. -- Error \r
+ 233: 43 6f 64 65 20 25 64 0d 0a 1b 5b 33 37 6d 00 Code %d...[37m.\r
+\r
+00000242 <__c.3902>:\r
+ 242: 1b 5b 33 32 6d 44 65 76 69 63 65 20 55 6e 61 74 .[32mDevice Unat\r
+ 252: 74 61 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 tached....[37m.\r
+\r
+00000261 <__c.3897>:\r
+ 261: 1b 5b 33 32 6d 44 65 76 69 63 65 20 41 74 74 61 .[32mDevice Atta\r
+ 271: 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 ched....[37m.\r
+\r
+0000027e <__c.3888>:\r
+ 27e: 1b 5b 33 36 6d 41 75 64 69 6f 20 48 6f 73 74 20 .[36mAudio Host \r
+ 28e: 44 65 6d 6f 20 72 75 6e 6e 69 6e 67 2e 0d 0a 1b Demo running....\r
+ 29e: 5b 33 37 6d 00 00 [37m..\r
+\r
+000002a4 <__ctors_end>:\r
+ 2a4: 11 24 eor r1, r1\r
+ 2a6: 1f be out 0x3f, r1 ; 63\r
+ 2a8: cf ef ldi r28, 0xFF ; 255\r
+ 2aa: d0 e2 ldi r29, 0x20 ; 32\r
+ 2ac: de bf out 0x3e, r29 ; 62\r
+ 2ae: cd bf out 0x3d, r28 ; 61\r
+\r
+000002b0 <__do_copy_data>:\r
+ 2b0: 11 e0 ldi r17, 0x01 ; 1\r
+ 2b2: a0 e0 ldi r26, 0x00 ; 0\r
+ 2b4: b1 e0 ldi r27, 0x01 ; 1\r
+ 2b6: ea ef ldi r30, 0xFA ; 250\r
+ 2b8: f8 e1 ldi r31, 0x18 ; 24\r
+ 2ba: 00 e0 ldi r16, 0x00 ; 0\r
+ 2bc: 0b bf out 0x3b, r16 ; 59\r
+ 2be: 02 c0 rjmp .+4 ; 0x2c4 <__do_copy_data+0x14>\r
+ 2c0: 07 90 elpm r0, Z+\r
+ 2c2: 0d 92 st X+, r0\r
+ 2c4: ac 31 cpi r26, 0x1C ; 28\r
+ 2c6: b1 07 cpc r27, r17\r
+ 2c8: d9 f7 brne .-10 ; 0x2c0 <__do_copy_data+0x10>\r
+\r
+000002ca <__do_clear_bss>:\r
+ 2ca: 11 e0 ldi r17, 0x01 ; 1\r
+ 2cc: ac e1 ldi r26, 0x1C ; 28\r
+ 2ce: b1 e0 ldi r27, 0x01 ; 1\r
+ 2d0: 01 c0 rjmp .+2 ; 0x2d4 <.do_clear_bss_start>\r
+\r
+000002d2 <.do_clear_bss_loop>:\r
+ 2d2: 1d 92 st X+, r1\r
+\r
+000002d4 <.do_clear_bss_start>:\r
+ 2d4: a0 34 cpi r26, 0x40 ; 64\r
+ 2d6: b1 07 cpc r27, r17\r
+ 2d8: e1 f7 brne .-8 ; 0x2d2 <.do_clear_bss_loop>\r
+ 2da: 3e d1 rcall .+636 ; 0x558 <main>\r
+ 2dc: 0c 94 7b 0c jmp 0x18f6 ; 0x18f6 <_exit>\r
+\r
+000002e0 <__bad_interrupt>:\r
+ 2e0: 8f ce rjmp .-738 ; 0x0 <__vectors>\r
+\r
+000002e2 <LEDs_SetAllLEDs>:\r
+ PORTD &= ~LEDMask;\r
+ }\r
+\r
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)\r
+ {\r
+ PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask);\r
+ 2e2: 9b b1 in r25, 0x0b ; 11\r
+ 2e4: 9f 70 andi r25, 0x0F ; 15\r
+ 2e6: 98 2b or r25, r24\r
+ 2e8: 9b b9 out 0x0b, r25 ; 11\r
+ }\r
+ 2ea: 08 95 ret\r
+\r
+000002ec <SetupHardware>:\r
+\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
+void SetupHardware(void)\r
+{\r
+ /* Disable watchdog if enabled by bootloader/fuses */\r
+ MCUSR &= ~(1 << WDRF);\r
+ 2ec: 84 b7 in r24, 0x34 ; 52\r
+ 2ee: 87 7f andi r24, 0xF7 ; 247\r
+ 2f0: 84 bf out 0x34, r24 ; 52\r
+ wdt_disable();\r
+ 2f2: 28 e1 ldi r18, 0x18 ; 24\r
+ 2f4: 0f b6 in r0, 0x3f ; 63\r
+ 2f6: f8 94 cli\r
+ 2f8: 20 93 60 00 sts 0x0060, r18\r
+ 2fc: 10 92 60 00 sts 0x0060, r1\r
+ 300: 0f be out 0x3f, r0 ; 63\r
+The type of x is clock_div_t.\r
+*/\r
+void clock_prescale_set(clock_div_t __x)\r
+{\r
+ uint8_t __tmp = _BV(CLKPCE);\r
+ __asm__ __volatile__ (\r
+ 302: 90 e0 ldi r25, 0x00 ; 0\r
+ 304: 80 e8 ldi r24, 0x80 ; 128\r
+ 306: 0f b6 in r0, 0x3f ; 63\r
+ 308: f8 94 cli\r
+ 30a: 80 93 61 00 sts 0x0061, r24\r
+ 30e: 90 93 61 00 sts 0x0061, r25\r
+ 312: 0f be out 0x3f, r0 ; 63\r
+ * \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate.\r
+ */\r
+ static inline void Serial_Init(const uint32_t BaudRate,\r
+ const bool DoubleSpeed)\r
+ {\r
+ UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));\r
+ 314: 83 e3 ldi r24, 0x33 ; 51\r
+ 316: 90 e0 ldi r25, 0x00 ; 0\r
+ 318: 90 93 cd 00 sts 0x00CD, r25\r
+ 31c: 80 93 cc 00 sts 0x00CC, r24\r
+\r
+ UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));\r
+ 320: 86 e0 ldi r24, 0x06 ; 6\r
+ 322: 80 93 ca 00 sts 0x00CA, r24\r
+ UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);\r
+ 326: 10 92 c8 00 sts 0x00C8, r1\r
+ UCSR1B = ((1 << TXEN1) | (1 << RXEN1));\r
+ 32a: 20 93 c9 00 sts 0x00C9, r18\r
+\r
+ DDRD |= (1 << 3);\r
+ 32e: 53 9a sbi 0x0a, 3 ; 10\r
+ PORTD |= (1 << 2);\r
+ 330: 5a 9a sbi 0x0b, 2 ; 11\r
+\r
+ /* Inline Functions: */\r
+ #if !defined(__DOXYGEN__)\r
+ static inline void LEDs_Init(void)\r
+ {\r
+ DDRD |= LEDS_ALL_LEDS;\r
+ 332: 8a b1 in r24, 0x0a ; 10\r
+ 334: 80 6f ori r24, 0xF0 ; 240\r
+ 336: 8a b9 out 0x0a, r24 ; 10\r
+ PORTD &= ~LEDS_ALL_LEDS;\r
+ 338: 8b b1 in r24, 0x0b ; 11\r
+ 33a: 8f 70 andi r24, 0x0F ; 15\r
+ 33c: 8b b9 out 0x0b, r24 ; 11\r
+ clock_prescale_set(clock_div_1);\r
+\r
+ /* Hardware Initialization */\r
+ Serial_Init(9600, false);\r
+ LEDs_Init();\r
+ USB_Init();\r
+ 33e: 34 d5 rcall .+2664 ; 0xda8 <USB_Init>\r
+ static inline void Serial_CreateStream(FILE* Stream)\r
+ {\r
+ if (!(Stream))\r
+ {\r
+ Stream = &USARTSerialStream;\r
+ stdin = Stream;\r
+ 340: ec e2 ldi r30, 0x2C ; 44\r
+ 342: f1 e0 ldi r31, 0x01 ; 1\r
+ 344: f0 93 3b 01 sts 0x013B, r31\r
+ 348: e0 93 3a 01 sts 0x013A, r30\r
+ stdout = Stream;\r
+ 34c: f0 93 3d 01 sts 0x013D, r31\r
+ 350: e0 93 3c 01 sts 0x013C, r30\r
+ }\r
+ \r
+ *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW);\r
+ 354: 8e e0 ldi r24, 0x0E ; 14\r
+ 356: df 01 movw r26, r30\r
+ 358: 1d 92 st X+, r1\r
+ 35a: 8a 95 dec r24\r
+ 35c: e9 f7 brne .-6 ; 0x358 <SetupHardware+0x6c>\r
+ 35e: 83 e0 ldi r24, 0x03 ; 3\r
+ 360: 80 93 2f 01 sts 0x012F, r24\r
+ 364: 85 e6 ldi r24, 0x65 ; 101\r
+ 366: 99 e0 ldi r25, 0x09 ; 9\r
+ 368: 90 93 35 01 sts 0x0135, r25\r
+ 36c: 80 93 34 01 sts 0x0134, r24\r
+ 370: 8e e6 ldi r24, 0x6E ; 110\r
+ 372: 99 e0 ldi r25, 0x09 ; 9\r
+ 374: 90 93 37 01 sts 0x0137, r25\r
+ 378: 80 93 36 01 sts 0x0136, r24\r
+\r
+ /* Create a stdio stream for the serial port for stdin and stdout */\r
+ Serial_CreateStream(NULL);\r
+}\r
+ 37c: 08 95 ret\r
+\r
+0000037e <EVENT_USB_Host_DeviceAttached>:\r
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
+ * starts the library USB task to begin the enumeration and USB management process.\r
+ */\r
+void EVENT_USB_Host_DeviceAttached(void)\r
+{\r
+ puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));\r
+ 37e: 81 e6 ldi r24, 0x61 ; 97\r
+ 380: 92 e0 ldi r25, 0x02 ; 2\r
+ 382: de d7 rcall .+4028 ; 0x1340 <puts_P>\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+ 384: 80 ea ldi r24, 0xA0 ; 160\r
+}\r
+ 386: ad cf rjmp .-166 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000388 <EVENT_USB_Host_DeviceUnattached>:\r
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and\r
+ * stops the library USB task management process.\r
+ */\r
+void EVENT_USB_Host_DeviceUnattached(void)\r
+{\r
+ puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));\r
+ 388: 82 e4 ldi r24, 0x42 ; 66\r
+ 38a: 92 e0 ldi r25, 0x02 ; 2\r
+ 38c: d9 d7 rcall .+4018 ; 0x1340 <puts_P>\r
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+ 38e: 80 e1 ldi r24, 0x10 ; 16\r
+}\r
+ 390: a8 cf rjmp .-176 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000392 <EVENT_USB_Host_DeviceEnumerationComplete>:\r
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully\r
+ * enumerated by the host and is now ready to be used by the application.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
+{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+ 392: 80 e6 ldi r24, 0x60 ; 96\r
+}\r
+ 394: a6 cf rjmp .-180 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000396 <EVENT_USB_Host_HostError>:\r
+\r
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */\r
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)\r
+{\r
+ 396: df 93 push r29\r
+ 398: cf 93 push r28\r
+ 39a: 0f 92 push r0\r
+ 39c: cd b7 in r28, 0x3d ; 61\r
+ 39e: de b7 in r29, 0x3e ; 62\r
+ USB_Disable();\r
+ 3a0: 89 83 std Y+1, r24 ; 0x01\r
+ 3a2: 9c d4 rcall .+2360 ; 0xcdc <USB_Disable>\r
+\r
+ printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"\r
+ 3a4: 00 d0 rcall .+0 ; 0x3a6 <EVENT_USB_Host_HostError+0x10>\r
+ 3a6: 00 d0 rcall .+0 ; 0x3a8 <EVENT_USB_Host_HostError+0x12>\r
+ 3a8: ed b7 in r30, 0x3d ; 61\r
+ 3aa: fe b7 in r31, 0x3e ; 62\r
+ 3ac: 31 96 adiw r30, 0x01 ; 1\r
+ 3ae: 23 e1 ldi r18, 0x13 ; 19\r
+ 3b0: 32 e0 ldi r19, 0x02 ; 2\r
+ 3b2: ad b7 in r26, 0x3d ; 61\r
+ 3b4: be b7 in r27, 0x3e ; 62\r
+ 3b6: 12 96 adiw r26, 0x02 ; 2\r
+ 3b8: 3c 93 st X, r19\r
+ 3ba: 2e 93 st -X, r18\r
+ 3bc: 11 97 sbiw r26, 0x01 ; 1\r
+ 3be: 89 81 ldd r24, Y+1 ; 0x01\r
+ 3c0: 82 83 std Z+2, r24 ; 0x02\r
+ 3c2: 13 82 std Z+3, r1 ; 0x03\r
+ 3c4: 9e d7 rcall .+3900 ; 0x1302 <printf_P>\r
+ " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ 3c6: 0f 90 pop r0\r
+ 3c8: 0f 90 pop r0\r
+ 3ca: 0f 90 pop r0\r
+ 3cc: 0f 90 pop r0\r
+ 3ce: 80 e9 ldi r24, 0x90 ; 144\r
+ 3d0: 88 df rcall .-240 ; 0x2e2 <LEDs_SetAllLEDs>\r
+ 3d2: ff cf rjmp .-2 ; 0x3d2 <EVENT_USB_Host_HostError+0x3c>\r
+\r
+000003d4 <EVENT_USB_Host_DeviceEnumerationFailed>:\r
+ * enumerating an attached USB device.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,\r
+ const uint8_t SubErrorCode)\r
+{\r
+ printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"\r
+ 3d4: 90 91 2b 01 lds r25, 0x012B\r
+ 3d8: 2d b7 in r18, 0x3d ; 61\r
+ 3da: 3e b7 in r19, 0x3e ; 62\r
+ 3dc: 28 50 subi r18, 0x08 ; 8\r
+ 3de: 30 40 sbci r19, 0x00 ; 0\r
+ 3e0: 0f b6 in r0, 0x3f ; 63\r
+ 3e2: f8 94 cli\r
+ 3e4: 3e bf out 0x3e, r19 ; 62\r
+ 3e6: 0f be out 0x3f, r0 ; 63\r
+ 3e8: 2d bf out 0x3d, r18 ; 61\r
+ 3ea: ed b7 in r30, 0x3d ; 61\r
+ 3ec: fe b7 in r31, 0x3e ; 62\r
+ 3ee: 31 96 adiw r30, 0x01 ; 1\r
+ 3f0: 2d eb ldi r18, 0xBD ; 189\r
+ 3f2: 31 e0 ldi r19, 0x01 ; 1\r
+ 3f4: ad b7 in r26, 0x3d ; 61\r
+ 3f6: be b7 in r27, 0x3e ; 62\r
+ 3f8: 12 96 adiw r26, 0x02 ; 2\r
+ 3fa: 3c 93 st X, r19\r
+ 3fc: 2e 93 st -X, r18\r
+ 3fe: 11 97 sbiw r26, 0x01 ; 1\r
+ 400: 82 83 std Z+2, r24 ; 0x02\r
+ 402: 13 82 std Z+3, r1 ; 0x03\r
+ 404: 64 83 std Z+4, r22 ; 0x04\r
+ 406: 15 82 std Z+5, r1 ; 0x05\r
+ 408: 96 83 std Z+6, r25 ; 0x06\r
+ 40a: 17 82 std Z+7, r1 ; 0x07\r
+ 40c: 7a d7 rcall .+3828 ; 0x1302 <printf_P>\r
+ " -- Error Code %d\r\n"\r
+ " -- Sub Error Code %d\r\n"\r
+ " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
+\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ 40e: 2d b7 in r18, 0x3d ; 61\r
+ 410: 3e b7 in r19, 0x3e ; 62\r
+ 412: 28 5f subi r18, 0xF8 ; 248\r
+ 414: 3f 4f sbci r19, 0xFF ; 255\r
+ 416: 0f b6 in r0, 0x3f ; 63\r
+ 418: f8 94 cli\r
+ 41a: 3e bf out 0x3e, r19 ; 62\r
+ 41c: 0f be out 0x3f, r0 ; 63\r
+ 41e: 2d bf out 0x3d, r18 ; 61\r
+ 420: 80 e9 ldi r24, 0x90 ; 144\r
+}\r
+ 422: 5f cf rjmp .-322 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000424 <Audio_Task>:\r
+\r
+void Audio_Task(void)\r
+{\r
+ 424: 1f 93 push r17\r
+ 426: df 93 push r29\r
+ 428: cf 93 push r28\r
+ 42a: 00 d0 rcall .+0 ; 0x42c <Audio_Task+0x8>\r
+ 42c: 0f 92 push r0\r
+ 42e: cd b7 in r28, 0x3d ; 61\r
+ 430: de b7 in r29, 0x3e ; 62\r
+ uint8_t ErrorCode;\r
+\r
+ switch (USB_HostState)\r
+ 432: 80 91 2b 01 lds r24, 0x012B\r
+ 436: 8b 30 cpi r24, 0x0B ; 11\r
+ 438: 09 f0 breq .+2 ; 0x43c <Audio_Task+0x18>\r
+ 43a: 87 c0 rjmp .+270 ; 0x54a <Audio_Task+0x126>\r
+ {\r
+ case HOST_STATE_Addressed:\r
+ puts_P(PSTR("Getting Config Data.\r\n"));\r
+ 43c: 86 ea ldi r24, 0xA6 ; 166\r
+ 43e: 91 e0 ldi r25, 0x01 ; 1\r
+ 440: 7f d7 rcall .+3838 ; 0x1340 <puts_P>\r
+\r
+ /* Get and process the configuration descriptor data */\r
+ if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)\r
+ 442: 30 d1 rcall .+608 ; 0x6a4 <ProcessConfigurationDescriptor>\r
+ 444: 18 2f mov r17, r24\r
+ 446: 88 23 and r24, r24\r
+ 448: e9 f0 breq .+58 ; 0x484 <Audio_Task+0x60>\r
+ {\r
+ if (ErrorCode == ControlError)\r
+ 44a: 81 30 cpi r24, 0x01 ; 1\r
+ 44c: 19 f4 brne .+6 ; 0x454 <Audio_Task+0x30>\r
+ puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));\r
+ 44e: 8c e7 ldi r24, 0x7C ; 124\r
+ 450: 91 e0 ldi r25, 0x01 ; 1\r
+ 452: 02 c0 rjmp .+4 ; 0x458 <Audio_Task+0x34>\r
+ else\r
+ puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));\r
+ 454: 85 e6 ldi r24, 0x65 ; 101\r
+ 456: 91 e0 ldi r25, 0x01 ; 1\r
+ 458: 73 d7 rcall .+3814 ; 0x1340 <puts_P>\r
+\r
+ printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+ 45a: 00 d0 rcall .+0 ; 0x45c <Audio_Task+0x38>\r
+ 45c: 00 d0 rcall .+0 ; 0x45e <Audio_Task+0x3a>\r
+ 45e: ed b7 in r30, 0x3d ; 61\r
+ 460: fe b7 in r31, 0x3e ; 62\r
+ 462: 31 96 adiw r30, 0x01 ; 1\r
+ 464: 2b e4 ldi r18, 0x4B ; 75\r
+ 466: 31 e0 ldi r19, 0x01 ; 1\r
+ 468: ad b7 in r26, 0x3d ; 61\r
+ 46a: be b7 in r27, 0x3e ; 62\r
+ 46c: 12 96 adiw r26, 0x02 ; 2\r
+ 46e: 3c 93 st X, r19\r
+ 470: 2e 93 st -X, r18\r
+ 472: 11 97 sbiw r26, 0x01 ; 1\r
+ 474: 12 83 std Z+2, r17 ; 0x02\r
+ 476: 13 82 std Z+3, r1 ; 0x03\r
+ 478: 44 d7 rcall .+3720 ; 0x1302 <printf_P>\r
+\r
+ /* Indicate error status */\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ 47a: 0f 90 pop r0\r
+ 47c: 0f 90 pop r0\r
+ 47e: 0f 90 pop r0\r
+ 480: 0f 90 pop r0\r
+ 482: 4a c0 rjmp .+148 ; 0x518 <Audio_Task+0xf4>\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+\r
+ /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */\r
+ if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)\r
+ 484: 81 e0 ldi r24, 0x01 ; 1\r
+ 486: 82 d3 rcall .+1796 ; 0xb8c <USB_Host_SetDeviceConfiguration>\r
+ 488: 88 23 and r24, r24\r
+ 48a: 41 f0 breq .+16 ; 0x49c <Audio_Task+0x78>\r
+ {\r
+ printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"\r
+ 48c: 00 d0 rcall .+0 ; 0x48e <Audio_Task+0x6a>\r
+ 48e: 00 d0 rcall .+0 ; 0x490 <Audio_Task+0x6c>\r
+ 490: ed b7 in r30, 0x3d ; 61\r
+ 492: fe b7 in r31, 0x3e ; 62\r
+ 494: 31 96 adiw r30, 0x01 ; 1\r
+ 496: 28 e0 ldi r18, 0x08 ; 8\r
+ 498: 31 e0 ldi r19, 0x01 ; 1\r
+ 49a: 0e c0 rjmp .+28 ; 0x4b8 <Audio_Task+0x94>\r
+ /* Wait until USB device disconnected */\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+ \r
+ if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,\r
+ 49c: 80 91 1c 01 lds r24, 0x011C\r
+ 4a0: 60 91 1d 01 lds r22, 0x011D\r
+ 4a4: 89 d3 rcall .+1810 ; 0xbb8 <USB_Host_SetInterfaceAltSetting>\r
+ 4a6: 88 23 and r24, r24\r
+ 4a8: 79 f0 breq .+30 ; 0x4c8 <Audio_Task+0xa4>\r
+ StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)\r
+ {\r
+ printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"\r
+ 4aa: 00 d0 rcall .+0 ; 0x4ac <Audio_Task+0x88>\r
+ 4ac: 00 d0 rcall .+0 ; 0x4ae <Audio_Task+0x8a>\r
+ 4ae: ed b7 in r30, 0x3d ; 61\r
+ 4b0: fe b7 in r31, 0x3e ; 62\r
+ 4b2: 31 96 adiw r30, 0x01 ; 1\r
+ 4b4: 21 eb ldi r18, 0xB1 ; 177\r
+ 4b6: 30 e0 ldi r19, 0x00 ; 0\r
+ 4b8: ad b7 in r26, 0x3d ; 61\r
+ 4ba: be b7 in r27, 0x3e ; 62\r
+ 4bc: 12 96 adiw r26, 0x02 ; 2\r
+ 4be: 3c 93 st X, r19\r
+ 4c0: 2e 93 st -X, r18\r
+ 4c2: 11 97 sbiw r26, 0x01 ; 1\r
+ 4c4: 82 83 std Z+2, r24 ; 0x02\r
+ 4c6: d7 cf rjmp .-82 ; 0x476 <Audio_Task+0x52>\r
+ /* Wait until USB device disconnected */\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ 4c8: 20 91 1e 01 lds r18, 0x011E\r
+ 4cc: 82 e2 ldi r24, 0x22 ; 34\r
+ 4ce: 80 93 23 01 sts 0x0123, r24\r
+ 4d2: 81 e0 ldi r24, 0x01 ; 1\r
+ 4d4: 80 93 24 01 sts 0x0124, r24\r
+ 4d8: 80 e0 ldi r24, 0x00 ; 0\r
+ 4da: 91 e0 ldi r25, 0x01 ; 1\r
+ 4dc: 90 93 26 01 sts 0x0126, r25\r
+ 4e0: 80 93 25 01 sts 0x0125, r24\r
+ 4e4: 20 93 27 01 sts 0x0127, r18\r
+ 4e8: 10 92 28 01 sts 0x0128, r1\r
+ 4ec: 83 e0 ldi r24, 0x03 ; 3\r
+ 4ee: 90 e0 ldi r25, 0x00 ; 0\r
+ 4f0: 90 93 2a 01 sts 0x012A, r25\r
+ 4f4: 80 93 29 01 sts 0x0129, r24\r
+ .wValue = 0x0100,\r
+ .wIndex = StreamingEndpointAddress,\r
+ .wLength = sizeof(USB_Audio_SampleFreq_t),\r
+ };\r
+ \r
+ USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);\r
+ 4f8: de 01 movw r26, r28\r
+ 4fa: 11 96 adiw r26, 0x01 ; 1\r
+ 4fc: e0 e0 ldi r30, 0x00 ; 0\r
+ 4fe: f1 e0 ldi r31, 0x01 ; 1\r
+ 500: 83 e0 ldi r24, 0x03 ; 3\r
+ 502: 01 90 ld r0, Z+\r
+ 504: 0d 92 st X+, r0\r
+ 506: 81 50 subi r24, 0x01 ; 1\r
+ 508: e1 f7 brne .-8 ; 0x502 <Audio_Task+0xde>\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ 50a: 10 92 a7 00 sts 0x00A7, r1\r
+\r
+ /* Select the control pipe for the request transfer */\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ /* Set the sample rate on the streaming interface endpoint */\r
+ if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)\r
+ 50e: ce 01 movw r24, r28\r
+ 510: 01 96 adiw r24, 0x01 ; 1\r
+ 512: b7 d5 rcall .+2926 ; 0x1082 <USB_Host_SendControlRequest>\r
+ 514: 88 23 and r24, r24\r
+ 516: 29 f0 breq .+10 ; 0x522 <Audio_Task+0xfe>\r
+ {\r
+ /* Indicate error status */\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ 518: 80 e9 ldi r24, 0x90 ; 144\r
+ 51a: e3 de rcall .-570 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+ /* Wait until USB device disconnected */\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ 51c: 10 92 2b 01 sts 0x012B, r1\r
+ break;\r
+ 520: 14 c0 rjmp .+40 ; 0x54a <Audio_Task+0x126>\r
+ }\r
+ \r
+ /* Sample reload timer initialization */\r
+ TIMSK0 = (1 << OCIE0A);\r
+ 522: 82 e0 ldi r24, 0x02 ; 2\r
+ 524: 80 93 6e 00 sts 0x006E, r24\r
+ OCR0A = ((F_CPU / 8 / 8000) - 1);\r
+ 528: 9c e7 ldi r25, 0x7C ; 124\r
+ 52a: 97 bd out 0x27, r25 ; 39\r
+ TCCR0A = (1 << WGM01); // CTC mode\r
+ 52c: 84 bd out 0x24, r24 ; 36\r
+ TCCR0B = (1 << CS01); // Fcpu/8 speed \r
+ 52e: 85 bd out 0x25, r24 ; 37\r
+\r
+ /* Set speaker as output */\r
+ DDRC |= (1 << 6);\r
+ 530: 3e 9a sbi 0x07, 6 ; 7\r
+\r
+ /* PWM speaker timer initialization */\r
+ TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)\r
+ 532: 81 ef ldi r24, 0xF1 ; 241\r
+ 534: 80 93 90 00 sts 0x0090, r24\r
+ | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP\r
+ TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed\r
+ 538: 89 e0 ldi r24, 0x09 ; 9\r
+ 53a: 80 93 91 00 sts 0x0091, r24\r
+ \r
+ puts_P(PSTR("Microphone Enumerated.\r\n"));\r
+ 53e: 88 e9 ldi r24, 0x98 ; 152\r
+ 540: 90 e0 ldi r25, 0x00 ; 0\r
+ 542: fe d6 rcall .+3580 ; 0x1340 <puts_P>\r
+\r
+ USB_HostState = HOST_STATE_Configured;\r
+ 544: 8c e0 ldi r24, 0x0C ; 12\r
+ 546: 80 93 2b 01 sts 0x012B, r24\r
+ break;\r
+ case HOST_STATE_Configured:\r
+ break;\r
+ }\r
+}\r
+ 54a: 0f 90 pop r0\r
+ 54c: 0f 90 pop r0\r
+ 54e: 0f 90 pop r0\r
+ 550: cf 91 pop r28\r
+ 552: df 91 pop r29\r
+ 554: 1f 91 pop r17\r
+ 556: 08 95 ret\r
+\r
+00000558 <main>:\r
+/** Main program entry point. This routine configures the hardware required by the application, then\r
+ * enters a loop to run the application tasks in sequence.\r
+ */\r
+int main(void)\r
+{\r
+ SetupHardware();\r
+ 558: c9 de rcall .-622 ; 0x2ec <SetupHardware>\r
+\r
+ puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));\r
+ 55a: 8e e7 ldi r24, 0x7E ; 126\r
+ 55c: 92 e0 ldi r25, 0x02 ; 2\r
+ 55e: f0 d6 rcall .+3552 ; 0x1340 <puts_P>\r
+\r
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+ 560: 80 e1 ldi r24, 0x10 ; 16\r
+ 562: bf de rcall .-642 ; 0x2e2 <LEDs_SetAllLEDs>\r
+ sei();\r
+ 564: 78 94 sei\r
+\r
+ for (;;)\r
+ {\r
+ Audio_Task();\r
+ 566: 5e df rcall .-324 ; 0x424 <Audio_Task>\r
+ USB_USBTask();\r
+ 568: a2 d6 rcall .+3396 ; 0x12ae <USB_USBTask>\r
+ 56a: fd cf rjmp .-6 ; 0x566 <main+0xe>\r
+\r
+0000056c <__vector_21>:\r
+ }\r
+}\r
+\r
+/** ISR to handle the reloading of the PWM timer with the next sample. */\r
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)\r
+{\r
+ 56c: 1f 92 push r1\r
+ 56e: 0f 92 push r0\r
+ 570: 0f b6 in r0, 0x3f ; 63\r
+ 572: 0f 92 push r0\r
+ 574: 0b b6 in r0, 0x3b ; 59\r
+ 576: 0f 92 push r0\r
+ 578: 11 24 eor r1, r1\r
+ 57a: 1f 93 push r17\r
+ 57c: 2f 93 push r18\r
+ 57e: 3f 93 push r19\r
+ 580: 4f 93 push r20\r
+ 582: 5f 93 push r21\r
+ 584: 6f 93 push r22\r
+ 586: 7f 93 push r23\r
+ 588: 8f 93 push r24\r
+ 58a: 9f 93 push r25\r
+ 58c: af 93 push r26\r
+ 58e: bf 93 push r27\r
+ 590: ef 93 push r30\r
+ 592: ff 93 push r31\r
+ * \return Index of the currently selected pipe.\r
+ */\r
+ static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint8_t Pipe_GetCurrentPipe(void)\r
+ {\r
+ return (UPNUM & PIPE_PIPENUM_MASK);\r
+ 594: 10 91 a7 00 lds r17, 0x00A7\r
+ 598: 17 70 andi r17, 0x07 ; 7\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ 59a: 81 e0 ldi r24, 0x01 ; 1\r
+ 59c: 80 93 a7 00 sts 0x00A7, r24\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 5a0: 80 91 a9 00 lds r24, 0x00A9\r
+ 5a4: 8f 7b andi r24, 0xBF ; 191\r
+ 5a6: 80 93 a9 00 sts 0x00A9, r24\r
+ * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsINReceived(void)\r
+ {\r
+ return ((UPINTX & (1 << RXINI)) ? true : false);\r
+ 5aa: 80 91 a6 00 lds r24, 0x00A6\r
+\r
+ Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);\r
+ Pipe_Unfreeze();\r
+\r
+ /* Check if the current pipe can be read from (contains a packet) and the device is sending data */\r
+ if (Pipe_IsINReceived())\r
+ 5ae: 80 ff sbrs r24, 0\r
+ 5b0: 2b c0 rjmp .+86 ; 0x608 <__vector_21+0x9c>\r
+ {\r
+ uint16_t Value;\r
+ uint8_t Bytes[2];\r
+ } Data;\r
+\r
+ Data.Bytes[0] = UPDATX;\r
+ 5b2: 80 91 af 00 lds r24, 0x00AF\r
+ Data.Bytes[1] = UPDATX;\r
+ 5b6: 40 91 af 00 lds r20, 0x00AF\r
+ * on its direction.\r
+ */\r
+ static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsReadWriteAllowed(void)\r
+ {\r
+ return ((UPINTX & (1 << RWAL)) ? true : false);\r
+ 5ba: 80 91 a6 00 lds r24, 0x00A6\r
+ {\r
+ /* Retrieve the signed 16-bit audio sample, convert to 8-bit */\r
+ int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);\r
+\r
+ /* Check to see if the bank is now empty */\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
+ 5be: 85 fd sbrc r24, 5\r
+ 5c0: 05 c0 rjmp .+10 ; 0x5cc <__vector_21+0x60>\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearIN(void)\r
+ {\r
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+ 5c2: 80 91 a6 00 lds r24, 0x00A6\r
+ 5c6: 8e 77 andi r24, 0x7E ; 126\r
+ 5c8: 80 93 a6 00 sts 0x00A6, r24\r
+ /* Acknowledge the packet, clear the bank ready for the next packet */\r
+ Pipe_ClearIN();\r
+ }\r
+\r
+ /* Load the sample into the PWM timer channel */\r
+ OCR3A = (Sample_8Bit ^ (1 << 7));\r
+ 5cc: 84 2f mov r24, r20\r
+ 5ce: 99 27 eor r25, r25\r
+ 5d0: 87 fd sbrc r24, 7\r
+ 5d2: 90 95 com r25\r
+ 5d4: 20 e8 ldi r18, 0x80 ; 128\r
+ 5d6: 30 e0 ldi r19, 0x00 ; 0\r
+ 5d8: 82 27 eor r24, r18\r
+ 5da: 93 27 eor r25, r19\r
+ 5dc: 90 93 99 00 sts 0x0099, r25\r
+ 5e0: 80 93 98 00 sts 0x0098, r24\r
+\r
+ uint8_t LEDMask = LEDS_NO_LEDS;\r
+\r
+ /* Turn on LEDs as the sample amplitude increases */\r
+ if (Sample_8Bit > 16)\r
+ 5e4: 41 31 cpi r20, 0x11 ; 17\r
+ 5e6: 44 f4 brge .+16 ; 0x5f8 <__vector_21+0x8c>\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);\r
+ else if (Sample_8Bit > 8)\r
+ 5e8: 49 30 cpi r20, 0x09 ; 9\r
+ 5ea: 44 f4 brge .+16 ; 0x5fc <__vector_21+0x90>\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);\r
+ else if (Sample_8Bit > 4)\r
+ 5ec: 45 30 cpi r20, 0x05 ; 5\r
+ 5ee: 44 f4 brge .+16 ; 0x600 <__vector_21+0x94>\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2);\r
+ else if (Sample_8Bit > 2)\r
+ 5f0: 43 30 cpi r20, 0x03 ; 3\r
+ 5f2: 44 f4 brge .+16 ; 0x604 <__vector_21+0x98>\r
+ }\r
+\r
+ /* Load the sample into the PWM timer channel */\r
+ OCR3A = (Sample_8Bit ^ (1 << 7));\r
+\r
+ uint8_t LEDMask = LEDS_NO_LEDS;\r
+ 5f4: 80 e0 ldi r24, 0x00 ; 0\r
+ 5f6: 07 c0 rjmp .+14 ; 0x606 <__vector_21+0x9a>\r
+\r
+ /* Turn on LEDs as the sample amplitude increases */\r
+ if (Sample_8Bit > 16)\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);\r
+ 5f8: 80 ef ldi r24, 0xF0 ; 240\r
+ 5fa: 05 c0 rjmp .+10 ; 0x606 <__vector_21+0x9a>\r
+ else if (Sample_8Bit > 8)\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);\r
+ 5fc: 80 eb ldi r24, 0xB0 ; 176\r
+ 5fe: 03 c0 rjmp .+6 ; 0x606 <__vector_21+0x9a>\r
+ else if (Sample_8Bit > 4)\r
+ LEDMask = (LEDS_LED1 | LEDS_LED2);\r
+ 600: 80 e3 ldi r24, 0x30 ; 48\r
+ 602: 01 c0 rjmp .+2 ; 0x606 <__vector_21+0x9a>\r
+ else if (Sample_8Bit > 2)\r
+ LEDMask = (LEDS_LED1);\r
+ 604: 80 e1 ldi r24, 0x10 ; 16\r
+\r
+ LEDs_SetAllLEDs(LEDMask);\r
+ 606: 6d de rcall .-806 ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Freeze(void)\r
+ {\r
+ UPCONX |= (1 << PFREEZE);\r
+ 608: 80 91 a9 00 lds r24, 0x00A9\r
+ 60c: 80 64 ori r24, 0x40 ; 64\r
+ 60e: 80 93 a9 00 sts 0x00A9, r24\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ 612: 10 93 a7 00 sts 0x00A7, r17\r
+ }\r
+ \r
+ Pipe_Freeze();\r
+\r
+ Pipe_SelectPipe(PrevPipe);\r
+}\r
+ 616: ff 91 pop r31\r
+ 618: ef 91 pop r30\r
+ 61a: bf 91 pop r27\r
+ 61c: af 91 pop r26\r
+ 61e: 9f 91 pop r25\r
+ 620: 8f 91 pop r24\r
+ 622: 7f 91 pop r23\r
+ 624: 6f 91 pop r22\r
+ 626: 5f 91 pop r21\r
+ 628: 4f 91 pop r20\r
+ 62a: 3f 91 pop r19\r
+ 62c: 2f 91 pop r18\r
+ 62e: 1f 91 pop r17\r
+ 630: 0f 90 pop r0\r
+ 632: 0b be out 0x3b, r0 ; 59\r
+ 634: 0f 90 pop r0\r
+ 636: 0f be out 0x3f, r0 ; 63\r
+ 638: 0f 90 pop r0\r
+ 63a: 1f 90 pop r1\r
+ 63c: 18 95 reti\r
+\r
+0000063e <DComp_NextAudioControlInterface>:\r
+ /* Valid data found, return success */\r
+ return SuccessfulConfigRead;\r
+}\r
+\r
+uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)\r
+{\r
+ 63e: fc 01 movw r30, r24\r
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+ if (Header->Type == DTYPE_Interface)\r
+ 640: 81 81 ldd r24, Z+1 ; 0x01\r
+ 642: 84 30 cpi r24, 0x04 ; 4\r
+ 644: 49 f4 brne .+18 ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+ {\r
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&\r
+ 646: 85 81 ldd r24, Z+5 ; 0x05\r
+ 648: 81 30 cpi r24, 0x01 ; 1\r
+ 64a: 31 f4 brne .+12 ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+ 64c: 86 81 ldd r24, Z+6 ; 0x06\r
+ 64e: 81 30 cpi r24, 0x01 ; 1\r
+ 650: 19 f4 brne .+6 ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+ (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&\r
+ 652: 87 81 ldd r24, Z+7 ; 0x07\r
+ 654: 88 23 and r24, r24\r
+ 656: 11 f0 breq .+4 ; 0x65c <DComp_NextAudioControlInterface+0x1e>\r
+ {\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ }\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+ 658: 82 e0 ldi r24, 0x02 ; 2\r
+ 65a: 08 95 ret\r
+\r
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&\r
+ (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&\r
+ (Interface->Protocol == AUDIO_CSCP_ControlProtocol))\r
+ {\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ 65c: 80 e0 ldi r24, 0x00 ; 0\r
+ }\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+ 65e: 08 95 ret\r
+\r
+00000660 <DComp_NextAudioStreamInterface>:\r
+\r
+uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)\r
+{\r
+ 660: fc 01 movw r30, r24\r
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+ if (Header->Type == DTYPE_Interface)\r
+ 662: 81 81 ldd r24, Z+1 ; 0x01\r
+ 664: 84 30 cpi r24, 0x04 ; 4\r
+ 666: 49 f4 brne .+18 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+ {\r
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&\r
+ 668: 85 81 ldd r24, Z+5 ; 0x05\r
+ 66a: 81 30 cpi r24, 0x01 ; 1\r
+ 66c: 31 f4 brne .+12 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+ 66e: 86 81 ldd r24, Z+6 ; 0x06\r
+ 670: 82 30 cpi r24, 0x02 ; 2\r
+ 672: 19 f4 brne .+6 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+ (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&\r
+ 674: 87 81 ldd r24, Z+7 ; 0x07\r
+ 676: 88 23 and r24, r24\r
+ 678: 11 f0 breq .+4 ; 0x67e <DComp_NextAudioStreamInterface+0x1e>\r
+ {\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ }\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+ 67a: 82 e0 ldi r24, 0x02 ; 2\r
+ 67c: 08 95 ret\r
+\r
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&\r
+ (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&\r
+ (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))\r
+ {\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ 67e: 80 e0 ldi r24, 0x00 ; 0\r
+ }\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+ 680: 08 95 ret\r
+\r
+00000682 <DComp_NextAudioInterfaceDataEndpoint>:\r
+\r
+uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)\r
+{\r
+ 682: fc 01 movw r30, r24\r
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+ if (Header->Type == DTYPE_Endpoint)\r
+ 684: 81 81 ldd r24, Z+1 ; 0x01\r
+ 686: 85 30 cpi r24, 0x05 ; 5\r
+ 688: 29 f4 brne .+10 ; 0x694 <DComp_NextAudioInterfaceDataEndpoint+0x12>\r
+ {\r
+ USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);\r
+\r
+ if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)\r
+ 68a: 83 81 ldd r24, Z+3 ; 0x03\r
+ 68c: 83 70 andi r24, 0x03 ; 3\r
+ 68e: 81 30 cpi r24, 0x01 ; 1\r
+ 690: 19 f4 brne .+6 ; 0x698 <DComp_NextAudioInterfaceDataEndpoint+0x16>\r
+ 692: 04 c0 rjmp .+8 ; 0x69c <DComp_NextAudioInterfaceDataEndpoint+0x1a>\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ }\r
+ else if (Header->Type == DTYPE_Interface)\r
+ 694: 84 30 cpi r24, 0x04 ; 4\r
+ 696: 21 f0 breq .+8 ; 0x6a0 <DComp_NextAudioInterfaceDataEndpoint+0x1e>\r
+ {\r
+ return DESCRIPTOR_SEARCH_Fail;\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+ 698: 82 e0 ldi r24, 0x02 ; 2\r
+ 69a: 08 95 ret\r
+ if (Header->Type == DTYPE_Endpoint)\r
+ {\r
+ USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);\r
+\r
+ if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)\r
+ return DESCRIPTOR_SEARCH_Found;\r
+ 69c: 80 e0 ldi r24, 0x00 ; 0\r
+ 69e: 08 95 ret\r
+ }\r
+ else if (Header->Type == DTYPE_Interface)\r
+ {\r
+ return DESCRIPTOR_SEARCH_Fail;\r
+ 6a0: 81 e0 ldi r24, 0x01 ; 1\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+ 6a2: 08 95 ret\r
+\r
+000006a4 <ProcessConfigurationDescriptor>:\r
+uint8_t StreamingInterfaceIndex = 0;\r
+uint8_t StreamingInterfaceAltSetting = 0;\r
+uint8_t StreamingEndpointAddress = 0;\r
+\r
+uint8_t ProcessConfigurationDescriptor(void)\r
+{\r
+ 6a4: af 92 push r10\r
+ 6a6: bf 92 push r11\r
+ 6a8: cf 92 push r12\r
+ 6aa: df 92 push r13\r
+ 6ac: ef 92 push r14\r
+ 6ae: ff 92 push r15\r
+ 6b0: 0f 93 push r16\r
+ 6b2: 1f 93 push r17\r
+ 6b4: df 93 push r29\r
+ 6b6: cf 93 push r28\r
+ 6b8: cd b7 in r28, 0x3d ; 61\r
+ 6ba: de b7 in r29, 0x3e ; 62\r
+ 6bc: c4 50 subi r28, 0x04 ; 4\r
+ 6be: d2 40 sbci r29, 0x02 ; 2\r
+ 6c0: 0f b6 in r0, 0x3f ; 63\r
+ 6c2: f8 94 cli\r
+ 6c4: de bf out 0x3e, r29 ; 62\r
+ 6c6: 0f be out 0x3f, r0 ; 63\r
+ 6c8: cd bf out 0x3d, r28 ; 61\r
+ uint8_t ConfigDescriptorData[512];\r
+ void* CurrConfigLocation = ConfigDescriptorData;\r
+ 6ca: ae 01 movw r20, r28\r
+ 6cc: 4b 5f subi r20, 0xFB ; 251\r
+ 6ce: 5f 4f sbci r21, 0xFF ; 255\r
+ 6d0: 5a 83 std Y+2, r21 ; 0x02\r
+ 6d2: 49 83 std Y+1, r20 ; 0x01\r
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;\r
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;\r
+\r
+ /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+ 6d4: 23 e0 ldi r18, 0x03 ; 3\r
+ 6d6: e2 2e mov r14, r18\r
+ 6d8: f1 2c mov r15, r1\r
+ 6da: ec 0e add r14, r28\r
+ 6dc: fd 1e adc r15, r29\r
+ 6de: 81 e0 ldi r24, 0x01 ; 1\r
+ 6e0: b7 01 movw r22, r14\r
+ 6e2: 20 e0 ldi r18, 0x00 ; 0\r
+ 6e4: 32 e0 ldi r19, 0x02 ; 2\r
+ 6e6: 09 d4 rcall .+2066 ; 0xefa <USB_Host_GetDeviceConfigDescriptor>\r
+ 6e8: 85 30 cpi r24, 0x05 ; 5\r
+ 6ea: 09 f4 brne .+2 ; 0x6ee <ProcessConfigurationDescriptor+0x4a>\r
+ 6ec: 5c c0 rjmp .+184 ; 0x7a6 <ProcessConfigurationDescriptor+0x102>\r
+ 6ee: 86 30 cpi r24, 0x06 ; 6\r
+ 6f0: 61 f0 breq .+24 ; 0x70a <ProcessConfigurationDescriptor+0x66>\r
+ 6f2: 88 23 and r24, r24\r
+ 6f4: 61 f4 brne .+24 ; 0x70e <ProcessConfigurationDescriptor+0x6a>\r
+ 6f6: 00 e0 ldi r16, 0x00 ; 0\r
+ 6f8: 10 e0 ldi r17, 0x00 ; 0\r
+ 6fa: cc 24 eor r12, r12\r
+ 6fc: dd 24 eor r13, r13\r
+ 6fe: 57 01 movw r10, r14\r
+ 700: 7e 01 movw r14, r28\r
+ 702: 08 94 sec\r
+ 704: e1 1c adc r14, r1\r
+ 706: f1 1c adc r15, r1\r
+ 708: 07 c0 rjmp .+14 ; 0x718 <ProcessConfigurationDescriptor+0x74>\r
+ {\r
+ case HOST_GETCONFIG_Successful:\r
+ break;\r
+ case HOST_GETCONFIG_InvalidData:\r
+ return InvalidConfigDataReturned;\r
+ 70a: 83 e0 ldi r24, 0x03 ; 3\r
+ 70c: 4f c0 rjmp .+158 ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+ case HOST_GETCONFIG_BuffOverflow:\r
+ return DescriptorTooLarge;\r
+ default:\r
+ return ControlError;\r
+ 70e: 81 e0 ldi r24, 0x01 ; 1\r
+ 710: 4d c0 rjmp .+154 ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;\r
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;\r
+\r
+ /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+ 712: 9c 01 movw r18, r24\r
+ 714: 03 2f mov r16, r19\r
+ 716: 18 2f mov r17, r24\r
+ return ControlError;\r
+ }\r
+\r
+ while (!(DataINEndpoint))\r
+ {\r
+ if (!(AudioControlInterface) ||\r
+ 718: c1 14 cp r12, r1\r
+ 71a: d1 04 cpc r13, r1\r
+ 71c: 41 f0 breq .+16 ; 0x72e <ProcessConfigurationDescriptor+0x8a>\r
+ USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ 71e: c5 01 movw r24, r10\r
+ 720: b7 01 movw r22, r14\r
+ 722: 41 e4 ldi r20, 0x41 ; 65\r
+ 724: 53 e0 ldi r21, 0x03 ; 3\r
+ 726: 40 d4 rcall .+2176 ; 0xfa8 <USB_GetNextDescriptorComp>\r
+ return ControlError;\r
+ }\r
+\r
+ while (!(DataINEndpoint))\r
+ {\r
+ if (!(AudioControlInterface) ||\r
+ 728: 88 23 and r24, r24\r
+ 72a: 51 f4 brne .+20 ; 0x740 <ProcessConfigurationDescriptor+0x9c>\r
+ 72c: 1c c0 rjmp .+56 ; 0x766 <ProcessConfigurationDescriptor+0xc2>\r
+ USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
+ {\r
+ if (!(AudioControlInterface))\r
+ {\r
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ 72e: c5 01 movw r24, r10\r
+ 730: b7 01 movw r22, r14\r
+ 732: 4f e1 ldi r20, 0x1F ; 31\r
+ 734: 53 e0 ldi r21, 0x03 ; 3\r
+ 736: 38 d4 rcall .+2160 ; 0xfa8 <USB_GetNextDescriptorComp>\r
+ 738: 88 23 and r24, r24\r
+ 73a: b9 f5 brne .+110 ; 0x7aa <ProcessConfigurationDescriptor+0x106>\r
+ /* Descriptor not found, error out */\r
+ return NoCompatibleInterfaceFound;\r
+ }\r
+\r
+ /* Save the interface in case we need to refer back to it later */\r
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); \r
+ 73c: c9 80 ldd r12, Y+1 ; 0x01\r
+ 73e: da 80 ldd r13, Y+2 ; 0x02\r
+ }\r
+ \r
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ 740: c5 01 movw r24, r10\r
+ 742: b7 01 movw r22, r14\r
+ 744: 40 e3 ldi r20, 0x30 ; 48\r
+ 746: 53 e0 ldi r21, 0x03 ; 3\r
+ 748: 2f d4 rcall .+2142 ; 0xfa8 <USB_GetNextDescriptorComp>\r
+ 74a: 88 23 and r24, r24\r
+ 74c: 49 f0 breq .+18 ; 0x760 <ProcessConfigurationDescriptor+0xbc>\r
+ DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+ {\r
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ 74e: c5 01 movw r24, r10\r
+ 750: b7 01 movw r22, r14\r
+ 752: 4f e1 ldi r20, 0x1F ; 31\r
+ 754: 53 e0 ldi r21, 0x03 ; 3\r
+ 756: 28 d4 rcall .+2128 ; 0xfa8 <USB_GetNextDescriptorComp>\r
+ 758: 88 23 and r24, r24\r
+ 75a: 39 f5 brne .+78 ; 0x7aa <ProcessConfigurationDescriptor+0x106>\r
+ /* Descriptor not found, error out */\r
+ return NoCompatibleInterfaceFound;\r
+ }\r
+\r
+ /* Save the interface in case we need to refer back to it later */\r
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+ 75c: c9 80 ldd r12, Y+1 ; 0x01\r
+ 75e: da 80 ldd r13, Y+2 ; 0x02\r
+ }\r
+\r
+ /* Save the interface in case we need to refer back to it later */\r
+ AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+ 760: 09 81 ldd r16, Y+1 ; 0x01\r
+ 762: 1a 81 ldd r17, Y+2 ; 0x02\r
+\r
+ /* Skip the remainder of the loop as we have not found an endpoint yet */\r
+ continue;\r
+ 764: 35 c0 rjmp .+106 ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>\r
+ }\r
+\r
+ /* Retrieve the endpoint address from the endpoint descriptor */\r
+ USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);\r
+ 766: e9 81 ldd r30, Y+1 ; 0x01\r
+ 768: fa 81 ldd r31, Y+2 ; 0x02\r
+\r
+ /* If the endpoint is a IN type endpoint */\r
+ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
+ 76a: 82 81 ldd r24, Z+2 ; 0x02\r
+ 76c: 87 ff sbrs r24, 7\r
+ 76e: 30 c0 rjmp .+96 ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>\r
+ 770: 90 2f mov r25, r16\r
+ 772: 81 2f mov r24, r17\r
+ return DescriptorTooLarge;\r
+ default:\r
+ return ControlError;\r
+ }\r
+\r
+ while (!(DataINEndpoint))\r
+ 774: 30 97 sbiw r30, 0x00 ; 0\r
+ 776: 69 f2 breq .-102 ; 0x712 <ProcessConfigurationDescriptor+0x6e>\r
+ /* If the endpoint is a IN type endpoint */\r
+ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
+ DataINEndpoint = EndpointData;\r
+ }\r
+\r
+ StreamingInterfaceIndex = AudioStreamingInterface->InterfaceNumber;\r
+ 778: d8 01 movw r26, r16\r
+ 77a: 12 96 adiw r26, 0x02 ; 2\r
+ 77c: 8c 91 ld r24, X\r
+ 77e: 12 97 sbiw r26, 0x02 ; 2\r
+ 780: 80 93 1c 01 sts 0x011C, r24\r
+ StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;\r
+ 784: 13 96 adiw r26, 0x03 ; 3\r
+ 786: 8c 91 ld r24, X\r
+ 788: 80 93 1d 01 sts 0x011D, r24\r
+ StreamingEndpointAddress = DataINEndpoint->EndpointAddress;\r
+ 78c: 22 81 ldd r18, Z+2 ; 0x02\r
+ 78e: 20 93 1e 01 sts 0x011E, r18\r
+\r
+ /* Configure the HID data IN pipe */\r
+ Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,\r
+ 792: 04 81 ldd r16, Z+4 ; 0x04\r
+ 794: 15 81 ldd r17, Z+5 ; 0x05\r
+ 796: 81 e0 ldi r24, 0x01 ; 1\r
+ 798: 61 e0 ldi r22, 0x01 ; 1\r
+ 79a: 40 e1 ldi r20, 0x10 ; 16\r
+ 79c: 94 e0 ldi r25, 0x04 ; 4\r
+ 79e: e9 2e mov r14, r25\r
+ 7a0: 22 d2 rcall .+1092 ; 0xbe6 <Pipe_ConfigurePipe>\r
+ DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);\r
+\r
+ /* Valid data found, return success */\r
+ return SuccessfulConfigRead;\r
+ 7a2: 80 e0 ldi r24, 0x00 ; 0\r
+ 7a4: 03 c0 rjmp .+6 ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+ case HOST_GETCONFIG_Successful:\r
+ break;\r
+ case HOST_GETCONFIG_InvalidData:\r
+ return InvalidConfigDataReturned;\r
+ case HOST_GETCONFIG_BuffOverflow:\r
+ return DescriptorTooLarge;\r
+ 7a6: 82 e0 ldi r24, 0x02 ; 2\r
+ 7a8: 01 c0 rjmp .+2 ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+ {\r
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+ DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+ {\r
+ /* Descriptor not found, error out */\r
+ return NoCompatibleInterfaceFound;\r
+ 7aa: 84 e0 ldi r24, 0x04 ; 4\r
+ Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,\r
+ DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);\r
+\r
+ /* Valid data found, return success */\r
+ return SuccessfulConfigRead;\r
+}\r
+ 7ac: cc 5f subi r28, 0xFC ; 252\r
+ 7ae: dd 4f sbci r29, 0xFD ; 253\r
+ 7b0: 0f b6 in r0, 0x3f ; 63\r
+ 7b2: f8 94 cli\r
+ 7b4: de bf out 0x3e, r29 ; 62\r
+ 7b6: 0f be out 0x3f, r0 ; 63\r
+ 7b8: cd bf out 0x3d, r28 ; 61\r
+ 7ba: cf 91 pop r28\r
+ 7bc: df 91 pop r29\r
+ 7be: 1f 91 pop r17\r
+ 7c0: 0f 91 pop r16\r
+ 7c2: ff 90 pop r15\r
+ 7c4: ef 90 pop r14\r
+ 7c6: df 90 pop r13\r
+ 7c8: cf 90 pop r12\r
+ 7ca: bf 90 pop r11\r
+ 7cc: af 90 pop r10\r
+ 7ce: 08 95 ret\r
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;\r
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;\r
+\r
+ /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+ 7d0: 90 2f mov r25, r16\r
+ 7d2: 81 2f mov r24, r17\r
+ 7d4: 9e cf rjmp .-196 ; 0x712 <ProcessConfigurationDescriptor+0x6e>\r
+\r
+000007d6 <USB_Host_ResetDevice>:\r
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+ */\r
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool USB_Host_IsBusSuspended(void)\r
+ {\r
+ return ((UHCON & (1 << SOFEN)) ? false : true);\r
+ 7d6: 80 91 9e 00 lds r24, 0x009E\r
+ 7da: 90 e0 ldi r25, 0x00 ; 0\r
+ 7dc: 81 70 andi r24, 0x01 ; 1\r
+ 7de: 90 70 andi r25, 0x00 ; 0\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHIEN &= ~(1 << DCONNE);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHIEN &= ~(1 << DDISCE);\r
+ 7e0: 20 91 a0 00 lds r18, 0x00A0\r
+ 7e4: 2d 7f andi r18, 0xFD ; 253\r
+ 7e6: 20 93 a0 00 sts 0x00A0, r18\r
+ * woken up automatically and the bus resumed after the reset has been correctly issued.\r
+ */\r
+ static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_ResetBus(void)\r
+ {\r
+ UHCON |= (1 << RESET);\r
+ 7ea: 20 91 9e 00 lds r18, 0x009E\r
+ 7ee: 22 60 ori r18, 0x02 ; 2\r
+ 7f0: 20 93 9e 00 sts 0x009E, r18\r
+ * \return Boolean \c true if no bus reset is currently being sent, \c false otherwise.\r
+ */\r
+ static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool USB_Host_IsBusResetComplete(void)\r
+ {\r
+ return ((UHCON & (1 << RESET)) ? false : true);\r
+ 7f4: 20 91 9e 00 lds r18, 0x009E\r
+ bool BusSuspended = USB_Host_IsBusSuspended();\r
+\r
+ USB_INT_Disable(USB_INT_DDISCI);\r
+\r
+ USB_Host_ResetBus();\r
+ while (!(USB_Host_IsBusResetComplete()));\r
+ 7f8: 21 fd sbrc r18, 1\r
+ 7fa: fc cf rjmp .-8 ; 0x7f4 <USB_Host_ResetDevice+0x1e>\r
+ * host and attached device may occur.\r
+ */\r
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_ResumeBus(void)\r
+ {\r
+ UHCON |= (1 << SOFEN);\r
+ 7fc: 20 91 9e 00 lds r18, 0x009E\r
+ 800: 21 60 ori r18, 0x01 ; 1\r
+ 802: 20 93 9e 00 sts 0x009E, r18\r
+ case USB_INT_RXSTPI:\r
+ return (UEIENX & (1 << RXSTPE));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHIEN & (1 << HSOFE));\r
+ 806: 20 91 a0 00 lds r18, 0x00A0\r
+ 80a: 30 e0 ldi r19, 0x00 ; 0\r
+ 80c: 20 72 andi r18, 0x20 ; 32\r
+ 80e: 30 70 andi r19, 0x00 ; 0\r
+ UEIENX &= ~(1 << RXSTPE);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHIEN &= ~(1 << HSOFE);\r
+ 810: 40 91 a0 00 lds r20, 0x00A0\r
+ 814: 4f 7d andi r20, 0xDF ; 223\r
+ 816: 40 93 a0 00 sts 0x00A0, r20\r
+ UEINTX &= ~(1 << RXSTPI);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ 81a: 40 91 9f 00 lds r20, 0x009F\r
+ 81e: 4f 7d andi r20, 0xDF ; 223\r
+ 820: 40 93 9f 00 sts 0x009F, r20\r
+ 824: 4a e0 ldi r20, 0x0A ; 10\r
+ case USB_INT_RXSTPI:\r
+ return (UEINTX & (1 << RXSTPI));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHINT & (1 << HSOFI));\r
+ 826: 50 91 9f 00 lds r21, 0x009F\r
+ /* Workaround for powerless-pull-up devices. After a USB bus reset,\r
+ all disconnection interrupts are suppressed while a USB frame is\r
+ looked for - if it is found within 10ms, the device is still\r
+ present. */\r
+\r
+ if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+ 82a: 55 ff sbrs r21, 5\r
+ 82c: 0b c0 rjmp .+22 ; 0x844 <USB_Host_ResetDevice+0x6e>\r
+ UEINTX &= ~(1 << RXSTPI);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ 82e: 40 91 9f 00 lds r20, 0x009F\r
+ 832: 4f 7d andi r20, 0xDF ; 223\r
+ 834: 40 93 9f 00 sts 0x009F, r20\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHINT &= ~(1 << DCONNI);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHINT &= ~(1 << DDISCI);\r
+ 838: 40 91 9f 00 lds r20, 0x009F\r
+ 83c: 4d 7f andi r20, 0xFD ; 253\r
+ 83e: 40 93 9f 00 sts 0x009F, r20\r
+ 842: 08 c0 rjmp .+16 ; 0x854 <USB_Host_ResetDevice+0x7e>\r
+ #else\r
+ //round up by default\r
+ __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));\r
+ #endif\r
+\r
+ __builtin_avr_delay_cycles(__ticks_dc);\r
+ 844: ef ec ldi r30, 0xCF ; 207\r
+ 846: f7 e0 ldi r31, 0x07 ; 7\r
+ 848: 31 97 sbiw r30, 0x01 ; 1\r
+ 84a: f1 f7 brne .-4 ; 0x848 <USB_Host_ResetDevice+0x72>\r
+ 84c: 00 c0 rjmp .+0 ; 0x84e <USB_Host_ResetDevice+0x78>\r
+ 84e: 00 00 nop\r
+ 850: 41 50 subi r20, 0x01 ; 1\r
+ bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);\r
+\r
+ USB_INT_Disable(USB_INT_HSOFI);\r
+ USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+ for (uint8_t MSRem = 10; MSRem != 0; MSRem--)\r
+ 852: 49 f7 brne .-46 ; 0x826 <USB_Host_ResetDevice+0x50>\r
+ }\r
+\r
+ Delay_MS(1);\r
+ }\r
+\r
+ if (HSOFIEnabled)\r
+ 854: 21 15 cp r18, r1\r
+ 856: 31 05 cpc r19, r1\r
+ 858: 29 f0 breq .+10 ; 0x864 <USB_Host_ResetDevice+0x8e>\r
+ UEIENX |= (1 << RXSTPE);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHIEN |= (1 << HSOFE);\r
+ 85a: 20 91 a0 00 lds r18, 0x00A0\r
+ 85e: 20 62 ori r18, 0x20 ; 32\r
+ 860: 20 93 a0 00 sts 0x00A0, r18\r
+ USB_INT_Enable(USB_INT_HSOFI);\r
+\r
+ if (BusSuspended)\r
+ 864: 00 97 sbiw r24, 0x00 ; 0\r
+ 866: 29 f4 brne .+10 ; 0x872 <USB_Host_ResetDevice+0x9c>\r
+ * messages to the device.\r
+ */\r
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_SuspendBus(void)\r
+ {\r
+ UHCON &= ~(1 << SOFEN);\r
+ 868: 80 91 9e 00 lds r24, 0x009E\r
+ 86c: 8e 7f andi r24, 0xFE ; 254\r
+ 86e: 80 93 9e 00 sts 0x009E, r24\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHIEN |= (1 << DCONNE);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHIEN |= (1 << DDISCE);\r
+ 872: 80 91 a0 00 lds r24, 0x00A0\r
+ 876: 82 60 ori r24, 0x02 ; 2\r
+ 878: 80 93 a0 00 sts 0x00A0, r24\r
+ USB_Host_SuspendBus();\r
+\r
+ USB_INT_Enable(USB_INT_DDISCI);\r
+}\r
+ 87c: 08 95 ret\r
+\r
+0000087e <USB_Host_WaitMS>:\r
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+ */\r
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool USB_Host_IsBusSuspended(void)\r
+ {\r
+ return ((UHCON & (1 << SOFEN)) ? false : true);\r
+ 87e: 40 91 9e 00 lds r20, 0x009E\r
+ 882: 50 e0 ldi r21, 0x00 ; 0\r
+ 884: 41 70 andi r20, 0x01 ; 1\r
+ 886: 50 70 andi r21, 0x00 ; 0\r
+ case USB_INT_RXSTPI:\r
+ return (UEIENX & (1 << RXSTPE));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHIEN & (1 << HSOFE));\r
+ 888: 20 91 a0 00 lds r18, 0x00A0\r
+ 88c: 30 e0 ldi r19, 0x00 ; 0\r
+ 88e: 20 72 andi r18, 0x20 ; 32\r
+ 890: 30 70 andi r19, 0x00 ; 0\r
+ UEIENX &= ~(1 << RXSTPE);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHIEN &= ~(1 << HSOFE);\r
+ 892: 90 91 a0 00 lds r25, 0x00A0\r
+ 896: 9f 7d andi r25, 0xDF ; 223\r
+ 898: 90 93 a0 00 sts 0x00A0, r25\r
+ UEINTX &= ~(1 << RXSTPI);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ 89c: 90 91 9f 00 lds r25, 0x009F\r
+ 8a0: 9f 7d andi r25, 0xDF ; 223\r
+ 8a2: 90 93 9f 00 sts 0x009F, r25\r
+ * host and attached device may occur.\r
+ */\r
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_ResumeBus(void)\r
+ {\r
+ UHCON |= (1 << SOFEN);\r
+ 8a6: 90 91 9e 00 lds r25, 0x009E\r
+ 8aa: 91 60 ori r25, 0x01 ; 1\r
+ 8ac: 90 93 9e 00 sts 0x009E, r25\r
+ USB_INT_Disable(USB_INT_HSOFI);\r
+ USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+ USB_Host_ResumeBus();\r
+\r
+ while (MS)\r
+ 8b0: 26 c0 rjmp .+76 ; 0x8fe <USB_Host_WaitMS+0x80>\r
+ case USB_INT_RXSTPI:\r
+ return (UEINTX & (1 << RXSTPI));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHINT & (1 << HSOFI));\r
+ 8b2: 90 91 9f 00 lds r25, 0x009F\r
+ {\r
+ if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+ 8b6: 95 ff sbrs r25, 5\r
+ 8b8: 06 c0 rjmp .+12 ; 0x8c6 <USB_Host_WaitMS+0x48>\r
+ UEINTX &= ~(1 << RXSTPI);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ 8ba: 90 91 9f 00 lds r25, 0x009F\r
+ 8be: 9f 7d andi r25, 0xDF ; 223\r
+ 8c0: 90 93 9f 00 sts 0x009F, r25\r
+ {\r
+ USB_INT_Clear(USB_INT_HSOFI);\r
+ MS--;\r
+ 8c4: 81 50 subi r24, 0x01 ; 1\r
+ }\r
+\r
+ if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))\r
+ 8c6: 90 91 2b 01 lds r25, 0x012B\r
+ 8ca: 92 30 cpi r25, 0x02 ; 2\r
+ 8cc: d9 f0 breq .+54 ; 0x904 <USB_Host_WaitMS+0x86>\r
+ * \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsError(void)\r
+ {\r
+ return ((UPINTX & (1 << PERRI)) ? true : false);\r
+ 8ce: 90 91 a6 00 lds r25, 0x00A6\r
+ ErrorCode = HOST_WAITERROR_DeviceDisconnect;\r
+\r
+ break;\r
+ }\r
+\r
+ if (Pipe_IsError() == true)\r
+ 8d2: 94 ff sbrs r25, 4\r
+ 8d4: 09 c0 rjmp .+18 ; 0x8e8 <USB_Host_WaitMS+0x6a>\r
+\r
+ /** Clears the error flags for the currently selected pipe. */\r
+ static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearError(void)\r
+ {\r
+ UPERRX = 0;\r
+ 8d6: 10 92 f5 00 sts 0x00F5, r1\r
+ UPINTX &= ~(1 << PERRI);\r
+ 8da: 80 91 a6 00 lds r24, 0x00A6\r
+ 8de: 8f 7e andi r24, 0xEF ; 239\r
+ 8e0: 80 93 a6 00 sts 0x00A6, r24\r
+ {\r
+ Pipe_ClearError();\r
+ ErrorCode = HOST_WAITERROR_PipeError;\r
+ 8e4: 82 e0 ldi r24, 0x02 ; 2\r
+\r
+ break;\r
+ 8e6: 0f c0 rjmp .+30 ; 0x906 <USB_Host_WaitMS+0x88>\r
+ * \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsStalled(void)\r
+ {\r
+ return ((UPINTX & (1 << RXSTALLI)) ? true : false);\r
+ 8e8: 90 91 a6 00 lds r25, 0x00A6\r
+ }\r
+\r
+ if (Pipe_IsStalled() == true)\r
+ 8ec: 91 ff sbrs r25, 1\r
+ 8ee: 07 c0 rjmp .+14 ; 0x8fe <USB_Host_WaitMS+0x80>\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearStall(void)\r
+ {\r
+ UPINTX &= ~(1 << RXSTALLI);\r
+ 8f0: 80 91 a6 00 lds r24, 0x00A6\r
+ 8f4: 8d 7f andi r24, 0xFD ; 253\r
+ 8f6: 80 93 a6 00 sts 0x00A6, r24\r
+ {\r
+ Pipe_ClearStall();\r
+ ErrorCode = HOST_WAITERROR_SetupStalled;\r
+ 8fa: 83 e0 ldi r24, 0x03 ; 3\r
+\r
+ break;\r
+ 8fc: 04 c0 rjmp .+8 ; 0x906 <USB_Host_WaitMS+0x88>\r
+ USB_INT_Disable(USB_INT_HSOFI);\r
+ USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+ USB_Host_ResumeBus();\r
+\r
+ while (MS)\r
+ 8fe: 88 23 and r24, r24\r
+ 900: c1 f6 brne .-80 ; 0x8b2 <USB_Host_WaitMS+0x34>\r
+ 902: 01 c0 rjmp .+2 ; 0x906 <USB_Host_WaitMS+0x88>\r
+ MS--;\r
+ }\r
+\r
+ if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))\r
+ {\r
+ ErrorCode = HOST_WAITERROR_DeviceDisconnect;\r
+ 904: 81 e0 ldi r24, 0x01 ; 1\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (BusSuspended)\r
+ 906: 41 15 cp r20, r1\r
+ 908: 51 05 cpc r21, r1\r
+ 90a: 29 f4 brne .+10 ; 0x916 <USB_Host_WaitMS+0x98>\r
+ * messages to the device.\r
+ */\r
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_SuspendBus(void)\r
+ {\r
+ UHCON &= ~(1 << SOFEN);\r
+ 90c: 90 91 9e 00 lds r25, 0x009E\r
+ 910: 9e 7f andi r25, 0xFE ; 254\r
+ 912: 90 93 9e 00 sts 0x009E, r25\r
+ USB_Host_SuspendBus();\r
+\r
+ if (HSOFIEnabled)\r
+ 916: 21 15 cp r18, r1\r
+ 918: 31 05 cpc r19, r1\r
+ 91a: 29 f0 breq .+10 ; 0x926 <USB_Host_WaitMS+0xa8>\r
+ UEIENX |= (1 << RXSTPE);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHIEN |= (1 << HSOFE);\r
+ 91c: 90 91 a0 00 lds r25, 0x00A0\r
+ 920: 90 62 ori r25, 0x20 ; 32\r
+ 922: 90 93 a0 00 sts 0x00A0, r25\r
+ USB_INT_Enable(USB_INT_HSOFI);\r
+\r
+ return ErrorCode;\r
+}\r
+ 926: 08 95 ret\r
+\r
+00000928 <USB_Host_ProcessNextHostState>:\r
+\r
+#define __INCLUDE_FROM_HOST_C\r
+#include "../Host.h"\r
+\r
+void USB_Host_ProcessNextHostState(void)\r
+{\r
+ 928: ef 92 push r14\r
+ 92a: 0f 93 push r16\r
+ 92c: 1f 93 push r17\r
+ 92e: df 93 push r29\r
+ 930: cf 93 push r28\r
+ 932: cd b7 in r28, 0x3d ; 61\r
+ 934: de b7 in r29, 0x3e ; 62\r
+ 936: 28 97 sbiw r28, 0x08 ; 8\r
+ 938: 0f b6 in r0, 0x3f ; 63\r
+ 93a: f8 94 cli\r
+ 93c: de bf out 0x3e, r29 ; 62\r
+ 93e: 0f be out 0x3f, r0 ; 63\r
+ 940: cd bf out 0x3d, r28 ; 61\r
+ uint8_t SubErrorCode = HOST_ENUMERROR_NoError;\r
+\r
+ static uint16_t WaitMSRemaining;\r
+ static uint8_t PostWaitState;\r
+\r
+ switch (USB_HostState)\r
+ 942: 80 91 2b 01 lds r24, 0x012B\r
+ 946: 86 30 cpi r24, 0x06 ; 6\r
+ 948: 09 f4 brne .+2 ; 0x94c <USB_Host_ProcessNextHostState+0x24>\r
+ 94a: 99 c0 rjmp .+306 ; 0xa7e <USB_Host_ProcessNextHostState+0x156>\r
+ 94c: 87 30 cpi r24, 0x07 ; 7\r
+ 94e: 70 f4 brcc .+28 ; 0x96c <USB_Host_ProcessNextHostState+0x44>\r
+ 950: 83 30 cpi r24, 0x03 ; 3\r
+ 952: c9 f1 breq .+114 ; 0x9c6 <USB_Host_ProcessNextHostState+0x9e>\r
+ 954: 84 30 cpi r24, 0x04 ; 4\r
+ 956: 20 f4 brcc .+8 ; 0x960 <USB_Host_ProcessNextHostState+0x38>\r
+ 958: 81 30 cpi r24, 0x01 ; 1\r
+ 95a: 09 f0 breq .+2 ; 0x95e <USB_Host_ProcessNextHostState+0x36>\r
+ 95c: 0b c1 rjmp .+534 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ 95e: 13 c0 rjmp .+38 ; 0x986 <USB_Host_ProcessNextHostState+0x5e>\r
+ 960: 84 30 cpi r24, 0x04 ; 4\r
+ 962: c9 f1 breq .+114 ; 0x9d6 <USB_Host_ProcessNextHostState+0xae>\r
+ 964: 85 30 cpi r24, 0x05 ; 5\r
+ 966: 09 f0 breq .+2 ; 0x96a <USB_Host_ProcessNextHostState+0x42>\r
+ 968: 05 c1 rjmp .+522 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ 96a: 60 c0 rjmp .+192 ; 0xa2c <USB_Host_ProcessNextHostState+0x104>\r
+ 96c: 88 30 cpi r24, 0x08 ; 8\r
+ 96e: 09 f4 brne .+2 ; 0x972 <USB_Host_ProcessNextHostState+0x4a>\r
+ 970: a0 c0 rjmp .+320 ; 0xab2 <USB_Host_ProcessNextHostState+0x18a>\r
+ 972: 88 30 cpi r24, 0x08 ; 8\r
+ 974: 08 f4 brcc .+2 ; 0x978 <USB_Host_ProcessNextHostState+0x50>\r
+ 976: 8f c0 rjmp .+286 ; 0xa96 <USB_Host_ProcessNextHostState+0x16e>\r
+ 978: 89 30 cpi r24, 0x09 ; 9\r
+ 97a: 09 f4 brne .+2 ; 0x97e <USB_Host_ProcessNextHostState+0x56>\r
+ 97c: b9 c0 rjmp .+370 ; 0xaf0 <USB_Host_ProcessNextHostState+0x1c8>\r
+ 97e: 8a 30 cpi r24, 0x0A ; 10\r
+ 980: 09 f0 breq .+2 ; 0x984 <USB_Host_ProcessNextHostState+0x5c>\r
+ 982: f8 c0 rjmp .+496 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ 984: de c0 rjmp .+444 ; 0xb42 <USB_Host_ProcessNextHostState+0x21a>\r
+ {\r
+ case HOST_STATE_WaitForDevice:\r
+ if (WaitMSRemaining)\r
+ 986: 00 91 20 01 lds r16, 0x0120\r
+ 98a: 10 91 21 01 lds r17, 0x0121\r
+ 98e: 01 15 cp r16, r1\r
+ 990: 11 05 cpc r17, r1\r
+ 992: 09 f4 brne .+2 ; 0x996 <USB_Host_ProcessNextHostState+0x6e>\r
+ 994: ef c0 rjmp .+478 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ {\r
+ if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+ 996: 81 e0 ldi r24, 0x01 ; 1\r
+ 998: 72 df rcall .-284 ; 0x87e <USB_Host_WaitMS>\r
+ 99a: 68 2f mov r22, r24\r
+ 99c: 88 23 and r24, r24\r
+ 99e: 31 f0 breq .+12 ; 0x9ac <USB_Host_ProcessNextHostState+0x84>\r
+ {\r
+ USB_HostState = PostWaitState;\r
+ 9a0: 80 91 1f 01 lds r24, 0x011F\r
+ 9a4: 80 93 2b 01 sts 0x012B, r24\r
+ ErrorCode = HOST_ENUMERROR_WaitStage;\r
+ 9a8: 81 e0 ldi r24, 0x01 ; 1\r
+ break;\r
+ 9aa: e0 c0 rjmp .+448 ; 0xb6c <USB_Host_ProcessNextHostState+0x244>\r
+ }\r
+\r
+ if (!(--WaitMSRemaining))\r
+ 9ac: 01 50 subi r16, 0x01 ; 1\r
+ 9ae: 10 40 sbci r17, 0x00 ; 0\r
+ 9b0: 10 93 21 01 sts 0x0121, r17\r
+ 9b4: 00 93 20 01 sts 0x0120, r16\r
+ 9b8: 01 15 cp r16, r1\r
+ 9ba: 11 05 cpc r17, r1\r
+ 9bc: 09 f0 breq .+2 ; 0x9c0 <USB_Host_ProcessNextHostState+0x98>\r
+ 9be: da c0 rjmp .+436 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ USB_HostState = PostWaitState;\r
+ 9c0: 80 91 1f 01 lds r24, 0x011F\r
+ 9c4: c3 c0 rjmp .+390 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+ }\r
+\r
+ break;\r
+ case HOST_STATE_Powered:\r
+ WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS;\r
+ 9c6: 88 ee ldi r24, 0xE8 ; 232\r
+ 9c8: 93 e0 ldi r25, 0x03 ; 3\r
+ 9ca: 90 93 21 01 sts 0x0121, r25\r
+ 9ce: 80 93 20 01 sts 0x0120, r24\r
+\r
+ USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle;\r
+ 9d2: 84 e0 ldi r24, 0x04 ; 4\r
+ 9d4: bb c0 rjmp .+374 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+ break;\r
+ case HOST_STATE_Powered_WaitForDeviceSettle:\r
+ if (WaitMSRemaining--)\r
+ 9d6: 80 91 20 01 lds r24, 0x0120\r
+ 9da: 90 91 21 01 lds r25, 0x0121\r
+ 9de: 9c 01 movw r18, r24\r
+ 9e0: 21 50 subi r18, 0x01 ; 1\r
+ 9e2: 30 40 sbci r19, 0x00 ; 0\r
+ 9e4: 30 93 21 01 sts 0x0121, r19\r
+ 9e8: 20 93 20 01 sts 0x0120, r18\r
+ 9ec: 00 97 sbiw r24, 0x00 ; 0\r
+ 9ee: 39 f0 breq .+14 ; 0x9fe <USB_Host_ProcessNextHostState+0xd6>\r
+ 9f0: 8f ec ldi r24, 0xCF ; 207\r
+ 9f2: 97 e0 ldi r25, 0x07 ; 7\r
+ 9f4: 01 97 sbiw r24, 0x01 ; 1\r
+ 9f6: f1 f7 brne .-4 ; 0x9f4 <USB_Host_ProcessNextHostState+0xcc>\r
+ 9f8: 00 c0 rjmp .+0 ; 0x9fa <USB_Host_ProcessNextHostState+0xd2>\r
+ 9fa: 00 00 nop\r
+ 9fc: bb c0 rjmp .+374 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Manual_Off(void)\r
+ {\r
+ PORTE &= ~(1 << 7);\r
+ 9fe: 77 98 cbi 0x0e, 7 ; 14\r
+\r
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_OTGPAD_On(void)\r
+ {\r
+ USBCON |= (1 << OTGPADE);\r
+ a00: 80 91 d8 00 lds r24, 0x00D8\r
+ a04: 80 61 ori r24, 0x10 ; 16\r
+ a06: 80 93 d8 00 sts 0x00D8, r24\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Auto_Enable(void)\r
+ {\r
+ OTGCON &= ~(1 << VBUSHWC);\r
+ a0a: 80 91 dd 00 lds r24, 0x00DD\r
+ a0e: 8b 7f andi r24, 0xFB ; 251\r
+ a10: 80 93 dd 00 sts 0x00DD, r24\r
+ UHWCON |= (1 << UVCONE);\r
+ a14: 80 91 d7 00 lds r24, 0x00D7\r
+ a18: 80 61 ori r24, 0x10 ; 16\r
+ a1a: 80 93 d7 00 sts 0x00D7, r24\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Auto_On(void)\r
+ {\r
+ OTGCON |= (1 << VBUSREQ);\r
+ a1e: 80 91 dd 00 lds r24, 0x00DD\r
+ a22: 82 60 ori r24, 0x02 ; 2\r
+ a24: 80 93 dd 00 sts 0x00DD, r24\r
+\r
+ USB_OTGPAD_On();\r
+ USB_Host_VBUS_Auto_Enable();\r
+ USB_Host_VBUS_Auto_On();\r
+\r
+ USB_HostState = HOST_STATE_Powered_WaitForConnect;\r
+ a28: 85 e0 ldi r24, 0x05 ; 5\r
+ a2a: 90 c0 rjmp .+288 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHINT & (1 << HSOFI));\r
+ case USB_INT_DCONNI:\r
+ return (UHINT & (1 << DCONNI));\r
+ a2c: 80 91 9f 00 lds r24, 0x009F\r
+ }\r
+\r
+ break;\r
+ case HOST_STATE_Powered_WaitForConnect:\r
+ if (USB_INT_HasOccurred(USB_INT_DCONNI))\r
+ a30: 80 ff sbrs r24, 0\r
+ a32: a0 c0 rjmp .+320 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHINT &= ~(1 << DCONNI);\r
+ a34: 80 91 9f 00 lds r24, 0x009F\r
+ a38: 8e 7f andi r24, 0xFE ; 254\r
+ a3a: 80 93 9f 00 sts 0x009F, r24\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHINT &= ~(1 << DDISCI);\r
+ a3e: 80 91 9f 00 lds r24, 0x009F\r
+ a42: 8d 7f andi r24, 0xFD ; 253\r
+ a44: 80 93 9f 00 sts 0x009F, r24\r
+ break;\r
+ case USB_INT_BCERRI:\r
+ OTGINT &= ~(1 << BCERRI);\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGINT &= ~(1 << VBERRI);\r
+ a48: 80 91 df 00 lds r24, 0x00DF\r
+ a4c: 8d 7f andi r24, 0xFD ; 253\r
+ a4e: 80 93 df 00 sts 0x00DF, r24\r
+ break;\r
+ case USB_INT_BCERRI:\r
+ OTGIEN |= (1 << BCERRE);\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGIEN |= (1 << VBERRE);\r
+ a52: 80 91 de 00 lds r24, 0x00DE\r
+ a56: 82 60 ori r24, 0x02 ; 2\r
+ a58: 80 93 de 00 sts 0x00DE, r24\r
+ * host and attached device may occur.\r
+ */\r
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_ResumeBus(void)\r
+ {\r
+ UHCON |= (1 << SOFEN);\r
+ a5c: 80 91 9e 00 lds r24, 0x009E\r
+ a60: 81 60 ori r24, 0x01 ; 1\r
+ a62: 80 93 9e 00 sts 0x009E, r24\r
+\r
+ USB_INT_Clear(USB_INT_VBERRI);\r
+ USB_INT_Enable(USB_INT_VBERRI);\r
+\r
+ USB_Host_ResumeBus();\r
+ Pipe_ClearPipes();\r
+ a66: 26 d1 rcall .+588 ; 0xcb4 <Pipe_ClearPipes>\r
+\r
+ HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset);\r
+ a68: 81 e0 ldi r24, 0x01 ; 1\r
+ a6a: 80 93 2b 01 sts 0x012B, r24\r
+ a6e: 84 e6 ldi r24, 0x64 ; 100\r
+ a70: 90 e0 ldi r25, 0x00 ; 0\r
+ a72: 90 93 21 01 sts 0x0121, r25\r
+ a76: 80 93 20 01 sts 0x0120, r24\r
+ a7a: 86 e0 ldi r24, 0x06 ; 6\r
+ a7c: 5f c0 rjmp .+190 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+ }\r
+\r
+ break;\r
+ case HOST_STATE_Powered_DoReset:\r
+ USB_Host_ResetDevice();\r
+ a7e: ab de rcall .-682 ; 0x7d6 <USB_Host_ResetDevice>\r
+\r
+ HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe);\r
+ a80: 81 e0 ldi r24, 0x01 ; 1\r
+ a82: 80 93 2b 01 sts 0x012B, r24\r
+ a86: 88 ec ldi r24, 0xC8 ; 200\r
+ a88: 90 e0 ldi r25, 0x00 ; 0\r
+ a8a: 90 93 21 01 sts 0x0121, r25\r
+ a8e: 80 93 20 01 sts 0x0120, r24\r
+ a92: 87 e0 ldi r24, 0x07 ; 7\r
+ a94: 53 c0 rjmp .+166 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+ break;\r
+ case HOST_STATE_Powered_ConfigPipe:\r
+ Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
+ a96: 80 e0 ldi r24, 0x00 ; 0\r
+ a98: 60 e0 ldi r22, 0x00 ; 0\r
+ a9a: 40 e0 ldi r20, 0x00 ; 0\r
+ a9c: 20 e0 ldi r18, 0x00 ; 0\r
+ a9e: 00 e4 ldi r16, 0x40 ; 64\r
+ aa0: 10 e0 ldi r17, 0x00 ; 0\r
+ aa2: ee 24 eor r14, r14\r
+ aa4: a0 d0 rcall .+320 ; 0xbe6 <Pipe_ConfigurePipe>\r
+ * \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsConfigured(void)\r
+ {\r
+ return ((UPSTAX & (1 << CFGOK)) ? true : false);\r
+ aa6: 80 91 ac 00 lds r24, 0x00AC\r
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+ PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE);\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ aaa: 87 ff sbrs r24, 7\r
+ aac: 5b c0 rjmp .+182 ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>\r
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;\r
+ SubErrorCode = 0;\r
+ break;\r
+ }\r
+\r
+ USB_HostState = HOST_STATE_Default;\r
+ aae: 88 e0 ldi r24, 0x08 ; 8\r
+ ab0: 4d c0 rjmp .+154 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+ break;\r
+ case HOST_STATE_Default:\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ ab2: a3 e2 ldi r26, 0x23 ; 35\r
+ ab4: b1 e0 ldi r27, 0x01 ; 1\r
+ ab6: e3 e1 ldi r30, 0x13 ; 19\r
+ ab8: f1 e0 ldi r31, 0x01 ; 1\r
+ aba: 88 e0 ldi r24, 0x08 ; 8\r
+ abc: 01 90 ld r0, Z+\r
+ abe: 0d 92 st X+, r0\r
+ ac0: 81 50 subi r24, 0x01 ; 1\r
+ ac2: e1 f7 brne .-8 ; 0xabc <USB_Host_ProcessNextHostState+0x194>\r
+ .wLength = 8,\r
+ };\r
+\r
+ uint8_t DataBuffer[8];\r
+\r
+ if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful)\r
+ ac4: ce 01 movw r24, r28\r
+ ac6: 01 96 adiw r24, 0x01 ; 1\r
+ ac8: dc d2 rcall .+1464 ; 0x1082 <USB_Host_SendControlRequest>\r
+ aca: 68 2f mov r22, r24\r
+ acc: 88 23 and r24, r24\r
+ ace: 09 f0 breq .+2 ; 0xad2 <USB_Host_ProcessNextHostState+0x1aa>\r
+ ad0: 4c c0 rjmp .+152 ; 0xb6a <USB_Host_ProcessNextHostState+0x242>\r
+ {\r
+ ErrorCode = HOST_ENUMERROR_ControlError;\r
+ break;\r
+ }\r
+\r
+ USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)];\r
+ ad2: 88 85 ldd r24, Y+8 ; 0x08\r
+ ad4: 80 93 1b 01 sts 0x011B, r24\r
+\r
+ USB_Host_ResetDevice();\r
+ ad8: 7e de rcall .-772 ; 0x7d6 <USB_Host_ResetDevice>\r
+\r
+ HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset);\r
+ ada: 81 e0 ldi r24, 0x01 ; 1\r
+ adc: 80 93 2b 01 sts 0x012B, r24\r
+ ae0: 88 ec ldi r24, 0xC8 ; 200\r
+ ae2: 90 e0 ldi r25, 0x00 ; 0\r
+ ae4: 90 93 21 01 sts 0x0121, r25\r
+ ae8: 80 93 20 01 sts 0x0120, r24\r
+ aec: 89 e0 ldi r24, 0x09 ; 9\r
+ aee: 26 c0 rjmp .+76 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+ break;\r
+ case HOST_STATE_Default_PostReset:\r
+ Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
+ af0: 00 91 1b 01 lds r16, 0x011B\r
+ af4: 80 e0 ldi r24, 0x00 ; 0\r
+ af6: 60 e0 ldi r22, 0x00 ; 0\r
+ af8: 40 e0 ldi r20, 0x00 ; 0\r
+ afa: 20 e0 ldi r18, 0x00 ; 0\r
+ afc: 10 e0 ldi r17, 0x00 ; 0\r
+ afe: ee 24 eor r14, r14\r
+ b00: 72 d0 rcall .+228 ; 0xbe6 <Pipe_ConfigurePipe>\r
+ b02: 80 91 ac 00 lds r24, 0x00AC\r
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ b06: 87 ff sbrs r24, 7\r
+ b08: 2d c0 rjmp .+90 ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>\r
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;\r
+ SubErrorCode = 0;\r
+ break;\r
+ }\r
+\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ b0a: a3 e2 ldi r26, 0x23 ; 35\r
+ b0c: b1 e0 ldi r27, 0x01 ; 1\r
+ b0e: eb e0 ldi r30, 0x0B ; 11\r
+ b10: f1 e0 ldi r31, 0x01 ; 1\r
+ b12: 88 e0 ldi r24, 0x08 ; 8\r
+ b14: 01 90 ld r0, Z+\r
+ b16: 0d 92 st X+, r0\r
+ b18: 81 50 subi r24, 0x01 ; 1\r
+ b1a: e1 f7 brne .-8 ; 0xb14 <USB_Host_ProcessNextHostState+0x1ec>\r
+ .wValue = USB_HOST_DEVICEADDRESS,\r
+ .wIndex = 0,\r
+ .wLength = 0,\r
+ };\r
+\r
+ if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
+ b1c: 80 e0 ldi r24, 0x00 ; 0\r
+ b1e: 90 e0 ldi r25, 0x00 ; 0\r
+ b20: b0 d2 rcall .+1376 ; 0x1082 <USB_Host_SendControlRequest>\r
+ b22: 68 2f mov r22, r24\r
+ b24: 88 23 and r24, r24\r
+ b26: 09 f5 brne .+66 ; 0xb6a <USB_Host_ProcessNextHostState+0x242>\r
+ {\r
+ ErrorCode = HOST_ENUMERROR_ControlError;\r
+ break;\r
+ }\r
+\r
+ HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet);\r
+ b28: 81 e0 ldi r24, 0x01 ; 1\r
+ b2a: 80 93 2b 01 sts 0x012B, r24\r
+ b2e: 84 e6 ldi r24, 0x64 ; 100\r
+ b30: 90 e0 ldi r25, 0x00 ; 0\r
+ b32: 90 93 21 01 sts 0x0121, r25\r
+ b36: 80 93 20 01 sts 0x0120, r24\r
+ b3a: 8a e0 ldi r24, 0x0A ; 10\r
+ b3c: 80 93 1f 01 sts 0x011F, r24\r
+ break;\r
+ b40: 19 c0 rjmp .+50 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ }\r
+\r
+ static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_SetDeviceAddress(const uint8_t Address)\r
+ {\r
+ UHADDR = (Address & 0x7F);\r
+ b42: 81 e0 ldi r24, 0x01 ; 1\r
+ b44: 80 93 a1 00 sts 0x00A1, r24\r
+ case HOST_STATE_Default_PostAddressSet:\r
+ USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS);\r
+\r
+ EVENT_USB_Host_DeviceEnumerationComplete();\r
+ b48: 24 dc rcall .-1976 ; 0x392 <EVENT_USB_Host_DeviceEnumerationComplete>\r
+ USB_HostState = HOST_STATE_Addressed;\r
+ b4a: 8b e0 ldi r24, 0x0B ; 11\r
+ b4c: 80 93 2b 01 sts 0x012B, r24\r
+ break;\r
+ b50: 11 c0 rjmp .+34 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ }\r
+\r
+ if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))\r
+ {\r
+ EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode);\r
+ b52: 40 dc rcall .-1920 ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Auto_Off(void)\r
+ {\r
+ OTGCON |= (1 << VBUSRQC);\r
+ b54: 80 91 dd 00 lds r24, 0x00DD\r
+ b58: 81 60 ori r24, 0x01 ; 1\r
+ b5a: 80 93 dd 00 sts 0x00DD, r24\r
+\r
+ USB_Host_VBUS_Auto_Off();\r
+\r
+ EVENT_USB_Host_DeviceUnattached();\r
+ b5e: 14 dc rcall .-2008 ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+ USB_ResetInterface();\r
+ b60: d5 d0 rcall .+426 ; 0xd0c <USB_ResetInterface>\r
+ b62: 08 c0 rjmp .+16 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ {\r
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;\r
+ SubErrorCode = 0;\r
+ b64: 60 e0 ldi r22, 0x00 ; 0\r
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ {\r
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;\r
+ b66: 84 e0 ldi r24, 0x04 ; 4\r
+ b68: 01 c0 rjmp .+2 ; 0xb6c <USB_Host_ProcessNextHostState+0x244>\r
+ .wLength = 0,\r
+ };\r
+\r
+ if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
+ {\r
+ ErrorCode = HOST_ENUMERROR_ControlError;\r
+ b6a: 83 e0 ldi r24, 0x03 ; 3\r
+ EVENT_USB_Host_DeviceEnumerationComplete();\r
+ USB_HostState = HOST_STATE_Addressed;\r
+ break;\r
+ }\r
+\r
+ if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))\r
+ b6c: 90 91 2b 01 lds r25, 0x012B\r
+ b70: 92 30 cpi r25, 0x02 ; 2\r
+ b72: 79 f7 brne .-34 ; 0xb52 <USB_Host_ProcessNextHostState+0x22a>\r
+\r
+ EVENT_USB_Host_DeviceUnattached();\r
+\r
+ USB_ResetInterface();\r
+ }\r
+}\r
+ b74: 28 96 adiw r28, 0x08 ; 8\r
+ b76: 0f b6 in r0, 0x3f ; 63\r
+ b78: f8 94 cli\r
+ b7a: de bf out 0x3e, r29 ; 62\r
+ b7c: 0f be out 0x3f, r0 ; 63\r
+ b7e: cd bf out 0x3d, r28 ; 61\r
+ b80: cf 91 pop r28\r
+ b82: df 91 pop r29\r
+ b84: 1f 91 pop r17\r
+ b86: 0f 91 pop r16\r
+ b88: ef 90 pop r14\r
+ b8a: 08 95 ret\r
+\r
+00000b8c <USB_Host_SetDeviceConfiguration>:\r
+ USB_INT_Enable(USB_INT_DDISCI);\r
+}\r
+\r
+uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)\r
+{\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ b8c: 10 92 23 01 sts 0x0123, r1\r
+ b90: 99 e0 ldi r25, 0x09 ; 9\r
+ b92: 90 93 24 01 sts 0x0124, r25\r
+ b96: 80 93 25 01 sts 0x0125, r24\r
+ b9a: 10 92 26 01 sts 0x0126, r1\r
+ b9e: 10 92 28 01 sts 0x0128, r1\r
+ ba2: 10 92 27 01 sts 0x0127, r1\r
+ ba6: 10 92 2a 01 sts 0x012A, r1\r
+ baa: 10 92 29 01 sts 0x0129, r1\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ bae: 10 92 a7 00 sts 0x00A7, r1\r
+ .wLength = 0,\r
+ };\r
+\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ return USB_Host_SendControlRequest(NULL);\r
+ bb2: 80 e0 ldi r24, 0x00 ; 0\r
+ bb4: 90 e0 ldi r25, 0x00 ; 0\r
+}\r
+ bb6: 65 c2 rjmp .+1226 ; 0x1082 <USB_Host_SendControlRequest>\r
+\r
+00000bb8 <USB_Host_SetInterfaceAltSetting>:\r
+}\r
+\r
+uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceNum,\r
+ const uint8_t AltSetting)\r
+{\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ bb8: e3 e2 ldi r30, 0x23 ; 35\r
+ bba: f1 e0 ldi r31, 0x01 ; 1\r
+ bbc: 91 e0 ldi r25, 0x01 ; 1\r
+ bbe: 90 93 23 01 sts 0x0123, r25\r
+ bc2: 9b e0 ldi r25, 0x0B ; 11\r
+ bc4: 90 93 24 01 sts 0x0124, r25\r
+ bc8: 60 93 25 01 sts 0x0125, r22\r
+ bcc: 13 82 std Z+3, r1 ; 0x03\r
+ bce: 80 93 27 01 sts 0x0127, r24\r
+ bd2: 15 82 std Z+5, r1 ; 0x05\r
+ bd4: 10 92 2a 01 sts 0x012A, r1\r
+ bd8: 10 92 29 01 sts 0x0129, r1\r
+ bdc: 10 92 a7 00 sts 0x00A7, r1\r
+ .wLength = 0,\r
+ };\r
+\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ return USB_Host_SendControlRequest(NULL);\r
+ be0: 80 e0 ldi r24, 0x00 ; 0\r
+ be2: 90 e0 ldi r25, 0x00 ; 0\r
+}\r
+ be4: 4e c2 rjmp .+1180 ; 0x1082 <USB_Host_SendControlRequest>\r
+\r
+00000be6 <Pipe_ConfigurePipe>:\r
+ const uint8_t Type,\r
+ const uint8_t Token,\r
+ const uint8_t EndpointNumber,\r
+ const uint16_t Size,\r
+ const uint8_t Banks)\r
+{\r
+ be6: ef 92 push r14\r
+ be8: 0f 93 push r16\r
+ bea: 1f 93 push r17\r
+ bec: 5e 2d mov r21, r14\r
+\r
+ Pipe_SelectPipe(PNum);\r
+ \r
+ if (PNum == Number)\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ bee: 62 95 swap r22\r
+ bf0: 66 0f add r22, r22\r
+ bf2: 66 0f add r22, r22\r
+ bf4: 60 7c andi r22, 0xC0 ; 192\r
+ bf6: 64 2b or r22, r20\r
+ bf8: 2f 70 andi r18, 0x0F ; 15\r
+ bfa: 62 2b or r22, r18\r
+\r
+ Pipe_SetInfiniteINRequests();\r
+\r
+ return Pipe_IsConfigured();\r
+#else \r
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ bfc: 98 2f mov r25, r24\r
+ Pipe_SelectPipe(PNum);\r
+ \r
+ if (PNum == Number)\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ bfe: 52 60 ori r21, 0x02 ; 2\r
+\r
+ Pipe_SetInfiniteINRequests();\r
+\r
+ return Pipe_IsConfigured();\r
+#else \r
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ c00: 4d c0 rjmp .+154 ; 0xc9c <Pipe_ConfigurePipe+0xb6>\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ c02: 90 93 a7 00 sts 0x00A7, r25\r
+ uint8_t UPINRQXTemp;\r
+ uint8_t UPIENXTemp;\r
+\r
+ Pipe_SelectPipe(PNum);\r
+ \r
+ if (PNum == Number)\r
+ c06: 98 17 cp r25, r24\r
+ c08: b1 f4 brne .+44 ; 0xc36 <Pipe_ConfigurePipe+0x50>\r
+ c0a: 28 e0 ldi r18, 0x08 ; 8\r
+ c0c: 30 e0 ldi r19, 0x00 ; 0\r
+ c0e: 40 e0 ldi r20, 0x00 ; 0\r
+ c10: 03 c0 rjmp .+6 ; 0xc18 <Pipe_ConfigurePipe+0x32>\r
+ uint8_t MaskVal = 0;\r
+ uint16_t CheckBytes = 8;\r
+\r
+ while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
+ {\r
+ MaskVal++;\r
+ c12: 4f 5f subi r20, 0xFF ; 255\r
+ CheckBytes <<= 1;\r
+ c14: 22 0f add r18, r18\r
+ c16: 33 1f adc r19, r19\r
+ static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)\r
+ {\r
+ uint8_t MaskVal = 0;\r
+ uint16_t CheckBytes = 8;\r
+\r
+ while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
+ c18: 20 17 cp r18, r16\r
+ c1a: 31 07 cpc r19, r17\r
+ c1c: 10 f4 brcc .+4 ; 0xc22 <Pipe_ConfigurePipe+0x3c>\r
+ c1e: 45 30 cpi r20, 0x05 ; 5\r
+ c20: c1 f7 brne .-16 ; 0xc12 <Pipe_ConfigurePipe+0x2c>\r
+ {\r
+ MaskVal++;\r
+ CheckBytes <<= 1;\r
+ }\r
+\r
+ return (MaskVal << EPSIZE0);\r
+ c22: 24 2f mov r18, r20\r
+ c24: 22 95 swap r18\r
+ c26: 20 7f andi r18, 0xF0 ; 240\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ c28: 25 2b or r18, r21\r
+\r
+ Pipe_SelectPipe(PNum);\r
+ \r
+ if (PNum == Number)\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ c2a: a6 2f mov r26, r22\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ UPCFG2XTemp = 0;\r
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));\r
+ UPINRQXTemp = 0;\r
+ UPIENXTemp = 0;\r
+ c2c: 40 e0 ldi r20, 0x00 ; 0\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ UPCFG2XTemp = 0;\r
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));\r
+ UPINRQXTemp = 0;\r
+ c2e: 70 e0 ldi r23, 0x00 ; 0\r
+ if (PNum == Number)\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ UPCFG2XTemp = 0;\r
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));\r
+ c30: e1 e2 ldi r30, 0x21 ; 33\r
+ \r
+ if (PNum == Number)\r
+ {\r
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+ UPCFG2XTemp = 0;\r
+ c32: f0 e0 ldi r31, 0x00 ; 0\r
+ c34: 0c c0 rjmp .+24 ; 0xc4e <Pipe_ConfigurePipe+0x68>\r
+ UPINRQXTemp = 0;\r
+ UPIENXTemp = 0;\r
+ }\r
+ else\r
+ {\r
+ UPCFG0XTemp = UPCFG0X;\r
+ c36: a0 91 aa 00 lds r26, 0x00AA\r
+ UPCFG1XTemp = UPCFG1X;\r
+ c3a: 20 91 ab 00 lds r18, 0x00AB\r
+ UPCFG2XTemp = UPCFG2X;\r
+ c3e: f0 91 ad 00 lds r31, 0x00AD\r
+ UPCONXTemp = UPCONX;\r
+ c42: e0 91 a9 00 lds r30, 0x00A9\r
+ UPINRQXTemp = UPINRQX;\r
+ c46: 70 91 a5 00 lds r23, 0x00A5\r
+ UPIENXTemp = UPIENX;\r
+ c4a: 40 91 ae 00 lds r20, 0x00AE\r
+\r
+ /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */\r
+ static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetInfiniteINRequests(void)\r
+ {\r
+ UPCONX |= (1 << INMODE);\r
+ c4e: 30 91 a9 00 lds r19, 0x00A9\r
+ c52: 30 62 ori r19, 0x20 ; 32\r
+ c54: 30 93 a9 00 sts 0x00A9, r19\r
+ }\r
+\r
+ Pipe_SetInfiniteINRequests();\r
+ \r
+ if (!(UPCFG1XTemp & (1 << ALLOC)))\r
+ c58: 21 ff sbrs r18, 1\r
+ c5a: 1f c0 rjmp .+62 ; 0xc9a <Pipe_ConfigurePipe+0xb4>\r
+ * from an attached device.\r
+ */\r
+ static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_DisablePipe(void)\r
+ {\r
+ UPCONX &= ~(1 << PEN);\r
+ c5c: 30 91 a9 00 lds r19, 0x00A9\r
+ c60: 3e 7f andi r19, 0xFE ; 254\r
+ c62: 30 93 a9 00 sts 0x00A9, r19\r
+ continue;\r
+ \r
+ Pipe_DisablePipe();\r
+ UPCFG1X &= (1 << ALLOC);\r
+ c66: 30 91 ab 00 lds r19, 0x00AB\r
+ c6a: 32 70 andi r19, 0x02 ; 2\r
+ c6c: 30 93 ab 00 sts 0x00AB, r19\r
+ * \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe().\r
+ */\r
+ static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_EnablePipe(void)\r
+ {\r
+ UPCONX |= (1 << PEN);\r
+ c70: 30 91 a9 00 lds r19, 0x00A9\r
+ c74: 31 60 ori r19, 0x01 ; 1\r
+ c76: 30 93 a9 00 sts 0x00A9, r19\r
+\r
+ Pipe_EnablePipe();\r
+ UPCFG0X = UPCFG0XTemp;\r
+ c7a: a0 93 aa 00 sts 0x00AA, r26\r
+ UPCFG1X = UPCFG1XTemp;\r
+ c7e: 20 93 ab 00 sts 0x00AB, r18\r
+ UPCFG2X = UPCFG2XTemp;\r
+ c82: f0 93 ad 00 sts 0x00AD, r31\r
+ UPCONX = UPCONXTemp;\r
+ c86: e0 93 a9 00 sts 0x00A9, r30\r
+ UPINRQX = UPINRQXTemp;\r
+ c8a: 70 93 a5 00 sts 0x00A5, r23\r
+ UPIENX = UPIENXTemp;\r
+ c8e: 40 93 ae 00 sts 0x00AE, r20\r
+ * \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsConfigured(void)\r
+ {\r
+ return ((UPSTAX & (1 << CFGOK)) ? true : false);\r
+ c92: 20 91 ac 00 lds r18, 0x00AC\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ c96: 27 ff sbrs r18, 7\r
+ c98: 08 c0 rjmp .+16 ; 0xcaa <Pipe_ConfigurePipe+0xc4>\r
+\r
+ Pipe_SetInfiniteINRequests();\r
+\r
+ return Pipe_IsConfigured();\r
+#else \r
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ c9a: 9f 5f subi r25, 0xFF ; 255\r
+ c9c: 97 30 cpi r25, 0x07 ; 7\r
+ c9e: 08 f4 brcc .+2 ; 0xca2 <Pipe_ConfigurePipe+0xbc>\r
+ ca0: b0 cf rjmp .-160 ; 0xc02 <Pipe_ConfigurePipe+0x1c>\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ ca2: 80 93 a7 00 sts 0x00A7, r24\r
+ if (!(Pipe_IsConfigured()))\r
+ return false; \r
+ }\r
+ \r
+ Pipe_SelectPipe(Number); \r
+ return true;\r
+ ca6: 81 e0 ldi r24, 0x01 ; 1\r
+ ca8: 01 c0 rjmp .+2 ; 0xcac <Pipe_ConfigurePipe+0xc6>\r
+ UPCONX = UPCONXTemp;\r
+ UPINRQX = UPINRQXTemp;\r
+ UPIENX = UPIENXTemp;\r
+\r
+ if (!(Pipe_IsConfigured()))\r
+ return false; \r
+ caa: 80 e0 ldi r24, 0x00 ; 0\r
+ }\r
+ \r
+ Pipe_SelectPipe(Number); \r
+ return true;\r
+#endif\r
+}\r
+ cac: 1f 91 pop r17\r
+ cae: 0f 91 pop r16\r
+ cb0: ef 90 pop r14\r
+ cb2: 08 95 ret\r
+\r
+00000cb4 <Pipe_ClearPipes>:\r
+\r
+void Pipe_ClearPipes(void)\r
+{\r
+ UPINT = 0;\r
+ cb4: 10 92 f8 00 sts 0x00F8, r1\r
+\r
+ for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ cb8: 80 e0 ldi r24, 0x00 ; 0\r
+ cba: 80 93 a7 00 sts 0x00A7, r24\r
+ {\r
+ Pipe_SelectPipe(PNum);\r
+ UPIENX = 0;\r
+ cbe: 10 92 ae 00 sts 0x00AE, r1\r
+ UPINTX = 0;\r
+ cc2: 10 92 a6 00 sts 0x00A6, r1\r
+ UPCFG1X = 0;\r
+ cc6: 10 92 ab 00 sts 0x00AB, r1\r
+ * from an attached device.\r
+ */\r
+ static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_DisablePipe(void)\r
+ {\r
+ UPCONX &= ~(1 << PEN);\r
+ cca: 90 91 a9 00 lds r25, 0x00A9\r
+ cce: 9e 7f andi r25, 0xFE ; 254\r
+ cd0: 90 93 a9 00 sts 0x00A9, r25\r
+\r
+void Pipe_ClearPipes(void)\r
+{\r
+ UPINT = 0;\r
+\r
+ for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ cd4: 8f 5f subi r24, 0xFF ; 255\r
+ cd6: 87 30 cpi r24, 0x07 ; 7\r
+ cd8: 81 f7 brne .-32 ; 0xcba <Pipe_ClearPipes+0x6>\r
+ UPIENX = 0;\r
+ UPINTX = 0;\r
+ UPCFG1X = 0;\r
+ Pipe_DisablePipe();\r
+ }\r
+}\r
+ cda: 08 95 ret\r
+\r
+00000cdc <USB_Disable>:\r
+ USB_ResetInterface();\r
+}\r
+\r
+void USB_Disable(void)\r
+{\r
+ USB_INT_DisableAllInterrupts();\r
+ cdc: 6e d0 rcall .+220 ; 0xdba <USB_INT_DisableAllInterrupts>\r
+ USB_INT_ClearAllInterrupts();\r
+ cde: 75 d0 rcall .+234 ; 0xdca <USB_INT_ClearAllInterrupts>\r
+ * enumerating the device once attached until \ref USB_Attach() is called.\r
+ */\r
+ static inline void USB_Detach(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Detach(void)\r
+ {\r
+ UDCON |= (1 << DETACH);\r
+ ce0: e0 ee ldi r30, 0xE0 ; 224\r
+ ce2: f0 e0 ldi r31, 0x00 ; 0\r
+ ce4: 80 81 ld r24, Z\r
+ ce6: 81 60 ori r24, 0x01 ; 1\r
+ ce8: 80 83 st Z, r24\r
+ }\r
+\r
+ static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Controller_Disable(void)\r
+ {\r
+ USBCON &= ~(1 << USBE);\r
+ cea: e8 ed ldi r30, 0xD8 ; 216\r
+ cec: f0 e0 ldi r31, 0x00 ; 0\r
+ cee: 80 81 ld r24, Z\r
+ cf0: 8f 77 andi r24, 0x7F ; 127\r
+ cf2: 80 83 st Z, r24\r
+ }\r
+\r
+ static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_PLL_Off(void)\r
+ {\r
+ PLLCSR = 0;\r
+ cf4: 19 bc out 0x29, r1 ; 41\r
+\r
+ static inline void USB_REG_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_REG_Off(void)\r
+ {\r
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ UHWCON &= ~(1 << UVREGE);\r
+ cf6: a7 ed ldi r26, 0xD7 ; 215\r
+ cf8: b0 e0 ldi r27, 0x00 ; 0\r
+ cfa: 8c 91 ld r24, X\r
+ cfc: 8e 7f andi r24, 0xFE ; 254\r
+ cfe: 8c 93 st X, r24\r
+ }\r
+\r
+ static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_OTGPAD_Off(void)\r
+ {\r
+ USBCON &= ~(1 << OTGPADE);\r
+ d00: 80 81 ld r24, Z\r
+ d02: 8f 7e andi r24, 0xEF ; 239\r
+ d04: 80 83 st Z, r24\r
+\r
+ #if defined(USB_CAN_BE_BOTH)\r
+ USB_CurrentMode = USB_MODE_None;\r
+ #endif\r
+\r
+ USB_IsInitialized = false;\r
+ d06: 10 92 22 01 sts 0x0122, r1\r
+}\r
+ d0a: 08 95 ret\r
+\r
+00000d0c <USB_ResetInterface>:\r
+{\r
+ #if defined(USB_CAN_BE_BOTH)\r
+ bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);\r
+ #endif\r
+\r
+ USB_INT_DisableAllInterrupts();\r
+ d0c: 56 d0 rcall .+172 ; 0xdba <USB_INT_DisableAllInterrupts>\r
+ USB_INT_ClearAllInterrupts();\r
+ d0e: 5d d0 rcall .+186 ; 0xdca <USB_INT_ClearAllInterrupts>\r
+ }\r
+\r
+ static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Controller_Reset(void)\r
+ {\r
+ const uint8_t Temp = USBCON;\r
+ d10: 80 91 d8 00 lds r24, 0x00D8\r
+\r
+ USBCON = (Temp & ~(1 << USBE));\r
+ d14: 98 2f mov r25, r24\r
+ d16: 9f 77 andi r25, 0x7F ; 127\r
+ d18: 90 93 d8 00 sts 0x00D8, r25\r
+ USBCON = (Temp | (1 << USBE));\r
+ d1c: 80 68 ori r24, 0x80 ; 128\r
+ d1e: 80 93 d8 00 sts 0x00D8, r24\r
+ }\r
+\r
+ static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_CLK_Unfreeze(void)\r
+ {\r
+ USBCON &= ~(1 << FRZCLK);\r
+ d22: 80 91 d8 00 lds r24, 0x00D8\r
+ d26: 8f 7d andi r24, 0xDF ; 223\r
+ d28: 80 93 d8 00 sts 0x00D8, r24\r
+ #endif\r
+ }\r
+ else if (USB_CurrentMode == USB_MODE_Host)\r
+ {\r
+ #if defined(USB_CAN_BE_HOST)\r
+ UHWCON &= ~(1 << UIMOD);\r
+ d2c: 80 91 d7 00 lds r24, 0x00D7\r
+ d30: 8f 77 andi r24, 0x7F ; 127\r
+ d32: 80 93 d7 00 sts 0x00D7, r24\r
+\r
+ /* Inline Functions: */\r
+ static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_PLL_On(void)\r
+ {\r
+ PLLCSR = USB_PLL_PSC;\r
+ d36: 8c e0 ldi r24, 0x0C ; 12\r
+ d38: 89 bd out 0x29, r24 ; 41\r
+ PLLCSR |= (1 << PLLE);\r
+ d3a: 89 b5 in r24, 0x29 ; 41\r
+ d3c: 82 60 ori r24, 0x02 ; 2\r
+ d3e: 89 bd out 0x29, r24 ; 41\r
+\r
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))\r
+ {\r
+ #if defined(USB_CAN_BE_HOST)\r
+ USB_PLL_On();\r
+ while (!(USB_PLL_IsReady())); \r
+ d40: 09 b4 in r0, 0x29 ; 41\r
+ d42: 00 fe sbrs r0, 0\r
+ d44: fd cf rjmp .-6 ; 0xd40 <USB_ResetInterface+0x34>\r
+#endif\r
+\r
+#if defined(USB_CAN_BE_HOST)\r
+static void USB_Init_Host(void)\r
+{\r
+ USB_HostState = HOST_STATE_Unattached;\r
+ d46: 82 e0 ldi r24, 0x02 ; 2\r
+ d48: 80 93 2b 01 sts 0x012B, r24\r
+ USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
+ d4c: 80 e4 ldi r24, 0x40 ; 64\r
+ d4e: 80 93 1b 01 sts 0x011B, r24\r
+ #if !defined(__DOXYGEN__)\r
+ /* Macros: */\r
+ static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_HostMode_On(void)\r
+ {\r
+ USBCON |= (1 << HOST);\r
+ d52: 80 91 d8 00 lds r24, 0x00D8\r
+ d56: 80 64 ori r24, 0x40 ; 64\r
+ d58: 80 93 d8 00 sts 0x00D8, r24\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Auto_Off(void)\r
+ {\r
+ OTGCON |= (1 << VBUSRQC);\r
+ d5c: 80 91 dd 00 lds r24, 0x00DD\r
+ d60: 81 60 ori r24, 0x01 ; 1\r
+ d62: 80 93 dd 00 sts 0x00DD, r24\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Manual_Enable(void)\r
+ {\r
+ OTGCON |= (1 << VBUSHWC);\r
+ d66: 80 91 dd 00 lds r24, 0x00DD\r
+ d6a: 84 60 ori r24, 0x04 ; 4\r
+ d6c: 80 93 dd 00 sts 0x00DD, r24\r
+ UHWCON &= ~(1 << UVCONE);\r
+ d70: 80 91 d7 00 lds r24, 0x00D7\r
+ d74: 8f 7e andi r24, 0xEF ; 239\r
+ d76: 80 93 d7 00 sts 0x00D7, r24\r
+\r
+ DDRE |= (1 << 7);\r
+ d7a: 6f 9a sbi 0x0d, 7 ; 13\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Manual_On(void)\r
+ {\r
+ PORTE |= (1 << 7);\r
+ d7c: 77 9a sbi 0x0e, 7 ; 14\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGIEN |= (1 << VBERRE);\r
+ break;\r
+ case USB_INT_SRPI:\r
+ OTGIEN |= (1 << SRPE); \r
+ d7e: 80 91 de 00 lds r24, 0x00DE\r
+ d82: 81 60 ori r24, 0x01 ; 1\r
+ d84: 80 93 de 00 sts 0x00DE, r24\r
+ break;\r
+ case USB_INT_RSTI:\r
+ UHIEN |= (1 << RSTE);\r
+ break;\r
+ case USB_INT_BCERRI:\r
+ OTGIEN |= (1 << BCERRE);\r
+ d88: 80 91 de 00 lds r24, 0x00DE\r
+ d8c: 84 60 ori r24, 0x04 ; 4\r
+ d8e: 80 93 de 00 sts 0x00DE, r24\r
+ * register and despite the datasheet making no mention of its requirement in host mode.\r
+ */\r
+ static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Attach(void)\r
+ {\r
+ UDCON &= ~(1 << DETACH);\r
+ d92: 80 91 e0 00 lds r24, 0x00E0\r
+ d96: 8e 7f andi r24, 0xFE ; 254\r
+ d98: 80 93 e0 00 sts 0x00E0, r24\r
+\r
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_OTGPAD_On(void)\r
+ {\r
+ USBCON |= (1 << OTGPADE);\r
+ d9c: 80 91 d8 00 lds r24, 0x00D8\r
+ da0: 80 61 ori r24, 0x10 ; 16\r
+ da2: 80 93 d8 00 sts 0x00D8, r24\r
+ }\r
+\r
+ #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))\r
+ USB_OTGPAD_On();\r
+ #endif\r
+}\r
+ da6: 08 95 ret\r
+\r
+00000da8 <USB_Init>:\r
+\r
+ static inline void USB_REG_On(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_REG_On(void)\r
+ {\r
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ UHWCON |= (1 << UVREGE);\r
+ da8: e7 ed ldi r30, 0xD7 ; 215\r
+ daa: f0 e0 ldi r31, 0x00 ; 0\r
+ dac: 80 81 ld r24, Z\r
+ dae: 81 60 ori r24, 0x01 ; 1\r
+ db0: 80 83 st Z, r24\r
+ UHWCON &= ~(1 << UIDE);\r
+ USB_CurrentMode = Mode;\r
+ }\r
+ #endif\r
+\r
+ USB_IsInitialized = true;\r
+ db2: 81 e0 ldi r24, 0x01 ; 1\r
+ db4: 80 93 22 01 sts 0x0122, r24\r
+\r
+ USB_ResetInterface();\r
+}\r
+ db8: a9 cf rjmp .-174 ; 0xd0c <USB_ResetInterface>\r
+\r
+00000dba <USB_INT_DisableAllInterrupts>:\r
+#include "../USBInterrupt.h"\r
+\r
+void USB_INT_DisableAllInterrupts(void)\r
+{\r
+ #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ USBCON &= ~((1 << VBUSTE) | (1 << IDTE));\r
+ dba: e8 ed ldi r30, 0xD8 ; 216\r
+ dbc: f0 e0 ldi r31, 0x00 ; 0\r
+ dbe: 80 81 ld r24, Z\r
+ dc0: 8c 7f andi r24, 0xFC ; 252\r
+ dc2: 80 83 st Z, r24\r
+ #if defined(USB_CAN_BE_BOTH)\r
+ OTGIEN = 0;\r
+ #endif\r
+\r
+ #if defined(USB_CAN_BE_HOST)\r
+ UHIEN = 0;\r
+ dc4: 10 92 a0 00 sts 0x00A0, r1\r
+ #endif\r
+\r
+ #if defined(USB_CAN_BE_DEVICE)\r
+ UDIEN = 0;\r
+ #endif\r
+}\r
+ dc8: 08 95 ret\r
+\r
+00000dca <USB_INT_ClearAllInterrupts>:\r
+\r
+void USB_INT_ClearAllInterrupts(void)\r
+{\r
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+ USBINT = 0;\r
+ dca: 10 92 da 00 sts 0x00DA, r1\r
+ #if defined(USB_CAN_BE_BOTH)\r
+ OTGINT = 0;\r
+ #endif\r
+\r
+ #if defined(USB_CAN_BE_HOST)\r
+ UHINT = 0;\r
+ dce: 10 92 9f 00 sts 0x009F, r1\r
+ #endif\r
+\r
+ #if defined(USB_CAN_BE_DEVICE)\r
+ UDINT = 0;\r
+ #endif\r
+}\r
+ dd2: 08 95 ret\r
+\r
+00000dd4 <__vector_10>:\r
+\r
+ISR(USB_GEN_vect, ISR_BLOCK)\r
+{\r
+ dd4: 1f 92 push r1\r
+ dd6: 0f 92 push r0\r
+ dd8: 0f b6 in r0, 0x3f ; 63\r
+ dda: 0f 92 push r0\r
+ ddc: 0b b6 in r0, 0x3b ; 59\r
+ dde: 0f 92 push r0\r
+ de0: 11 24 eor r1, r1\r
+ de2: 2f 93 push r18\r
+ de4: 3f 93 push r19\r
+ de6: 4f 93 push r20\r
+ de8: 5f 93 push r21\r
+ dea: 6f 93 push r22\r
+ dec: 7f 93 push r23\r
+ dee: 8f 93 push r24\r
+ df0: 9f 93 push r25\r
+ df2: af 93 push r26\r
+ df4: bf 93 push r27\r
+ df6: ef 93 push r30\r
+ df8: ff 93 push r31\r
+ case USB_INT_RXSTPI:\r
+ return (UEINTX & (1 << RXSTPI));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHINT & (1 << HSOFI));\r
+ dfa: 80 91 9f 00 lds r24, 0x009F\r
+ }\r
+ #endif\r
+\r
+ #if defined(USB_CAN_BE_HOST)\r
+ #if !defined(NO_SOF_EVENTS)\r
+ if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))\r
+ dfe: 85 ff sbrs r24, 5\r
+ e00: 0a c0 rjmp .+20 ; 0xe16 <__vector_10+0x42>\r
+ case USB_INT_RXSTPI:\r
+ return (UEIENX & (1 << RXSTPE));\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ return (UHIEN & (1 << HSOFE));\r
+ e02: 80 91 a0 00 lds r24, 0x00A0\r
+ e06: 85 ff sbrs r24, 5\r
+ e08: 06 c0 rjmp .+12 ; 0xe16 <__vector_10+0x42>\r
+ UEINTX &= ~(1 << RXSTPI);\r
+ break;\r
+ #endif\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ e0a: 80 91 9f 00 lds r24, 0x009F\r
+ e0e: 8f 7d andi r24, 0xDF ; 223\r
+ e10: 80 93 9f 00 sts 0x009F, r24\r
+ {\r
+ USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+ EVENT_USB_Host_StartOfFrame();\r
+ e14: 0c d1 rcall .+536 ; 0x102e <USB_Event_Stub>\r
+ case USB_INT_HSOFI:\r
+ return (UHINT & (1 << HSOFI));\r
+ case USB_INT_DCONNI:\r
+ return (UHINT & (1 << DCONNI));\r
+ case USB_INT_DDISCI:\r
+ return (UHINT & (1 << DDISCI));\r
+ e16: 80 91 9f 00 lds r24, 0x009F\r
+ }\r
+ #endif\r
+\r
+ if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))\r
+ e1a: 81 ff sbrs r24, 1\r
+ e1c: 15 c0 rjmp .+42 ; 0xe48 <__vector_10+0x74>\r
+ case USB_INT_HSOFI:\r
+ return (UHIEN & (1 << HSOFE));\r
+ case USB_INT_DCONNI:\r
+ return (UHIEN & (1 << DCONNE));\r
+ case USB_INT_DDISCI:\r
+ return (UHIEN & (1 << DDISCE));\r
+ e1e: 80 91 a0 00 lds r24, 0x00A0\r
+ e22: 81 ff sbrs r24, 1\r
+ e24: 11 c0 rjmp .+34 ; 0xe48 <__vector_10+0x74>\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHINT &= ~(1 << DCONNI);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHINT &= ~(1 << DDISCI);\r
+ e26: 80 91 9f 00 lds r24, 0x009F\r
+ e2a: 8d 7f andi r24, 0xFD ; 253\r
+ e2c: 80 93 9f 00 sts 0x009F, r24\r
+ #if defined(USB_CAN_BE_HOST)\r
+ case USB_INT_HSOFI:\r
+ UHINT &= ~(1 << HSOFI);\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHINT &= ~(1 << DCONNI);\r
+ e30: 80 91 9f 00 lds r24, 0x009F\r
+ e34: 8e 7f andi r24, 0xFE ; 254\r
+ e36: 80 93 9f 00 sts 0x009F, r24\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHIEN &= ~(1 << DCONNE);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHIEN &= ~(1 << DDISCE);\r
+ e3a: 80 91 a0 00 lds r24, 0x00A0\r
+ e3e: 8d 7f andi r24, 0xFD ; 253\r
+ e40: 80 93 a0 00 sts 0x00A0, r24\r
+ {\r
+ USB_INT_Clear(USB_INT_DDISCI);\r
+ USB_INT_Clear(USB_INT_DCONNI);\r
+ USB_INT_Disable(USB_INT_DDISCI);\r
+\r
+ EVENT_USB_Host_DeviceUnattached();\r
+ e44: a1 da rcall .-2750 ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+ USB_ResetInterface();\r
+ e46: 62 df rcall .-316 ; 0xd0c <USB_ResetInterface>\r
+ case USB_INT_RSTI:\r
+ return (UHINT & (1 << RSTI));\r
+ case USB_INT_BCERRI:\r
+ return (OTGINT & (1 << BCERRI));\r
+ case USB_INT_VBERRI:\r
+ return (OTGINT & (1 << VBERRI));\r
+ e48: 80 91 df 00 lds r24, 0x00DF\r
+ }\r
+\r
+ if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))\r
+ e4c: 81 ff sbrs r24, 1\r
+ e4e: 15 c0 rjmp .+42 ; 0xe7a <__vector_10+0xa6>\r
+ case USB_INT_RSTI:\r
+ return (UHIEN & (1 << RSTE));\r
+ case USB_INT_BCERRI:\r
+ return (OTGIEN & (1 << BCERRE));\r
+ case USB_INT_VBERRI:\r
+ return (OTGIEN & (1 << VBERRE));\r
+ e50: 80 91 de 00 lds r24, 0x00DE\r
+ e54: 81 ff sbrs r24, 1\r
+ e56: 11 c0 rjmp .+34 ; 0xe7a <__vector_10+0xa6>\r
+ break;\r
+ case USB_INT_BCERRI:\r
+ OTGINT &= ~(1 << BCERRI);\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGINT &= ~(1 << VBERRI);\r
+ e58: 80 91 df 00 lds r24, 0x00DF\r
+ e5c: 8d 7f andi r24, 0xFD ; 253\r
+ e5e: 80 93 df 00 sts 0x00DF, r24\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Manual_Off(void)\r
+ {\r
+ PORTE &= ~(1 << 7);\r
+ e62: 77 98 cbi 0x0e, 7 ; 14\r
+ }\r
+\r
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_VBUS_Auto_Off(void)\r
+ {\r
+ OTGCON |= (1 << VBUSRQC);\r
+ e64: 80 91 dd 00 lds r24, 0x00DD\r
+ e68: 81 60 ori r24, 0x01 ; 1\r
+ e6a: 80 93 dd 00 sts 0x00DD, r24\r
+ USB_INT_Clear(USB_INT_VBERRI);\r
+\r
+ USB_Host_VBUS_Manual_Off();\r
+ USB_Host_VBUS_Auto_Off();\r
+\r
+ EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip);\r
+ e6e: 80 e0 ldi r24, 0x00 ; 0\r
+ e70: 92 da rcall .-2780 ; 0x396 <EVENT_USB_Host_HostError>\r
+ EVENT_USB_Host_DeviceUnattached();\r
+ e72: 8a da rcall .-2796 ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+ USB_HostState = HOST_STATE_Unattached;\r
+ e74: 82 e0 ldi r24, 0x02 ; 2\r
+ e76: 80 93 2b 01 sts 0x012B, r24\r
+ case USB_INT_BCERRI:\r
+ return (OTGINT & (1 << BCERRI));\r
+ case USB_INT_VBERRI:\r
+ return (OTGINT & (1 << VBERRI));\r
+ case USB_INT_SRPI:\r
+ return (OTGINT & (1 << SRPI));\r
+ e7a: 80 91 df 00 lds r24, 0x00DF\r
+ }\r
+\r
+ if (USB_INT_HasOccurred(USB_INT_SRPI) && USB_INT_IsEnabled(USB_INT_SRPI))\r
+ e7e: 80 ff sbrs r24, 0\r
+ e80: 17 c0 rjmp .+46 ; 0xeb0 <__vector_10+0xdc>\r
+ case USB_INT_BCERRI:\r
+ return (OTGIEN & (1 << BCERRE));\r
+ case USB_INT_VBERRI:\r
+ return (OTGIEN & (1 << VBERRE));\r
+ case USB_INT_SRPI:\r
+ return (OTGIEN & (1 << SRPE));\r
+ e82: 80 91 de 00 lds r24, 0x00DE\r
+ e86: 80 ff sbrs r24, 0\r
+ e88: 13 c0 rjmp .+38 ; 0xeb0 <__vector_10+0xdc>\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGINT &= ~(1 << VBERRI);\r
+ break;\r
+ case USB_INT_SRPI:\r
+ OTGINT &= ~(1 << SRPI);\r
+ e8a: 80 91 df 00 lds r24, 0x00DF\r
+ e8e: 8e 7f andi r24, 0xFE ; 254\r
+ e90: 80 93 df 00 sts 0x00DF, r24\r
+ break;\r
+ case USB_INT_VBERRI:\r
+ OTGIEN &= ~(1 << VBERRE);\r
+ break;\r
+ case USB_INT_SRPI:\r
+ OTGIEN &= ~(1 << SRPE); \r
+ e94: 80 91 de 00 lds r24, 0x00DE\r
+ e98: 8e 7f andi r24, 0xFE ; 254\r
+ e9a: 80 93 de 00 sts 0x00DE, r24\r
+ {\r
+ USB_INT_Clear(USB_INT_SRPI);\r
+ USB_INT_Disable(USB_INT_SRPI);\r
+\r
+ EVENT_USB_Host_DeviceAttached();\r
+ e9e: 6f da rcall .-2850 ; 0x37e <EVENT_USB_Host_DeviceAttached>\r
+ break;\r
+ case USB_INT_DCONNI:\r
+ UHIEN |= (1 << DCONNE);\r
+ break;\r
+ case USB_INT_DDISCI:\r
+ UHIEN |= (1 << DDISCE);\r
+ ea0: 80 91 a0 00 lds r24, 0x00A0\r
+ ea4: 82 60 ori r24, 0x02 ; 2\r
+ ea6: 80 93 a0 00 sts 0x00A0, r24\r
+\r
+ USB_INT_Enable(USB_INT_DDISCI);\r
+\r
+ USB_HostState = HOST_STATE_Powered;\r
+ eaa: 83 e0 ldi r24, 0x03 ; 3\r
+ eac: 80 93 2b 01 sts 0x012B, r24\r
+ case USB_INT_DDISCI:\r
+ return (UHINT & (1 << DDISCI));\r
+ case USB_INT_RSTI:\r
+ return (UHINT & (1 << RSTI));\r
+ case USB_INT_BCERRI:\r
+ return (OTGINT & (1 << BCERRI));\r
+ eb0: 80 91 df 00 lds r24, 0x00DF\r
+ }\r
+\r
+ if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI))\r
+ eb4: 82 ff sbrs r24, 2\r
+ eb6: 0e c0 rjmp .+28 ; 0xed4 <__vector_10+0x100>\r
+ case USB_INT_DDISCI:\r
+ return (UHIEN & (1 << DDISCE));\r
+ case USB_INT_RSTI:\r
+ return (UHIEN & (1 << RSTE));\r
+ case USB_INT_BCERRI:\r
+ return (OTGIEN & (1 << BCERRE));\r
+ eb8: 80 91 de 00 lds r24, 0x00DE\r
+ ebc: 82 ff sbrs r24, 2\r
+ ebe: 0a c0 rjmp .+20 ; 0xed4 <__vector_10+0x100>\r
+ break;\r
+ case USB_INT_RSTI:\r
+ UHINT &= ~(1 << RSTI);\r
+ break;\r
+ case USB_INT_BCERRI:\r
+ OTGINT &= ~(1 << BCERRI);\r
+ ec0: 80 91 df 00 lds r24, 0x00DF\r
+ ec4: 8b 7f andi r24, 0xFB ; 251\r
+ ec6: 80 93 df 00 sts 0x00DF, r24\r
+ {\r
+ USB_INT_Clear(USB_INT_BCERRI);\r
+\r
+ EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);\r
+ eca: 82 e0 ldi r24, 0x02 ; 2\r
+ ecc: 60 e0 ldi r22, 0x00 ; 0\r
+ ece: 82 da rcall .-2812 ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>\r
+ EVENT_USB_Host_DeviceUnattached();\r
+ ed0: 5b da rcall .-2890 ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+ USB_ResetInterface();\r
+ ed2: 1c df rcall .-456 ; 0xd0c <USB_ResetInterface>\r
+ USB_ResetInterface();\r
+\r
+ EVENT_USB_UIDChange();\r
+ }\r
+ #endif\r
+}\r
+ ed4: ff 91 pop r31\r
+ ed6: ef 91 pop r30\r
+ ed8: bf 91 pop r27\r
+ eda: af 91 pop r26\r
+ edc: 9f 91 pop r25\r
+ ede: 8f 91 pop r24\r
+ ee0: 7f 91 pop r23\r
+ ee2: 6f 91 pop r22\r
+ ee4: 5f 91 pop r21\r
+ ee6: 4f 91 pop r20\r
+ ee8: 3f 91 pop r19\r
+ eea: 2f 91 pop r18\r
+ eec: 0f 90 pop r0\r
+ eee: 0b be out 0x3b, r0 ; 59\r
+ ef0: 0f 90 pop r0\r
+ ef2: 0f be out 0x3f, r0 ; 63\r
+ ef4: 0f 90 pop r0\r
+ ef6: 1f 90 pop r1\r
+ ef8: 18 95 reti\r
+\r
+00000efa <USB_Host_GetDeviceConfigDescriptor>:\r
+#if defined(USB_CAN_BE_HOST)\r
+uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber,\r
+ uint16_t* const ConfigSizePtr,\r
+ void* const BufferPtr,\r
+ const uint16_t BufferSize)\r
+{\r
+ efa: cf 92 push r12\r
+ efc: df 92 push r13\r
+ efe: ef 92 push r14\r
+ f00: ff 92 push r15\r
+ f02: 0f 93 push r16\r
+ f04: 1f 93 push r17\r
+ f06: df 93 push r29\r
+ f08: cf 93 push r28\r
+ f0a: cd b7 in r28, 0x3d ; 61\r
+ f0c: de b7 in r29, 0x3e ; 62\r
+ f0e: 29 97 sbiw r28, 0x09 ; 9\r
+ f10: 0f b6 in r0, 0x3f ; 63\r
+ f12: f8 94 cli\r
+ f14: de bf out 0x3e, r29 ; 62\r
+ f16: 0f be out 0x3f, r0 ; 63\r
+ f18: cd bf out 0x3d, r28 ; 61\r
+ f1a: 6b 01 movw r12, r22\r
+ f1c: 8a 01 movw r16, r20\r
+ f1e: 79 01 movw r14, r18\r
+ uint8_t ErrorCode;\r
+ uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
+\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ f20: 90 e8 ldi r25, 0x80 ; 128\r
+ f22: 90 93 23 01 sts 0x0123, r25\r
+ f26: 96 e0 ldi r25, 0x06 ; 6\r
+ f28: 90 93 24 01 sts 0x0124, r25\r
+ {\r
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+ .bRequest = REQ_GetDescriptor,\r
+ .wValue = ((DTYPE_Configuration << 8) | (ConfigNumber - 1)),\r
+ f2c: 90 e0 ldi r25, 0x00 ; 0\r
+ f2e: 01 97 sbiw r24, 0x01 ; 1\r
+ f30: 92 60 ori r25, 0x02 ; 2\r
+ const uint16_t BufferSize)\r
+{\r
+ uint8_t ErrorCode;\r
+ uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
+\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ f32: 90 93 26 01 sts 0x0126, r25\r
+ f36: 80 93 25 01 sts 0x0125, r24\r
+ f3a: 10 92 28 01 sts 0x0128, r1\r
+ f3e: 10 92 27 01 sts 0x0127, r1\r
+ f42: 89 e0 ldi r24, 0x09 ; 9\r
+ f44: 90 e0 ldi r25, 0x00 ; 0\r
+ f46: 90 93 2a 01 sts 0x012A, r25\r
+ f4a: 80 93 29 01 sts 0x0129, r24\r
+ f4e: 10 92 a7 00 sts 0x00A7, r1\r
+ .wLength = sizeof(USB_Descriptor_Configuration_Header_t),\r
+ };\r
+\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful)\r
+ f52: ce 01 movw r24, r28\r
+ f54: 01 96 adiw r24, 0x01 ; 1\r
+ f56: 95 d0 rcall .+298 ; 0x1082 <USB_Host_SendControlRequest>\r
+ f58: 88 23 and r24, r24\r
+ f5a: b9 f4 brne .+46 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+ return ErrorCode;\r
+\r
+ *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;\r
+ f5c: 8b 81 ldd r24, Y+3 ; 0x03\r
+ f5e: 9c 81 ldd r25, Y+4 ; 0x04\r
+ f60: f6 01 movw r30, r12\r
+ f62: 91 83 std Z+1, r25 ; 0x01\r
+ f64: 80 83 st Z, r24\r
+\r
+ if (*ConfigSizePtr > BufferSize)\r
+ f66: e8 16 cp r14, r24\r
+ f68: f9 06 cpc r15, r25\r
+ f6a: 70 f0 brcs .+28 ; 0xf88 <USB_Host_GetDeviceConfigDescriptor+0x8e>\r
+ return HOST_GETCONFIG_BuffOverflow;\r
+\r
+ USB_ControlRequest.wLength = *ConfigSizePtr;\r
+ f6c: 90 93 2a 01 sts 0x012A, r25\r
+ f70: 80 93 29 01 sts 0x0129, r24\r
+\r
+ if ((ErrorCode = USB_Host_SendControlRequest(BufferPtr)) != HOST_SENDCONTROL_Successful)\r
+ f74: c8 01 movw r24, r16\r
+ f76: 85 d0 rcall .+266 ; 0x1082 <USB_Host_SendControlRequest>\r
+ f78: 88 23 and r24, r24\r
+ f7a: 39 f4 brne .+14 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+ return ErrorCode;\r
+\r
+ if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)\r
+ f7c: f8 01 movw r30, r16\r
+ f7e: 91 81 ldd r25, Z+1 ; 0x01\r
+ f80: 92 30 cpi r25, 0x02 ; 2\r
+ f82: 19 f0 breq .+6 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+ return HOST_GETCONFIG_InvalidData;\r
+ f84: 86 e0 ldi r24, 0x06 ; 6\r
+ f86: 01 c0 rjmp .+2 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+ return ErrorCode;\r
+\r
+ *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;\r
+\r
+ if (*ConfigSizePtr > BufferSize)\r
+ return HOST_GETCONFIG_BuffOverflow;\r
+ f88: 85 e0 ldi r24, 0x05 ; 5\r
+\r
+ if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)\r
+ return HOST_GETCONFIG_InvalidData;\r
+\r
+ return HOST_GETCONFIG_Successful;\r
+}\r
+ f8a: 29 96 adiw r28, 0x09 ; 9\r
+ f8c: 0f b6 in r0, 0x3f ; 63\r
+ f8e: f8 94 cli\r
+ f90: de bf out 0x3e, r29 ; 62\r
+ f92: 0f be out 0x3f, r0 ; 63\r
+ f94: cd bf out 0x3d, r28 ; 61\r
+ f96: cf 91 pop r28\r
+ f98: df 91 pop r29\r
+ f9a: 1f 91 pop r17\r
+ f9c: 0f 91 pop r16\r
+ f9e: ff 90 pop r15\r
+ fa0: ef 90 pop r14\r
+ fa2: df 90 pop r13\r
+ fa4: cf 90 pop r12\r
+ fa6: 08 95 ret\r
+\r
+00000fa8 <USB_GetNextDescriptorComp>:\r
+}\r
+\r
+uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem,\r
+ void** const CurrConfigLoc,\r
+ const ConfigComparatorPtr_t const ComparatorRoutine)\r
+{\r
+ fa8: af 92 push r10\r
+ faa: bf 92 push r11\r
+ fac: cf 92 push r12\r
+ fae: df 92 push r13\r
+ fb0: ef 92 push r14\r
+ fb2: ff 92 push r15\r
+ fb4: 0f 93 push r16\r
+ fb6: 1f 93 push r17\r
+ fb8: cf 93 push r28\r
+ fba: df 93 push r29\r
+ fbc: 8c 01 movw r16, r24\r
+ fbe: eb 01 movw r28, r22\r
+ fc0: 6a 01 movw r12, r20\r
+ uint8_t ErrorCode;\r
+\r
+ while (*BytesRem)\r
+ fc2: 23 c0 rjmp .+70 ; 0x100a <USB_GetNextDescriptorComp+0x62>\r
+ {\r
+ uint8_t* PrevDescLoc = *CurrConfigLoc;\r
+ fc4: e8 81 ld r30, Y\r
+ fc6: f9 81 ldd r31, Y+1 ; 0x01\r
+ fc8: 5f 01 movw r10, r30\r
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+ void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);\r
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+ void** CurrConfigLoc)\r
+ {\r
+ uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;\r
+ fca: 20 81 ld r18, Z\r
+ fcc: 30 e0 ldi r19, 0x00 ; 0\r
+ fce: c7 01 movw r24, r14\r
+ fd0: 2e 15 cp r18, r14\r
+ fd2: 3f 05 cpc r19, r15\r
+ fd4: 08 f4 brcc .+2 ; 0xfd8 <USB_GetNextDescriptorComp+0x30>\r
+ fd6: c9 01 movw r24, r18\r
+ \r
+ if (*BytesRem < CurrDescriptorSize)\r
+ CurrDescriptorSize = *BytesRem;\r
+\r
+ *CurrConfigLoc = (void*)((uintptr_t)*CurrConfigLoc + CurrDescriptorSize);\r
+ fd8: e8 0f add r30, r24\r
+ fda: f9 1f adc r31, r25\r
+ fdc: f9 83 std Y+1, r31 ; 0x01\r
+ fde: e8 83 st Y, r30\r
+ *BytesRem -= CurrDescriptorSize;\r
+ fe0: f8 01 movw r30, r16\r
+ fe2: 20 81 ld r18, Z\r
+ fe4: 31 81 ldd r19, Z+1 ; 0x01\r
+ fe6: 28 1b sub r18, r24\r
+ fe8: 39 0b sbc r19, r25\r
+ fea: 31 83 std Z+1, r19 ; 0x01\r
+ fec: 20 83 st Z, r18\r
+ uint16_t PrevBytesRem = *BytesRem;\r
+\r
+ USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
+\r
+ if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)\r
+ fee: 88 81 ld r24, Y\r
+ ff0: 99 81 ldd r25, Y+1 ; 0x01\r
+ ff2: f6 01 movw r30, r12\r
+ ff4: 09 95 icall\r
+ ff6: 82 30 cpi r24, 0x02 ; 2\r
+ ff8: 41 f0 breq .+16 ; 0x100a <USB_GetNextDescriptorComp+0x62>\r
+ {\r
+ if (ErrorCode == DESCRIPTOR_SEARCH_Fail)\r
+ ffa: 81 30 cpi r24, 0x01 ; 1\r
+ ffc: 69 f4 brne .+26 ; 0x1018 <USB_GetNextDescriptorComp+0x70>\r
+ {\r
+ *CurrConfigLoc = PrevDescLoc;\r
+ ffe: a8 82 st Y, r10\r
+ 1000: b9 82 std Y+1, r11 ; 0x01\r
+ *BytesRem = PrevBytesRem;\r
+ 1002: f8 01 movw r30, r16\r
+ 1004: f1 82 std Z+1, r15 ; 0x01\r
+ 1006: e0 82 st Z, r14\r
+ 1008: 07 c0 rjmp .+14 ; 0x1018 <USB_GetNextDescriptorComp+0x70>\r
+ void** const CurrConfigLoc,\r
+ const ConfigComparatorPtr_t const ComparatorRoutine)\r
+{\r
+ uint8_t ErrorCode;\r
+\r
+ while (*BytesRem)\r
+ 100a: f8 01 movw r30, r16\r
+ 100c: e0 80 ld r14, Z\r
+ 100e: f1 80 ldd r15, Z+1 ; 0x01\r
+ 1010: e1 14 cp r14, r1\r
+ 1012: f1 04 cpc r15, r1\r
+ 1014: b9 f6 brne .-82 ; 0xfc4 <USB_GetNextDescriptorComp+0x1c>\r
+\r
+ return ErrorCode;\r
+ }\r
+ }\r
+\r
+ return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;\r
+ 1016: 82 e0 ldi r24, 0x02 ; 2\r
+}\r
+ 1018: df 91 pop r29\r
+ 101a: cf 91 pop r28\r
+ 101c: 1f 91 pop r17\r
+ 101e: 0f 91 pop r16\r
+ 1020: ff 90 pop r15\r
+ 1022: ef 90 pop r14\r
+ 1024: df 90 pop r13\r
+ 1026: cf 90 pop r12\r
+ 1028: bf 90 pop r11\r
+ 102a: af 90 pop r10\r
+ 102c: 08 95 ret\r
+\r
+0000102e <USB_Event_Stub>:\r
+#include "Events.h"\r
+\r
+void USB_Event_Stub(void)\r
+{\r
+\r
+}\r
+ 102e: 08 95 ret\r
+\r
+00001030 <USB_Host_WaitForIOS>:\r
+\r
+ return ReturnStatus;\r
+}\r
+\r
+static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType)\r
+{\r
+ 1030: 1f 93 push r17\r
+ 1032: cf 93 push r28\r
+ 1034: df 93 push r29\r
+ 1036: 18 2f mov r17, r24\r
+ #if (USB_HOST_TIMEOUT_MS < 0xFF)\r
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ #else\r
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ 1038: c8 ee ldi r28, 0xE8 ; 232\r
+ 103a: d3 e0 ldi r29, 0x03 ; 3\r
+ #endif\r
+\r
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||\r
+ 103c: 07 c0 rjmp .+14 ; 0x104c <USB_Host_WaitForIOS+0x1c>\r
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+ ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady())))\r
+ {\r
+ uint8_t ErrorCode;\r
+\r
+ if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+ 103e: 81 e0 ldi r24, 0x01 ; 1\r
+ 1040: 1e dc rcall .-1988 ; 0x87e <USB_Host_WaitMS>\r
+ 1042: 88 23 and r24, r24\r
+ 1044: d1 f4 brne .+52 ; 0x107a <USB_Host_WaitForIOS+0x4a>\r
+ return ErrorCode;\r
+\r
+ if (!(TimeoutCounter--))\r
+ 1046: 20 97 sbiw r28, 0x00 ; 0\r
+ 1048: b9 f0 breq .+46 ; 0x1078 <USB_Host_WaitForIOS+0x48>\r
+ 104a: 21 97 sbiw r28, 0x01 ; 1\r
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ #else\r
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ #endif\r
+\r
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||\r
+ 104c: 11 23 and r17, r17\r
+ 104e: 29 f4 brne .+10 ; 0x105a <USB_Host_WaitForIOS+0x2a>\r
+ * \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsSETUPSent(void)\r
+ {\r
+ return ((UPINTX & (1 << TXSTPI)) ? true : false);\r
+ 1050: 80 91 a6 00 lds r24, 0x00A6\r
+ 1054: 83 ff sbrs r24, 3\r
+ 1056: f3 cf rjmp .-26 ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+ 1058: 0d c0 rjmp .+26 ; 0x1074 <USB_Host_WaitForIOS+0x44>\r
+ 105a: 11 30 cpi r17, 0x01 ; 1\r
+ 105c: 29 f4 brne .+10 ; 0x1068 <USB_Host_WaitForIOS+0x38>\r
+ * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsINReceived(void)\r
+ {\r
+ return ((UPINTX & (1 << RXINI)) ? true : false);\r
+ 105e: 80 91 a6 00 lds r24, 0x00A6\r
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+ 1062: 80 ff sbrs r24, 0\r
+ 1064: ec cf rjmp .-40 ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+ 1066: 06 c0 rjmp .+12 ; 0x1074 <USB_Host_WaitForIOS+0x44>\r
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ #else\r
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+ #endif\r
+\r
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||\r
+ 1068: 12 30 cpi r17, 0x02 ; 2\r
+ 106a: 49 f7 brne .-46 ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+ * \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise.\r
+ */\r
+ static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Pipe_IsOUTReady(void)\r
+ {\r
+ return ((UPINTX & (1 << TXOUTI)) ? true : false);\r
+ 106c: 80 91 a6 00 lds r24, 0x00A6\r
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+ ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady())))\r
+ 1070: 82 ff sbrs r24, 2\r
+ 1072: e5 cf rjmp .-54 ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+\r
+ if (!(TimeoutCounter--))\r
+ return HOST_SENDCONTROL_SoftwareTimeOut;\r
+ }\r
+\r
+ return HOST_SENDCONTROL_Successful;\r
+ 1074: 80 e0 ldi r24, 0x00 ; 0\r
+ 1076: 01 c0 rjmp .+2 ; 0x107a <USB_Host_WaitForIOS+0x4a>\r
+\r
+ if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+ return ErrorCode;\r
+\r
+ if (!(TimeoutCounter--))\r
+ return HOST_SENDCONTROL_SoftwareTimeOut;\r
+ 1078: 84 e0 ldi r24, 0x04 ; 4\r
+ }\r
+\r
+ return HOST_SENDCONTROL_Successful;\r
+}\r
+ 107a: df 91 pop r29\r
+ 107c: cf 91 pop r28\r
+ 107e: 1f 91 pop r17\r
+ 1080: 08 95 ret\r
+\r
+00001082 <USB_Host_SendControlRequest>:\r
+\r
+#define __INCLUDE_FROM_HOSTSTDREQ_C\r
+#include "HostStandardReq.h"\r
+\r
+uint8_t USB_Host_SendControlRequest(void* const BufferPtr)\r
+{\r
+ 1082: ef 92 push r14\r
+ 1084: ff 92 push r15\r
+ 1086: 0f 93 push r16\r
+ 1088: 1f 93 push r17\r
+ 108a: cf 93 push r28\r
+ 108c: df 93 push r29\r
+ 108e: 8c 01 movw r16, r24\r
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+ */\r
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool USB_Host_IsBusSuspended(void)\r
+ {\r
+ return ((UHCON & (1 << SOFEN)) ? false : true);\r
+ 1090: e0 90 9e 00 lds r14, 0x009E\r
+ 1094: ff 24 eor r15, r15\r
+ 1096: 81 e0 ldi r24, 0x01 ; 1\r
+ 1098: e8 22 and r14, r24\r
+ 109a: ff 24 eor r15, r15\r
+ uint8_t* DataStream = (uint8_t*)BufferPtr;\r
+ bool BusSuspended = USB_Host_IsBusSuspended();\r
+ uint8_t ReturnStatus = HOST_SENDCONTROL_Successful;\r
+ uint16_t DataLen = USB_ControlRequest.wLength;\r
+ 109c: c0 91 29 01 lds r28, 0x0129\r
+ 10a0: d0 91 2a 01 lds r29, 0x012A\r
+ * host and attached device may occur.\r
+ */\r
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_ResumeBus(void)\r
+ {\r
+ UHCON |= (1 << SOFEN);\r
+ 10a4: 80 91 9e 00 lds r24, 0x009E\r
+ 10a8: 81 60 ori r24, 0x01 ; 1\r
+ 10aa: 80 93 9e 00 sts 0x009E, r24\r
+\r
+ USB_Host_ResumeBus();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+ 10ae: 81 e0 ldi r24, 0x01 ; 1\r
+ 10b0: e6 db rcall .-2100 ; 0x87e <USB_Host_WaitMS>\r
+ 10b2: 88 23 and r24, r24\r
+ 10b4: 09 f0 breq .+2 ; 0x10b8 <USB_Host_SendControlRequest+0x36>\r
+ 10b6: e2 c0 rjmp .+452 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+ */\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+ {\r
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+ 10b8: 80 91 aa 00 lds r24, 0x00AA\r
+ 10bc: 8f 7c andi r24, 0xCF ; 207\r
+ 10be: 80 93 aa 00 sts 0x00AA, r24\r
+\r
+ /** Clears the error flags for the currently selected pipe. */\r
+ static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearError(void)\r
+ {\r
+ UPERRX = 0;\r
+ 10c2: 10 92 f5 00 sts 0x00F5, r1\r
+ UPINTX &= ~(1 << PERRI);\r
+ 10c6: 80 91 a6 00 lds r24, 0x00A6\r
+ 10ca: 8f 7e andi r24, 0xEF ; 239\r
+ 10cc: 80 93 a6 00 sts 0x00A6, r24\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 10d0: 80 91 a9 00 lds r24, 0x00A9\r
+ 10d4: 8f 7b andi r24, 0xBF ; 191\r
+ 10d6: 80 93 a9 00 sts 0x00A9, r24\r
+ Pipe_SetPipeToken(PIPE_TOKEN_SETUP);\r
+ Pipe_ClearError();\r
+\r
+ Pipe_Unfreeze();\r
+\r
+ Pipe_Write_8(USB_ControlRequest.bmRequestType);\r
+ 10da: 80 91 23 01 lds r24, 0x0123\r
+ * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Write_8(const uint8_t Data)\r
+ {\r
+ UPDATX = Data;\r
+ 10de: 80 93 af 00 sts 0x00AF, r24\r
+ Pipe_Write_8(USB_ControlRequest.bRequest);\r
+ 10e2: 80 91 24 01 lds r24, 0x0124\r
+ 10e6: 80 93 af 00 sts 0x00AF, r24\r
+ Pipe_Write_16_LE(USB_ControlRequest.wValue);\r
+ 10ea: 90 91 25 01 lds r25, 0x0125\r
+ 10ee: 80 91 26 01 lds r24, 0x0126\r
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+ {\r
+ UPDATX = (Data & 0xFF);\r
+ 10f2: 90 93 af 00 sts 0x00AF, r25\r
+ UPDATX = (Data >> 8);\r
+ 10f6: 80 93 af 00 sts 0x00AF, r24\r
+ Pipe_Write_16_LE(USB_ControlRequest.wIndex);\r
+ 10fa: 90 91 27 01 lds r25, 0x0127\r
+ 10fe: 80 91 28 01 lds r24, 0x0128\r
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+ {\r
+ UPDATX = (Data & 0xFF);\r
+ 1102: 90 93 af 00 sts 0x00AF, r25\r
+ UPDATX = (Data >> 8);\r
+ 1106: 80 93 af 00 sts 0x00AF, r24\r
+ Pipe_Write_16_LE(USB_ControlRequest.wLength);\r
+ 110a: 90 91 29 01 lds r25, 0x0129\r
+ 110e: 80 91 2a 01 lds r24, 0x012A\r
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+ {\r
+ UPDATX = (Data & 0xFF);\r
+ 1112: 90 93 af 00 sts 0x00AF, r25\r
+ UPDATX = (Data >> 8);\r
+ 1116: 80 93 af 00 sts 0x00AF, r24\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearSETUP(void)\r
+ {\r
+ UPINTX &= ~((1 << TXSTPI) | (1 << FIFOCON));\r
+ 111a: 80 91 a6 00 lds r24, 0x00A6\r
+ 111e: 87 77 andi r24, 0x77 ; 119\r
+ 1120: 80 93 a6 00 sts 0x00A6, r24\r
+\r
+ Pipe_ClearSETUP();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful)\r
+ 1124: 80 e0 ldi r24, 0x00 ; 0\r
+ 1126: 84 df rcall .-248 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 1128: 88 23 and r24, r24\r
+ 112a: 09 f0 breq .+2 ; 0x112e <USB_Host_SendControlRequest+0xac>\r
+ 112c: a7 c0 rjmp .+334 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+\r
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Freeze(void)\r
+ {\r
+ UPCONX |= (1 << PFREEZE);\r
+ 112e: 80 91 a9 00 lds r24, 0x00A9\r
+ 1132: 80 64 ori r24, 0x40 ; 64\r
+ 1134: 80 93 a9 00 sts 0x00A9, r24\r
+ goto End_Of_Control_Send;\r
+\r
+ Pipe_Freeze();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+ 1138: 81 e0 ldi r24, 0x01 ; 1\r
+ 113a: a1 db rcall .-2238 ; 0x87e <USB_Host_WaitMS>\r
+ 113c: 88 23 and r24, r24\r
+ 113e: 09 f0 breq .+2 ; 0x1142 <USB_Host_SendControlRequest+0xc0>\r
+ 1140: 9d c0 rjmp .+314 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ goto End_Of_Control_Send;\r
+\r
+ if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST)\r
+ 1142: 80 91 23 01 lds r24, 0x0123\r
+ 1146: 87 ff sbrs r24, 7\r
+ 1148: 4f c0 rjmp .+158 ; 0x11e8 <USB_Host_SendControlRequest+0x166>\r
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+ */\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+ {\r
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+ 114a: 80 91 aa 00 lds r24, 0x00AA\r
+ 114e: 8f 7c andi r24, 0xCF ; 207\r
+ 1150: 80 61 ori r24, 0x10 ; 16\r
+ 1152: 80 93 aa 00 sts 0x00AA, r24\r
+ {\r
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+\r
+ if (DataStream != NULL)\r
+ 1156: 01 15 cp r16, r1\r
+ 1158: 11 05 cpc r17, r1\r
+ 115a: 61 f5 brne .+88 ; 0x11b4 <USB_Host_SendControlRequest+0x132>\r
+ 115c: 2d c0 rjmp .+90 ; 0x11b8 <USB_Host_SendControlRequest+0x136>\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 115e: 80 91 a9 00 lds r24, 0x00A9\r
+ 1162: 8f 7b andi r24, 0xBF ; 191\r
+ 1164: 80 93 a9 00 sts 0x00A9, r24\r
+ {\r
+ while (DataLen)\r
+ {\r
+ Pipe_Unfreeze();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
+ 1168: 81 e0 ldi r24, 0x01 ; 1\r
+ 116a: 62 df rcall .-316 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 116c: 88 23 and r24, r24\r
+ 116e: 09 f0 breq .+2 ; 0x1172 <USB_Host_SendControlRequest+0xf0>\r
+ 1170: 85 c0 rjmp .+266 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint16_t Pipe_BytesInPipe(void)\r
+ {\r
+ return UPBCX;\r
+ 1172: 80 91 f6 00 lds r24, 0x00F6\r
+ 1176: 90 91 f7 00 lds r25, 0x00F7\r
+ goto End_Of_Control_Send;\r
+\r
+ if (!(Pipe_BytesInPipe()))\r
+ 117a: 00 97 sbiw r24, 0x00 ; 0\r
+ 117c: 49 f4 brne .+18 ; 0x1190 <USB_Host_SendControlRequest+0x10e>\r
+ DataLen = 0;\r
+ 117e: c0 e0 ldi r28, 0x00 ; 0\r
+ 1180: d0 e0 ldi r29, 0x00 ; 0\r
+ 1182: 06 c0 rjmp .+12 ; 0x1190 <USB_Host_SendControlRequest+0x10e>\r
+ * \return Next byte in the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline uint8_t Pipe_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint8_t Pipe_Read_8(void)\r
+ {\r
+ return UPDATX;\r
+ 1184: 80 91 af 00 lds r24, 0x00AF\r
+\r
+ while (Pipe_BytesInPipe() && DataLen)\r
+ {\r
+ *(DataStream++) = Pipe_Read_8();\r
+ 1188: f8 01 movw r30, r16\r
+ 118a: 81 93 st Z+, r24\r
+ 118c: 8f 01 movw r16, r30\r
+ DataLen--;\r
+ 118e: 21 97 sbiw r28, 0x01 ; 1\r
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint16_t Pipe_BytesInPipe(void)\r
+ {\r
+ return UPBCX;\r
+ 1190: 80 91 f6 00 lds r24, 0x00F6\r
+ 1194: 90 91 f7 00 lds r25, 0x00F7\r
+ goto End_Of_Control_Send;\r
+\r
+ if (!(Pipe_BytesInPipe()))\r
+ DataLen = 0;\r
+\r
+ while (Pipe_BytesInPipe() && DataLen)\r
+ 1198: 00 97 sbiw r24, 0x00 ; 0\r
+ 119a: 11 f0 breq .+4 ; 0x11a0 <USB_Host_SendControlRequest+0x11e>\r
+ 119c: 20 97 sbiw r28, 0x00 ; 0\r
+ 119e: 91 f7 brne .-28 ; 0x1184 <USB_Host_SendControlRequest+0x102>\r
+\r
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Freeze(void)\r
+ {\r
+ UPCONX |= (1 << PFREEZE);\r
+ 11a0: 80 91 a9 00 lds r24, 0x00A9\r
+ 11a4: 80 64 ori r24, 0x40 ; 64\r
+ 11a6: 80 93 a9 00 sts 0x00A9, r24\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearIN(void)\r
+ {\r
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+ 11aa: 80 91 a6 00 lds r24, 0x00A6\r
+ 11ae: 8e 77 andi r24, 0x7E ; 126\r
+ 11b0: 80 93 a6 00 sts 0x00A6, r24\r
+ {\r
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+\r
+ if (DataStream != NULL)\r
+ {\r
+ while (DataLen)\r
+ 11b4: 20 97 sbiw r28, 0x00 ; 0\r
+ 11b6: 99 f6 brne .-90 ; 0x115e <USB_Host_SendControlRequest+0xdc>\r
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+ */\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+ {\r
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+ 11b8: 80 91 aa 00 lds r24, 0x00AA\r
+ 11bc: 8f 7c andi r24, 0xCF ; 207\r
+ 11be: 80 62 ori r24, 0x20 ; 32\r
+ 11c0: 80 93 aa 00 sts 0x00AA, r24\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 11c4: 80 91 a9 00 lds r24, 0x00A9\r
+ 11c8: 8f 7b andi r24, 0xBF ; 191\r
+ 11ca: 80 93 a9 00 sts 0x00A9, r24\r
+ }\r
+\r
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+ Pipe_Unfreeze();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+ 11ce: 82 e0 ldi r24, 0x02 ; 2\r
+ 11d0: 2f df rcall .-418 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 11d2: 88 23 and r24, r24\r
+ 11d4: 09 f0 breq .+2 ; 0x11d8 <USB_Host_SendControlRequest+0x156>\r
+ 11d6: 52 c0 rjmp .+164 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearOUT(void)\r
+ {\r
+ UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));\r
+ 11d8: 80 91 a6 00 lds r24, 0x00A6\r
+ 11dc: 8b 77 andi r24, 0x7B ; 123\r
+ 11de: 80 93 a6 00 sts 0x00A6, r24\r
+ goto End_Of_Control_Send;\r
+\r
+ Pipe_ClearOUT();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+ 11e2: 82 e0 ldi r24, 0x02 ; 2\r
+ 11e4: 25 df rcall .-438 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 11e6: 4a c0 rjmp .+148 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ goto End_Of_Control_Send;\r
+ }\r
+ else\r
+ {\r
+ if (DataStream != NULL)\r
+ 11e8: 01 15 cp r16, r1\r
+ 11ea: 11 05 cpc r17, r1\r
+ 11ec: 99 f1 breq .+102 ; 0x1254 <USB_Host_SendControlRequest+0x1d2>\r
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+ */\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+ {\r
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+ 11ee: 80 91 aa 00 lds r24, 0x00AA\r
+ 11f2: 8f 7c andi r24, 0xCF ; 207\r
+ 11f4: 80 62 ori r24, 0x20 ; 32\r
+ 11f6: 80 93 aa 00 sts 0x00AA, r24\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 11fa: 80 91 a9 00 lds r24, 0x00A9\r
+ 11fe: 8f 7b andi r24, 0xBF ; 191\r
+ 1200: 80 93 a9 00 sts 0x00A9, r24\r
+ {\r
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+ Pipe_Unfreeze();\r
+\r
+ while (DataLen)\r
+ 1204: 1c c0 rjmp .+56 ; 0x123e <USB_Host_SendControlRequest+0x1bc>\r
+ {\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+ 1206: 82 e0 ldi r24, 0x02 ; 2\r
+ 1208: 13 df rcall .-474 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 120a: 88 23 and r24, r24\r
+ 120c: b9 f5 brne .+110 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ 120e: f8 01 movw r30, r16\r
+ 1210: 06 c0 rjmp .+12 ; 0x121e <USB_Host_SendControlRequest+0x19c>\r
+ goto End_Of_Control_Send;\r
+\r
+ while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))\r
+ {\r
+ Pipe_Write_8(*(DataStream++));\r
+ 1212: 81 91 ld r24, Z+\r
+ 1214: 8f 01 movw r16, r30\r
+ * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Write_8(const uint8_t Data)\r
+ {\r
+ UPDATX = Data;\r
+ 1216: 80 93 af 00 sts 0x00AF, r24\r
+ DataLen--;\r
+ 121a: 21 97 sbiw r28, 0x01 ; 1\r
+ while (DataLen)\r
+ {\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+ goto End_Of_Control_Send;\r
+\r
+ while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))\r
+ 121c: 59 f0 breq .+22 ; 0x1234 <USB_Host_SendControlRequest+0x1b2>\r
+ 121e: 8f 01 movw r16, r30\r
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+ */\r
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint16_t Pipe_BytesInPipe(void)\r
+ {\r
+ return UPBCX;\r
+ 1220: 20 91 f6 00 lds r18, 0x00F6\r
+ 1224: 30 91 f7 00 lds r19, 0x00F7\r
+ 1228: 80 91 1b 01 lds r24, 0x011B\r
+ 122c: 90 e0 ldi r25, 0x00 ; 0\r
+ 122e: 28 17 cp r18, r24\r
+ 1230: 39 07 cpc r19, r25\r
+ 1232: 78 f3 brcs .-34 ; 0x1212 <USB_Host_SendControlRequest+0x190>\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearOUT(void)\r
+ {\r
+ UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));\r
+ 1234: 80 91 a6 00 lds r24, 0x00A6\r
+ 1238: 8b 77 andi r24, 0x7B ; 123\r
+ 123a: 80 93 a6 00 sts 0x00A6, r24\r
+ if (DataStream != NULL)\r
+ {\r
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+ Pipe_Unfreeze();\r
+\r
+ while (DataLen)\r
+ 123e: 20 97 sbiw r28, 0x00 ; 0\r
+ 1240: 11 f7 brne .-60 ; 0x1206 <USB_Host_SendControlRequest+0x184>\r
+ }\r
+\r
+ Pipe_ClearOUT();\r
+ }\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+ 1242: 82 e0 ldi r24, 0x02 ; 2\r
+ 1244: f5 de rcall .-534 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 1246: 88 23 and r24, r24\r
+ 1248: c9 f4 brne .+50 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+\r
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Freeze(void)\r
+ {\r
+ UPCONX |= (1 << PFREEZE);\r
+ 124a: 80 91 a9 00 lds r24, 0x00A9\r
+ 124e: 80 64 ori r24, 0x40 ; 64\r
+ 1250: 80 93 a9 00 sts 0x00A9, r24\r
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+ */\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+ {\r
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+ 1254: 80 91 aa 00 lds r24, 0x00AA\r
+ 1258: 8f 7c andi r24, 0xCF ; 207\r
+ 125a: 80 61 ori r24, 0x10 ; 16\r
+ 125c: 80 93 aa 00 sts 0x00AA, r24\r
+\r
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Unfreeze(void)\r
+ {\r
+ UPCONX &= ~(1 << PFREEZE);\r
+ 1260: 80 91 a9 00 lds r24, 0x00A9\r
+ 1264: 8f 7b andi r24, 0xBF ; 191\r
+ 1266: 80 93 a9 00 sts 0x00A9, r24\r
+ }\r
+\r
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+ Pipe_Unfreeze();\r
+\r
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
+ 126a: 81 e0 ldi r24, 0x01 ; 1\r
+ 126c: e1 de rcall .-574 ; 0x1030 <USB_Host_WaitForIOS>\r
+ 126e: 88 23 and r24, r24\r
+ 1270: 29 f4 brne .+10 ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+ * \ingroup Group_PipePacketManagement_AVR8\r
+ */\r
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ClearIN(void)\r
+ {\r
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+ 1272: 90 91 a6 00 lds r25, 0x00A6\r
+ 1276: 9e 77 andi r25, 0x7E ; 126\r
+ 1278: 90 93 a6 00 sts 0x00A6, r25\r
+\r
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_Freeze(void)\r
+ {\r
+ UPCONX |= (1 << PFREEZE);\r
+ 127c: 90 91 a9 00 lds r25, 0x00A9\r
+ 1280: 90 64 ori r25, 0x40 ; 64\r
+ 1282: 90 93 a9 00 sts 0x00A9, r25\r
+ }\r
+\r
+End_Of_Control_Send:\r
+ Pipe_Freeze();\r
+\r
+ if (BusSuspended)\r
+ 1286: e1 14 cp r14, r1\r
+ 1288: f1 04 cpc r15, r1\r
+ 128a: 29 f4 brne .+10 ; 0x1296 <USB_Host_SendControlRequest+0x214>\r
+ * messages to the device.\r
+ */\r
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+ static inline void USB_Host_SuspendBus(void)\r
+ {\r
+ UHCON &= ~(1 << SOFEN);\r
+ 128c: 90 91 9e 00 lds r25, 0x009E\r
+ 1290: 9e 7f andi r25, 0xFE ; 254\r
+ 1292: 90 93 9e 00 sts 0x009E, r25\r
+ * \param[in] PipeNumber Index of the pipe to reset.\r
+ */\r
+ static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_ResetPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPRST = (1 << PipeNumber);\r
+ 1296: 91 e0 ldi r25, 0x01 ; 1\r
+ 1298: 90 93 a8 00 sts 0x00A8, r25\r
+ UPRST = 0;\r
+ 129c: 10 92 a8 00 sts 0x00A8, r1\r
+ USB_Host_SuspendBus();\r
+\r
+ Pipe_ResetPipe(PIPE_CONTROLPIPE);\r
+\r
+ return ReturnStatus;\r
+}\r
+ 12a0: df 91 pop r29\r
+ 12a2: cf 91 pop r28\r
+ 12a4: 1f 91 pop r17\r
+ 12a6: 0f 91 pop r16\r
+ 12a8: ff 90 pop r15\r
+ 12aa: ef 90 pop r14\r
+ 12ac: 08 95 ret\r
+\r
+000012ae <USB_USBTask>:\r
+#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)\r
+volatile uint8_t USB_DeviceState;\r
+#endif\r
+\r
+void USB_USBTask(void)\r
+{\r
+ 12ae: 1f 93 push r17\r
+ 12b0: cf 93 push r28\r
+ 12b2: df 93 push r29\r
+ * \return Index of the currently selected pipe.\r
+ */\r
+ static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline uint8_t Pipe_GetCurrentPipe(void)\r
+ {\r
+ return (UPNUM & PIPE_PIPENUM_MASK);\r
+ 12b4: c7 ea ldi r28, 0xA7 ; 167\r
+ 12b6: d0 e0 ldi r29, 0x00 ; 0\r
+ 12b8: 18 81 ld r17, Y\r
+ 12ba: 17 70 andi r17, 0x07 ; 7\r
+ * \param[in] PipeNumber Index of the pipe to select.\r
+ */\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+ {\r
+ UPNUM = PipeNumber;\r
+ 12bc: 18 82 st Y, r1\r
+{\r
+ uint8_t PrevPipe = Pipe_GetCurrentPipe();\r
+\r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ USB_Host_ProcessNextHostState();\r
+ 12be: 34 db rcall .-2456 ; 0x928 <USB_Host_ProcessNextHostState>\r
+ 12c0: 18 83 st Y, r17\r
+ if (USB_CurrentMode == USB_MODE_Device)\r
+ USB_DeviceTask();\r
+ else if (USB_CurrentMode == USB_MODE_Host)\r
+ USB_HostTask();\r
+ #endif\r
+}\r
+ 12c2: df 91 pop r29\r
+ 12c4: cf 91 pop r28\r
+ 12c6: 1f 91 pop r17\r
+ 12c8: 08 95 ret\r
+\r
+000012ca <Serial_putchar>:\r
+ * \param[in] DataByte Byte to transmit through the USART.\r
+ */\r
+ static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE;\r
+ static inline void Serial_SendByte(const char DataByte)\r
+ {\r
+ while (!(UCSR1A & (1 << UDRE1)));\r
+ 12ca: 90 91 c8 00 lds r25, 0x00C8\r
+ 12ce: 95 ff sbrs r25, 5\r
+ 12d0: fc cf rjmp .-8 ; 0x12ca <Serial_putchar>\r
+ UDR1 = DataByte;\r
+ 12d2: 80 93 ce 00 sts 0x00CE, r24\r
+{\r
+ (void)Stream;\r
+\r
+ Serial_SendByte(DataByte);\r
+ return 0;\r
+}\r
+ 12d6: 80 e0 ldi r24, 0x00 ; 0\r
+ 12d8: 90 e0 ldi r25, 0x00 ; 0\r
+ 12da: 08 95 ret\r
+\r
+000012dc <Serial_getchar>:\r
+ * \return Boolean \c true if a character has been received, \c false otherwise.\r
+ */\r
+ static inline bool Serial_IsCharReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+ static inline bool Serial_IsCharReceived(void)\r
+ {\r
+ return ((UCSR1A & (1 << RXC1)) ? true : false);\r
+ 12dc: 80 91 c8 00 lds r24, 0x00C8\r
+\r
+int Serial_getchar(FILE *Stream)\r
+{\r
+ (void)Stream;\r
+\r
+ if (!(Serial_IsCharReceived()))\r
+ 12e0: 87 ff sbrs r24, 7\r
+ 12e2: 08 c0 rjmp .+16 ; 0x12f4 <Serial_getchar+0x18>\r
+ 12e4: 80 91 c8 00 lds r24, 0x00C8\r
+ * \return Next byte received from the USART, or a negative value if no byte has been received.\r
+ */\r
+ static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;\r
+ static inline int16_t Serial_ReceiveByte(void)\r
+ {\r
+ if (!(Serial_IsCharReceived()))\r
+ 12e8: 87 ff sbrs r24, 7\r
+ 12ea: 07 c0 rjmp .+14 ; 0x12fa <Serial_getchar+0x1e>\r
+ return -1;\r
+ \r
+ return UDR1;\r
+ 12ec: 20 91 ce 00 lds r18, 0x00CE\r
+ 12f0: 30 e0 ldi r19, 0x00 ; 0\r
+ 12f2: 05 c0 rjmp .+10 ; 0x12fe <Serial_getchar+0x22>\r
+ return _FDEV_EOF;\r
+ 12f4: 2e ef ldi r18, 0xFE ; 254\r
+ 12f6: 3f ef ldi r19, 0xFF ; 255\r
+ 12f8: 02 c0 rjmp .+4 ; 0x12fe <Serial_getchar+0x22>\r
+ */\r
+ static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;\r
+ static inline int16_t Serial_ReceiveByte(void)\r
+ {\r
+ if (!(Serial_IsCharReceived()))\r
+ return -1;\r
+ 12fa: 2f ef ldi r18, 0xFF ; 255\r
+ 12fc: 3f ef ldi r19, 0xFF ; 255\r
+\r
+ return Serial_ReceiveByte();\r
+}\r
+ 12fe: c9 01 movw r24, r18\r
+ 1300: 08 95 ret\r
+\r
+00001302 <printf_P>:\r
+ 1302: df 93 push r29\r
+ 1304: cf 93 push r28\r
+ 1306: cd b7 in r28, 0x3d ; 61\r
+ 1308: de b7 in r29, 0x3e ; 62\r
+ 130a: fe 01 movw r30, r28\r
+ 130c: 35 96 adiw r30, 0x05 ; 5\r
+ 130e: 61 91 ld r22, Z+\r
+ 1310: 71 91 ld r23, Z+\r
+ 1312: 80 91 3c 01 lds r24, 0x013C\r
+ 1316: 90 91 3d 01 lds r25, 0x013D\r
+ 131a: dc 01 movw r26, r24\r
+ 131c: 13 96 adiw r26, 0x03 ; 3\r
+ 131e: 2c 91 ld r18, X\r
+ 1320: 13 97 sbiw r26, 0x03 ; 3\r
+ 1322: 28 60 ori r18, 0x08 ; 8\r
+ 1324: 13 96 adiw r26, 0x03 ; 3\r
+ 1326: 2c 93 st X, r18\r
+ 1328: af 01 movw r20, r30\r
+ 132a: 42 d0 rcall .+132 ; 0x13b0 <vfprintf>\r
+ 132c: e0 91 3c 01 lds r30, 0x013C\r
+ 1330: f0 91 3d 01 lds r31, 0x013D\r
+ 1334: 23 81 ldd r18, Z+3 ; 0x03\r
+ 1336: 27 7f andi r18, 0xF7 ; 247\r
+ 1338: 23 83 std Z+3, r18 ; 0x03\r
+ 133a: cf 91 pop r28\r
+ 133c: df 91 pop r29\r
+ 133e: 08 95 ret\r
+\r
+00001340 <puts_P>:\r
+ 1340: ef 92 push r14\r
+ 1342: ff 92 push r15\r
+ 1344: 0f 93 push r16\r
+ 1346: 1f 93 push r17\r
+ 1348: cf 93 push r28\r
+ 134a: df 93 push r29\r
+ 134c: 8c 01 movw r16, r24\r
+ 134e: e0 91 3c 01 lds r30, 0x013C\r
+ 1352: f0 91 3d 01 lds r31, 0x013D\r
+ 1356: 83 81 ldd r24, Z+3 ; 0x03\r
+ 1358: 81 ff sbrs r24, 1\r
+ 135a: 20 c0 rjmp .+64 ; 0x139c <puts_P+0x5c>\r
+ 135c: c0 e0 ldi r28, 0x00 ; 0\r
+ 135e: d0 e0 ldi r29, 0x00 ; 0\r
+ 1360: 0c c0 rjmp .+24 ; 0x137a <puts_P+0x3a>\r
+ 1362: db 01 movw r26, r22\r
+ 1364: 18 96 adiw r26, 0x08 ; 8\r
+ 1366: ed 91 ld r30, X+\r
+ 1368: fc 91 ld r31, X\r
+ 136a: 19 97 sbiw r26, 0x09 ; 9\r
+ 136c: 09 95 icall\r
+ 136e: 00 97 sbiw r24, 0x00 ; 0\r
+ 1370: 11 f0 breq .+4 ; 0x1376 <puts_P+0x36>\r
+ 1372: cf ef ldi r28, 0xFF ; 255\r
+ 1374: df ef ldi r29, 0xFF ; 255\r
+ 1376: 0f 5f subi r16, 0xFF ; 255\r
+ 1378: 1f 4f sbci r17, 0xFF ; 255\r
+ 137a: f8 01 movw r30, r16\r
+ 137c: 84 91 lpm r24, Z+\r
+ 137e: 60 91 3c 01 lds r22, 0x013C\r
+ 1382: 70 91 3d 01 lds r23, 0x013D\r
+ 1386: 88 23 and r24, r24\r
+ 1388: 61 f7 brne .-40 ; 0x1362 <puts_P+0x22>\r
+ 138a: db 01 movw r26, r22\r
+ 138c: 18 96 adiw r26, 0x08 ; 8\r
+ 138e: ed 91 ld r30, X+\r
+ 1390: fc 91 ld r31, X\r
+ 1392: 19 97 sbiw r26, 0x09 ; 9\r
+ 1394: 8a e0 ldi r24, 0x0A ; 10\r
+ 1396: 09 95 icall\r
+ 1398: 00 97 sbiw r24, 0x00 ; 0\r
+ 139a: 11 f0 breq .+4 ; 0x13a0 <puts_P+0x60>\r
+ 139c: cf ef ldi r28, 0xFF ; 255\r
+ 139e: df ef ldi r29, 0xFF ; 255\r
+ 13a0: ce 01 movw r24, r28\r
+ 13a2: df 91 pop r29\r
+ 13a4: cf 91 pop r28\r
+ 13a6: 1f 91 pop r17\r
+ 13a8: 0f 91 pop r16\r
+ 13aa: ff 90 pop r15\r
+ 13ac: ef 90 pop r14\r
+ 13ae: 08 95 ret\r
+\r
+000013b0 <vfprintf>:\r
+ 13b0: 2f 92 push r2\r
+ 13b2: 3f 92 push r3\r
+ 13b4: 4f 92 push r4\r
+ 13b6: 5f 92 push r5\r
+ 13b8: 6f 92 push r6\r
+ 13ba: 7f 92 push r7\r
+ 13bc: 8f 92 push r8\r
+ 13be: 9f 92 push r9\r
+ 13c0: af 92 push r10\r
+ 13c2: bf 92 push r11\r
+ 13c4: cf 92 push r12\r
+ 13c6: df 92 push r13\r
+ 13c8: ef 92 push r14\r
+ 13ca: ff 92 push r15\r
+ 13cc: 0f 93 push r16\r
+ 13ce: 1f 93 push r17\r
+ 13d0: df 93 push r29\r
+ 13d2: cf 93 push r28\r
+ 13d4: cd b7 in r28, 0x3d ; 61\r
+ 13d6: de b7 in r29, 0x3e ; 62\r
+ 13d8: 2c 97 sbiw r28, 0x0c ; 12\r
+ 13da: 0f b6 in r0, 0x3f ; 63\r
+ 13dc: f8 94 cli\r
+ 13de: de bf out 0x3e, r29 ; 62\r
+ 13e0: 0f be out 0x3f, r0 ; 63\r
+ 13e2: cd bf out 0x3d, r28 ; 61\r
+ 13e4: 6c 01 movw r12, r24\r
+ 13e6: 1b 01 movw r2, r22\r
+ 13e8: 8a 01 movw r16, r20\r
+ 13ea: fc 01 movw r30, r24\r
+ 13ec: 17 82 std Z+7, r1 ; 0x07\r
+ 13ee: 16 82 std Z+6, r1 ; 0x06\r
+ 13f0: 83 81 ldd r24, Z+3 ; 0x03\r
+ 13f2: 81 ff sbrs r24, 1\r
+ 13f4: c4 c1 rjmp .+904 ; 0x177e <vfprintf+0x3ce>\r
+ 13f6: 2e 01 movw r4, r28\r
+ 13f8: 08 94 sec\r
+ 13fa: 41 1c adc r4, r1\r
+ 13fc: 51 1c adc r5, r1\r
+ 13fe: f6 01 movw r30, r12\r
+ 1400: 93 81 ldd r25, Z+3 ; 0x03\r
+ 1402: f1 01 movw r30, r2\r
+ 1404: 93 fd sbrc r25, 3\r
+ 1406: 85 91 lpm r24, Z+\r
+ 1408: 93 ff sbrs r25, 3\r
+ 140a: 81 91 ld r24, Z+\r
+ 140c: 1f 01 movw r2, r30\r
+ 140e: 88 23 and r24, r24\r
+ 1410: 09 f4 brne .+2 ; 0x1414 <vfprintf+0x64>\r
+ 1412: b1 c1 rjmp .+866 ; 0x1776 <vfprintf+0x3c6>\r
+ 1414: 85 32 cpi r24, 0x25 ; 37\r
+ 1416: 39 f4 brne .+14 ; 0x1426 <vfprintf+0x76>\r
+ 1418: 93 fd sbrc r25, 3\r
+ 141a: 85 91 lpm r24, Z+\r
+ 141c: 93 ff sbrs r25, 3\r
+ 141e: 81 91 ld r24, Z+\r
+ 1420: 1f 01 movw r2, r30\r
+ 1422: 85 32 cpi r24, 0x25 ; 37\r
+ 1424: 21 f4 brne .+8 ; 0x142e <vfprintf+0x7e>\r
+ 1426: 90 e0 ldi r25, 0x00 ; 0\r
+ 1428: b6 01 movw r22, r12\r
+ 142a: db d1 rcall .+950 ; 0x17e2 <fputc>\r
+ 142c: e8 cf rjmp .-48 ; 0x13fe <vfprintf+0x4e>\r
+ 142e: ee 24 eor r14, r14\r
+ 1430: ff 24 eor r15, r15\r
+ 1432: 20 e0 ldi r18, 0x00 ; 0\r
+ 1434: 20 32 cpi r18, 0x20 ; 32\r
+ 1436: b0 f4 brcc .+44 ; 0x1464 <vfprintf+0xb4>\r
+ 1438: 8b 32 cpi r24, 0x2B ; 43\r
+ 143a: 69 f0 breq .+26 ; 0x1456 <vfprintf+0xa6>\r
+ 143c: 8c 32 cpi r24, 0x2C ; 44\r
+ 143e: 28 f4 brcc .+10 ; 0x144a <vfprintf+0x9a>\r
+ 1440: 80 32 cpi r24, 0x20 ; 32\r
+ 1442: 51 f0 breq .+20 ; 0x1458 <vfprintf+0xa8>\r
+ 1444: 83 32 cpi r24, 0x23 ; 35\r
+ 1446: 71 f4 brne .+28 ; 0x1464 <vfprintf+0xb4>\r
+ 1448: 0b c0 rjmp .+22 ; 0x1460 <vfprintf+0xb0>\r
+ 144a: 8d 32 cpi r24, 0x2D ; 45\r
+ 144c: 39 f0 breq .+14 ; 0x145c <vfprintf+0xac>\r
+ 144e: 80 33 cpi r24, 0x30 ; 48\r
+ 1450: 49 f4 brne .+18 ; 0x1464 <vfprintf+0xb4>\r
+ 1452: 21 60 ori r18, 0x01 ; 1\r
+ 1454: 2c c0 rjmp .+88 ; 0x14ae <vfprintf+0xfe>\r
+ 1456: 22 60 ori r18, 0x02 ; 2\r
+ 1458: 24 60 ori r18, 0x04 ; 4\r
+ 145a: 29 c0 rjmp .+82 ; 0x14ae <vfprintf+0xfe>\r
+ 145c: 28 60 ori r18, 0x08 ; 8\r
+ 145e: 27 c0 rjmp .+78 ; 0x14ae <vfprintf+0xfe>\r
+ 1460: 20 61 ori r18, 0x10 ; 16\r
+ 1462: 25 c0 rjmp .+74 ; 0x14ae <vfprintf+0xfe>\r
+ 1464: 27 fd sbrc r18, 7\r
+ 1466: 2c c0 rjmp .+88 ; 0x14c0 <vfprintf+0x110>\r
+ 1468: 38 2f mov r19, r24\r
+ 146a: 30 53 subi r19, 0x30 ; 48\r
+ 146c: 3a 30 cpi r19, 0x0A ; 10\r
+ 146e: 98 f4 brcc .+38 ; 0x1496 <vfprintf+0xe6>\r
+ 1470: 26 ff sbrs r18, 6\r
+ 1472: 08 c0 rjmp .+16 ; 0x1484 <vfprintf+0xd4>\r
+ 1474: 8e 2d mov r24, r14\r
+ 1476: 88 0f add r24, r24\r
+ 1478: e8 2e mov r14, r24\r
+ 147a: ee 0c add r14, r14\r
+ 147c: ee 0c add r14, r14\r
+ 147e: e8 0e add r14, r24\r
+ 1480: e3 0e add r14, r19\r
+ 1482: 15 c0 rjmp .+42 ; 0x14ae <vfprintf+0xfe>\r
+ 1484: 8f 2d mov r24, r15\r
+ 1486: 88 0f add r24, r24\r
+ 1488: f8 2e mov r15, r24\r
+ 148a: ff 0c add r15, r15\r
+ 148c: ff 0c add r15, r15\r
+ 148e: f8 0e add r15, r24\r
+ 1490: f3 0e add r15, r19\r
+ 1492: 20 62 ori r18, 0x20 ; 32\r
+ 1494: 0c c0 rjmp .+24 ; 0x14ae <vfprintf+0xfe>\r
+ 1496: 8e 32 cpi r24, 0x2E ; 46\r
+ 1498: 21 f4 brne .+8 ; 0x14a2 <vfprintf+0xf2>\r
+ 149a: 26 fd sbrc r18, 6\r
+ 149c: 6c c1 rjmp .+728 ; 0x1776 <vfprintf+0x3c6>\r
+ 149e: 20 64 ori r18, 0x40 ; 64\r
+ 14a0: 06 c0 rjmp .+12 ; 0x14ae <vfprintf+0xfe>\r
+ 14a2: 8c 36 cpi r24, 0x6C ; 108\r
+ 14a4: 11 f4 brne .+4 ; 0x14aa <vfprintf+0xfa>\r
+ 14a6: 20 68 ori r18, 0x80 ; 128\r
+ 14a8: 02 c0 rjmp .+4 ; 0x14ae <vfprintf+0xfe>\r
+ 14aa: 88 36 cpi r24, 0x68 ; 104\r
+ 14ac: 49 f4 brne .+18 ; 0x14c0 <vfprintf+0x110>\r
+ 14ae: f1 01 movw r30, r2\r
+ 14b0: 93 fd sbrc r25, 3\r
+ 14b2: 85 91 lpm r24, Z+\r
+ 14b4: 93 ff sbrs r25, 3\r
+ 14b6: 81 91 ld r24, Z+\r
+ 14b8: 1f 01 movw r2, r30\r
+ 14ba: 88 23 and r24, r24\r
+ 14bc: 09 f0 breq .+2 ; 0x14c0 <vfprintf+0x110>\r
+ 14be: ba cf rjmp .-140 ; 0x1434 <vfprintf+0x84>\r
+ 14c0: 98 2f mov r25, r24\r
+ 14c2: 95 54 subi r25, 0x45 ; 69\r
+ 14c4: 93 30 cpi r25, 0x03 ; 3\r
+ 14c6: 18 f0 brcs .+6 ; 0x14ce <vfprintf+0x11e>\r
+ 14c8: 90 52 subi r25, 0x20 ; 32\r
+ 14ca: 93 30 cpi r25, 0x03 ; 3\r
+ 14cc: 28 f4 brcc .+10 ; 0x14d8 <vfprintf+0x128>\r
+ 14ce: 0c 5f subi r16, 0xFC ; 252\r
+ 14d0: 1f 4f sbci r17, 0xFF ; 255\r
+ 14d2: ff e3 ldi r31, 0x3F ; 63\r
+ 14d4: f9 83 std Y+1, r31 ; 0x01\r
+ 14d6: 0d c0 rjmp .+26 ; 0x14f2 <vfprintf+0x142>\r
+ 14d8: 83 36 cpi r24, 0x63 ; 99\r
+ 14da: 31 f0 breq .+12 ; 0x14e8 <vfprintf+0x138>\r
+ 14dc: 83 37 cpi r24, 0x73 ; 115\r
+ 14de: 71 f0 breq .+28 ; 0x14fc <vfprintf+0x14c>\r
+ 14e0: 83 35 cpi r24, 0x53 ; 83\r
+ 14e2: 09 f0 breq .+2 ; 0x14e6 <vfprintf+0x136>\r
+ 14e4: 5c c0 rjmp .+184 ; 0x159e <vfprintf+0x1ee>\r
+ 14e6: 21 c0 rjmp .+66 ; 0x152a <vfprintf+0x17a>\r
+ 14e8: f8 01 movw r30, r16\r
+ 14ea: 80 81 ld r24, Z\r
+ 14ec: 89 83 std Y+1, r24 ; 0x01\r
+ 14ee: 0e 5f subi r16, 0xFE ; 254\r
+ 14f0: 1f 4f sbci r17, 0xFF ; 255\r
+ 14f2: 42 01 movw r8, r4\r
+ 14f4: 71 e0 ldi r23, 0x01 ; 1\r
+ 14f6: a7 2e mov r10, r23\r
+ 14f8: b1 2c mov r11, r1\r
+ 14fa: 15 c0 rjmp .+42 ; 0x1526 <vfprintf+0x176>\r
+ 14fc: 62 e0 ldi r22, 0x02 ; 2\r
+ 14fe: 66 2e mov r6, r22\r
+ 1500: 71 2c mov r7, r1\r
+ 1502: 60 0e add r6, r16\r
+ 1504: 71 1e adc r7, r17\r
+ 1506: f8 01 movw r30, r16\r
+ 1508: 80 80 ld r8, Z\r
+ 150a: 91 80 ldd r9, Z+1 ; 0x01\r
+ 150c: 26 ff sbrs r18, 6\r
+ 150e: 03 c0 rjmp .+6 ; 0x1516 <vfprintf+0x166>\r
+ 1510: 6e 2d mov r22, r14\r
+ 1512: 70 e0 ldi r23, 0x00 ; 0\r
+ 1514: 02 c0 rjmp .+4 ; 0x151a <vfprintf+0x16a>\r
+ 1516: 6f ef ldi r22, 0xFF ; 255\r
+ 1518: 7f ef ldi r23, 0xFF ; 255\r
+ 151a: c4 01 movw r24, r8\r
+ 151c: 2c 87 std Y+12, r18 ; 0x0c\r
+ 151e: 56 d1 rcall .+684 ; 0x17cc <strnlen>\r
+ 1520: 5c 01 movw r10, r24\r
+ 1522: 83 01 movw r16, r6\r
+ 1524: 2c 85 ldd r18, Y+12 ; 0x0c\r
+ 1526: 2f 77 andi r18, 0x7F ; 127\r
+ 1528: 16 c0 rjmp .+44 ; 0x1556 <vfprintf+0x1a6>\r
+ 152a: 52 e0 ldi r21, 0x02 ; 2\r
+ 152c: 65 2e mov r6, r21\r
+ 152e: 71 2c mov r7, r1\r
+ 1530: 60 0e add r6, r16\r
+ 1532: 71 1e adc r7, r17\r
+ 1534: f8 01 movw r30, r16\r
+ 1536: 80 80 ld r8, Z\r
+ 1538: 91 80 ldd r9, Z+1 ; 0x01\r
+ 153a: 26 ff sbrs r18, 6\r
+ 153c: 03 c0 rjmp .+6 ; 0x1544 <vfprintf+0x194>\r
+ 153e: 6e 2d mov r22, r14\r
+ 1540: 70 e0 ldi r23, 0x00 ; 0\r
+ 1542: 02 c0 rjmp .+4 ; 0x1548 <vfprintf+0x198>\r
+ 1544: 6f ef ldi r22, 0xFF ; 255\r
+ 1546: 7f ef ldi r23, 0xFF ; 255\r
+ 1548: c4 01 movw r24, r8\r
+ 154a: 2c 87 std Y+12, r18 ; 0x0c\r
+ 154c: 34 d1 rcall .+616 ; 0x17b6 <strnlen_P>\r
+ 154e: 5c 01 movw r10, r24\r
+ 1550: 2c 85 ldd r18, Y+12 ; 0x0c\r
+ 1552: 20 68 ori r18, 0x80 ; 128\r
+ 1554: 83 01 movw r16, r6\r
+ 1556: 23 fd sbrc r18, 3\r
+ 1558: 1e c0 rjmp .+60 ; 0x1596 <vfprintf+0x1e6>\r
+ 155a: 07 c0 rjmp .+14 ; 0x156a <vfprintf+0x1ba>\r
+ 155c: 80 e2 ldi r24, 0x20 ; 32\r
+ 155e: 90 e0 ldi r25, 0x00 ; 0\r
+ 1560: b6 01 movw r22, r12\r
+ 1562: 2c 87 std Y+12, r18 ; 0x0c\r
+ 1564: 3e d1 rcall .+636 ; 0x17e2 <fputc>\r
+ 1566: fa 94 dec r15\r
+ 1568: 2c 85 ldd r18, Y+12 ; 0x0c\r
+ 156a: 8f 2d mov r24, r15\r
+ 156c: 90 e0 ldi r25, 0x00 ; 0\r
+ 156e: a8 16 cp r10, r24\r
+ 1570: b9 06 cpc r11, r25\r
+ 1572: a0 f3 brcs .-24 ; 0x155c <vfprintf+0x1ac>\r
+ 1574: 10 c0 rjmp .+32 ; 0x1596 <vfprintf+0x1e6>\r
+ 1576: f4 01 movw r30, r8\r
+ 1578: 27 fd sbrc r18, 7\r
+ 157a: 85 91 lpm r24, Z+\r
+ 157c: 27 ff sbrs r18, 7\r
+ 157e: 81 91 ld r24, Z+\r
+ 1580: 4f 01 movw r8, r30\r
+ 1582: 90 e0 ldi r25, 0x00 ; 0\r
+ 1584: b6 01 movw r22, r12\r
+ 1586: 2c 87 std Y+12, r18 ; 0x0c\r
+ 1588: 2c d1 rcall .+600 ; 0x17e2 <fputc>\r
+ 158a: 2c 85 ldd r18, Y+12 ; 0x0c\r
+ 158c: f1 10 cpse r15, r1\r
+ 158e: fa 94 dec r15\r
+ 1590: 08 94 sec\r
+ 1592: a1 08 sbc r10, r1\r
+ 1594: b1 08 sbc r11, r1\r
+ 1596: a1 14 cp r10, r1\r
+ 1598: b1 04 cpc r11, r1\r
+ 159a: 69 f7 brne .-38 ; 0x1576 <vfprintf+0x1c6>\r
+ 159c: e9 c0 rjmp .+466 ; 0x1770 <vfprintf+0x3c0>\r
+ 159e: 84 36 cpi r24, 0x64 ; 100\r
+ 15a0: 11 f0 breq .+4 ; 0x15a6 <vfprintf+0x1f6>\r
+ 15a2: 89 36 cpi r24, 0x69 ; 105\r
+ 15a4: 41 f5 brne .+80 ; 0x15f6 <vfprintf+0x246>\r
+ 15a6: 27 ff sbrs r18, 7\r
+ 15a8: 08 c0 rjmp .+16 ; 0x15ba <vfprintf+0x20a>\r
+ 15aa: f8 01 movw r30, r16\r
+ 15ac: 60 81 ld r22, Z\r
+ 15ae: 71 81 ldd r23, Z+1 ; 0x01\r
+ 15b0: 82 81 ldd r24, Z+2 ; 0x02\r
+ 15b2: 93 81 ldd r25, Z+3 ; 0x03\r
+ 15b4: 0c 5f subi r16, 0xFC ; 252\r
+ 15b6: 1f 4f sbci r17, 0xFF ; 255\r
+ 15b8: 09 c0 rjmp .+18 ; 0x15cc <vfprintf+0x21c>\r
+ 15ba: f8 01 movw r30, r16\r
+ 15bc: 60 81 ld r22, Z\r
+ 15be: 71 81 ldd r23, Z+1 ; 0x01\r
+ 15c0: 88 27 eor r24, r24\r
+ 15c2: 77 fd sbrc r23, 7\r
+ 15c4: 80 95 com r24\r
+ 15c6: 98 2f mov r25, r24\r
+ 15c8: 0e 5f subi r16, 0xFE ; 254\r
+ 15ca: 1f 4f sbci r17, 0xFF ; 255\r
+ 15cc: 4f e6 ldi r20, 0x6F ; 111\r
+ 15ce: b4 2e mov r11, r20\r
+ 15d0: b2 22 and r11, r18\r
+ 15d2: 97 ff sbrs r25, 7\r
+ 15d4: 09 c0 rjmp .+18 ; 0x15e8 <vfprintf+0x238>\r
+ 15d6: 90 95 com r25\r
+ 15d8: 80 95 com r24\r
+ 15da: 70 95 com r23\r
+ 15dc: 61 95 neg r22\r
+ 15de: 7f 4f sbci r23, 0xFF ; 255\r
+ 15e0: 8f 4f sbci r24, 0xFF ; 255\r
+ 15e2: 9f 4f sbci r25, 0xFF ; 255\r
+ 15e4: f0 e8 ldi r31, 0x80 ; 128\r
+ 15e6: bf 2a or r11, r31\r
+ 15e8: a2 01 movw r20, r4\r
+ 15ea: 2a e0 ldi r18, 0x0A ; 10\r
+ 15ec: 30 e0 ldi r19, 0x00 ; 0\r
+ 15ee: 25 d1 rcall .+586 ; 0x183a <__ultoa_invert>\r
+ 15f0: 78 2e mov r7, r24\r
+ 15f2: 74 18 sub r7, r4\r
+ 15f4: 44 c0 rjmp .+136 ; 0x167e <vfprintf+0x2ce>\r
+ 15f6: 85 37 cpi r24, 0x75 ; 117\r
+ 15f8: 31 f4 brne .+12 ; 0x1606 <vfprintf+0x256>\r
+ 15fa: 3f ee ldi r19, 0xEF ; 239\r
+ 15fc: b3 2e mov r11, r19\r
+ 15fe: b2 22 and r11, r18\r
+ 1600: 2a e0 ldi r18, 0x0A ; 10\r
+ 1602: 30 e0 ldi r19, 0x00 ; 0\r
+ 1604: 25 c0 rjmp .+74 ; 0x1650 <vfprintf+0x2a0>\r
+ 1606: 99 ef ldi r25, 0xF9 ; 249\r
+ 1608: b9 2e mov r11, r25\r
+ 160a: b2 22 and r11, r18\r
+ 160c: 8f 36 cpi r24, 0x6F ; 111\r
+ 160e: c1 f0 breq .+48 ; 0x1640 <vfprintf+0x290>\r
+ 1610: 80 37 cpi r24, 0x70 ; 112\r
+ 1612: 20 f4 brcc .+8 ; 0x161c <vfprintf+0x26c>\r
+ 1614: 88 35 cpi r24, 0x58 ; 88\r
+ 1616: 09 f0 breq .+2 ; 0x161a <vfprintf+0x26a>\r
+ 1618: ae c0 rjmp .+348 ; 0x1776 <vfprintf+0x3c6>\r
+ 161a: 0d c0 rjmp .+26 ; 0x1636 <vfprintf+0x286>\r
+ 161c: 80 37 cpi r24, 0x70 ; 112\r
+ 161e: 21 f0 breq .+8 ; 0x1628 <vfprintf+0x278>\r
+ 1620: 88 37 cpi r24, 0x78 ; 120\r
+ 1622: 09 f0 breq .+2 ; 0x1626 <vfprintf+0x276>\r
+ 1624: a8 c0 rjmp .+336 ; 0x1776 <vfprintf+0x3c6>\r
+ 1626: 02 c0 rjmp .+4 ; 0x162c <vfprintf+0x27c>\r
+ 1628: 20 e1 ldi r18, 0x10 ; 16\r
+ 162a: b2 2a or r11, r18\r
+ 162c: b4 fe sbrs r11, 4\r
+ 162e: 0b c0 rjmp .+22 ; 0x1646 <vfprintf+0x296>\r
+ 1630: 84 e0 ldi r24, 0x04 ; 4\r
+ 1632: b8 2a or r11, r24\r
+ 1634: 08 c0 rjmp .+16 ; 0x1646 <vfprintf+0x296>\r
+ 1636: b4 fe sbrs r11, 4\r
+ 1638: 09 c0 rjmp .+18 ; 0x164c <vfprintf+0x29c>\r
+ 163a: e6 e0 ldi r30, 0x06 ; 6\r
+ 163c: be 2a or r11, r30\r
+ 163e: 06 c0 rjmp .+12 ; 0x164c <vfprintf+0x29c>\r
+ 1640: 28 e0 ldi r18, 0x08 ; 8\r
+ 1642: 30 e0 ldi r19, 0x00 ; 0\r
+ 1644: 05 c0 rjmp .+10 ; 0x1650 <vfprintf+0x2a0>\r
+ 1646: 20 e1 ldi r18, 0x10 ; 16\r
+ 1648: 30 e0 ldi r19, 0x00 ; 0\r
+ 164a: 02 c0 rjmp .+4 ; 0x1650 <vfprintf+0x2a0>\r
+ 164c: 20 e1 ldi r18, 0x10 ; 16\r
+ 164e: 32 e0 ldi r19, 0x02 ; 2\r
+ 1650: b7 fe sbrs r11, 7\r
+ 1652: 08 c0 rjmp .+16 ; 0x1664 <vfprintf+0x2b4>\r
+ 1654: f8 01 movw r30, r16\r
+ 1656: 60 81 ld r22, Z\r
+ 1658: 71 81 ldd r23, Z+1 ; 0x01\r
+ 165a: 82 81 ldd r24, Z+2 ; 0x02\r
+ 165c: 93 81 ldd r25, Z+3 ; 0x03\r
+ 165e: 0c 5f subi r16, 0xFC ; 252\r
+ 1660: 1f 4f sbci r17, 0xFF ; 255\r
+ 1662: 07 c0 rjmp .+14 ; 0x1672 <vfprintf+0x2c2>\r
+ 1664: f8 01 movw r30, r16\r
+ 1666: 60 81 ld r22, Z\r
+ 1668: 71 81 ldd r23, Z+1 ; 0x01\r
+ 166a: 80 e0 ldi r24, 0x00 ; 0\r
+ 166c: 90 e0 ldi r25, 0x00 ; 0\r
+ 166e: 0e 5f subi r16, 0xFE ; 254\r
+ 1670: 1f 4f sbci r17, 0xFF ; 255\r
+ 1672: a2 01 movw r20, r4\r
+ 1674: e2 d0 rcall .+452 ; 0x183a <__ultoa_invert>\r
+ 1676: 78 2e mov r7, r24\r
+ 1678: 74 18 sub r7, r4\r
+ 167a: ff e7 ldi r31, 0x7F ; 127\r
+ 167c: bf 22 and r11, r31\r
+ 167e: b6 fe sbrs r11, 6\r
+ 1680: 0b c0 rjmp .+22 ; 0x1698 <vfprintf+0x2e8>\r
+ 1682: 2e ef ldi r18, 0xFE ; 254\r
+ 1684: b2 22 and r11, r18\r
+ 1686: 7e 14 cp r7, r14\r
+ 1688: 38 f4 brcc .+14 ; 0x1698 <vfprintf+0x2e8>\r
+ 168a: b4 fe sbrs r11, 4\r
+ 168c: 07 c0 rjmp .+14 ; 0x169c <vfprintf+0x2ec>\r
+ 168e: b2 fc sbrc r11, 2\r
+ 1690: 05 c0 rjmp .+10 ; 0x169c <vfprintf+0x2ec>\r
+ 1692: 8f ee ldi r24, 0xEF ; 239\r
+ 1694: b8 22 and r11, r24\r
+ 1696: 02 c0 rjmp .+4 ; 0x169c <vfprintf+0x2ec>\r
+ 1698: a7 2c mov r10, r7\r
+ 169a: 01 c0 rjmp .+2 ; 0x169e <vfprintf+0x2ee>\r
+ 169c: ae 2c mov r10, r14\r
+ 169e: 8b 2d mov r24, r11\r
+ 16a0: 90 e0 ldi r25, 0x00 ; 0\r
+ 16a2: b4 fe sbrs r11, 4\r
+ 16a4: 0d c0 rjmp .+26 ; 0x16c0 <vfprintf+0x310>\r
+ 16a6: fe 01 movw r30, r28\r
+ 16a8: e7 0d add r30, r7\r
+ 16aa: f1 1d adc r31, r1\r
+ 16ac: 20 81 ld r18, Z\r
+ 16ae: 20 33 cpi r18, 0x30 ; 48\r
+ 16b0: 19 f4 brne .+6 ; 0x16b8 <vfprintf+0x308>\r
+ 16b2: e9 ee ldi r30, 0xE9 ; 233\r
+ 16b4: be 22 and r11, r30\r
+ 16b6: 09 c0 rjmp .+18 ; 0x16ca <vfprintf+0x31a>\r
+ 16b8: a3 94 inc r10\r
+ 16ba: b2 fe sbrs r11, 2\r
+ 16bc: 06 c0 rjmp .+12 ; 0x16ca <vfprintf+0x31a>\r
+ 16be: 04 c0 rjmp .+8 ; 0x16c8 <vfprintf+0x318>\r
+ 16c0: 86 78 andi r24, 0x86 ; 134\r
+ 16c2: 90 70 andi r25, 0x00 ; 0\r
+ 16c4: 00 97 sbiw r24, 0x00 ; 0\r
+ 16c6: 09 f0 breq .+2 ; 0x16ca <vfprintf+0x31a>\r
+ 16c8: a3 94 inc r10\r
+ 16ca: 8b 2c mov r8, r11\r
+ 16cc: 99 24 eor r9, r9\r
+ 16ce: b3 fc sbrc r11, 3\r
+ 16d0: 13 c0 rjmp .+38 ; 0x16f8 <vfprintf+0x348>\r
+ 16d2: b0 fe sbrs r11, 0\r
+ 16d4: 0e c0 rjmp .+28 ; 0x16f2 <vfprintf+0x342>\r
+ 16d6: af 14 cp r10, r15\r
+ 16d8: 28 f4 brcc .+10 ; 0x16e4 <vfprintf+0x334>\r
+ 16da: e7 2c mov r14, r7\r
+ 16dc: ef 0c add r14, r15\r
+ 16de: ea 18 sub r14, r10\r
+ 16e0: af 2c mov r10, r15\r
+ 16e2: 07 c0 rjmp .+14 ; 0x16f2 <vfprintf+0x342>\r
+ 16e4: e7 2c mov r14, r7\r
+ 16e6: 05 c0 rjmp .+10 ; 0x16f2 <vfprintf+0x342>\r
+ 16e8: 80 e2 ldi r24, 0x20 ; 32\r
+ 16ea: 90 e0 ldi r25, 0x00 ; 0\r
+ 16ec: b6 01 movw r22, r12\r
+ 16ee: 79 d0 rcall .+242 ; 0x17e2 <fputc>\r
+ 16f0: a3 94 inc r10\r
+ 16f2: af 14 cp r10, r15\r
+ 16f4: c8 f3 brcs .-14 ; 0x16e8 <vfprintf+0x338>\r
+ 16f6: 04 c0 rjmp .+8 ; 0x1700 <vfprintf+0x350>\r
+ 16f8: af 14 cp r10, r15\r
+ 16fa: 10 f4 brcc .+4 ; 0x1700 <vfprintf+0x350>\r
+ 16fc: fa 18 sub r15, r10\r
+ 16fe: 01 c0 rjmp .+2 ; 0x1702 <vfprintf+0x352>\r
+ 1700: ff 24 eor r15, r15\r
+ 1702: 84 fe sbrs r8, 4\r
+ 1704: 0e c0 rjmp .+28 ; 0x1722 <vfprintf+0x372>\r
+ 1706: 80 e3 ldi r24, 0x30 ; 48\r
+ 1708: 90 e0 ldi r25, 0x00 ; 0\r
+ 170a: b6 01 movw r22, r12\r
+ 170c: 6a d0 rcall .+212 ; 0x17e2 <fputc>\r
+ 170e: 82 fe sbrs r8, 2\r
+ 1710: 1d c0 rjmp .+58 ; 0x174c <vfprintf+0x39c>\r
+ 1712: 81 fe sbrs r8, 1\r
+ 1714: 03 c0 rjmp .+6 ; 0x171c <vfprintf+0x36c>\r
+ 1716: 88 e5 ldi r24, 0x58 ; 88\r
+ 1718: 90 e0 ldi r25, 0x00 ; 0\r
+ 171a: 10 c0 rjmp .+32 ; 0x173c <vfprintf+0x38c>\r
+ 171c: 88 e7 ldi r24, 0x78 ; 120\r
+ 171e: 90 e0 ldi r25, 0x00 ; 0\r
+ 1720: 0d c0 rjmp .+26 ; 0x173c <vfprintf+0x38c>\r
+ 1722: c4 01 movw r24, r8\r
+ 1724: 86 78 andi r24, 0x86 ; 134\r
+ 1726: 90 70 andi r25, 0x00 ; 0\r
+ 1728: 00 97 sbiw r24, 0x00 ; 0\r
+ 172a: 81 f0 breq .+32 ; 0x174c <vfprintf+0x39c>\r
+ 172c: 81 fc sbrc r8, 1\r
+ 172e: 02 c0 rjmp .+4 ; 0x1734 <vfprintf+0x384>\r
+ 1730: 80 e2 ldi r24, 0x20 ; 32\r
+ 1732: 01 c0 rjmp .+2 ; 0x1736 <vfprintf+0x386>\r
+ 1734: 8b e2 ldi r24, 0x2B ; 43\r
+ 1736: b7 fc sbrc r11, 7\r
+ 1738: 8d e2 ldi r24, 0x2D ; 45\r
+ 173a: 90 e0 ldi r25, 0x00 ; 0\r
+ 173c: b6 01 movw r22, r12\r
+ 173e: 51 d0 rcall .+162 ; 0x17e2 <fputc>\r
+ 1740: 05 c0 rjmp .+10 ; 0x174c <vfprintf+0x39c>\r
+ 1742: 80 e3 ldi r24, 0x30 ; 48\r
+ 1744: 90 e0 ldi r25, 0x00 ; 0\r
+ 1746: b6 01 movw r22, r12\r
+ 1748: 4c d0 rcall .+152 ; 0x17e2 <fputc>\r
+ 174a: ea 94 dec r14\r
+ 174c: 7e 14 cp r7, r14\r
+ 174e: c8 f3 brcs .-14 ; 0x1742 <vfprintf+0x392>\r
+ 1750: 7a 94 dec r7\r
+ 1752: f2 01 movw r30, r4\r
+ 1754: e7 0d add r30, r7\r
+ 1756: f1 1d adc r31, r1\r
+ 1758: 80 81 ld r24, Z\r
+ 175a: 90 e0 ldi r25, 0x00 ; 0\r
+ 175c: b6 01 movw r22, r12\r
+ 175e: 41 d0 rcall .+130 ; 0x17e2 <fputc>\r
+ 1760: 77 20 and r7, r7\r
+ 1762: b1 f7 brne .-20 ; 0x1750 <vfprintf+0x3a0>\r
+ 1764: 05 c0 rjmp .+10 ; 0x1770 <vfprintf+0x3c0>\r
+ 1766: 80 e2 ldi r24, 0x20 ; 32\r
+ 1768: 90 e0 ldi r25, 0x00 ; 0\r
+ 176a: b6 01 movw r22, r12\r
+ 176c: 3a d0 rcall .+116 ; 0x17e2 <fputc>\r
+ 176e: fa 94 dec r15\r
+ 1770: ff 20 and r15, r15\r
+ 1772: c9 f7 brne .-14 ; 0x1766 <vfprintf+0x3b6>\r
+ 1774: 44 ce rjmp .-888 ; 0x13fe <vfprintf+0x4e>\r
+ 1776: f6 01 movw r30, r12\r
+ 1778: 26 81 ldd r18, Z+6 ; 0x06\r
+ 177a: 37 81 ldd r19, Z+7 ; 0x07\r
+ 177c: 02 c0 rjmp .+4 ; 0x1782 <vfprintf+0x3d2>\r
+ 177e: 2f ef ldi r18, 0xFF ; 255\r
+ 1780: 3f ef ldi r19, 0xFF ; 255\r
+ 1782: c9 01 movw r24, r18\r
+ 1784: 2c 96 adiw r28, 0x0c ; 12\r
+ 1786: 0f b6 in r0, 0x3f ; 63\r
+ 1788: f8 94 cli\r
+ 178a: de bf out 0x3e, r29 ; 62\r
+ 178c: 0f be out 0x3f, r0 ; 63\r
+ 178e: cd bf out 0x3d, r28 ; 61\r
+ 1790: cf 91 pop r28\r
+ 1792: df 91 pop r29\r
+ 1794: 1f 91 pop r17\r
+ 1796: 0f 91 pop r16\r
+ 1798: ff 90 pop r15\r
+ 179a: ef 90 pop r14\r
+ 179c: df 90 pop r13\r
+ 179e: cf 90 pop r12\r
+ 17a0: bf 90 pop r11\r
+ 17a2: af 90 pop r10\r
+ 17a4: 9f 90 pop r9\r
+ 17a6: 8f 90 pop r8\r
+ 17a8: 7f 90 pop r7\r
+ 17aa: 6f 90 pop r6\r
+ 17ac: 5f 90 pop r5\r
+ 17ae: 4f 90 pop r4\r
+ 17b0: 3f 90 pop r3\r
+ 17b2: 2f 90 pop r2\r
+ 17b4: 08 95 ret\r
+\r
+000017b6 <strnlen_P>:\r
+ 17b6: fc 01 movw r30, r24\r
+ 17b8: 05 90 lpm r0, Z+\r
+ 17ba: 61 50 subi r22, 0x01 ; 1\r
+ 17bc: 70 40 sbci r23, 0x00 ; 0\r
+ 17be: 01 10 cpse r0, r1\r
+ 17c0: d8 f7 brcc .-10 ; 0x17b8 <strnlen_P+0x2>\r
+ 17c2: 80 95 com r24\r
+ 17c4: 90 95 com r25\r
+ 17c6: 8e 0f add r24, r30\r
+ 17c8: 9f 1f adc r25, r31\r
+ 17ca: 08 95 ret\r
+\r
+000017cc <strnlen>:\r
+ 17cc: fc 01 movw r30, r24\r
+ 17ce: 61 50 subi r22, 0x01 ; 1\r
+ 17d0: 70 40 sbci r23, 0x00 ; 0\r
+ 17d2: 01 90 ld r0, Z+\r
+ 17d4: 01 10 cpse r0, r1\r
+ 17d6: d8 f7 brcc .-10 ; 0x17ce <strnlen+0x2>\r
+ 17d8: 80 95 com r24\r
+ 17da: 90 95 com r25\r
+ 17dc: 8e 0f add r24, r30\r
+ 17de: 9f 1f adc r25, r31\r
+ 17e0: 08 95 ret\r
+\r
+000017e2 <fputc>:\r
+ 17e2: 0f 93 push r16\r
+ 17e4: 1f 93 push r17\r
+ 17e6: cf 93 push r28\r
+ 17e8: df 93 push r29\r
+ 17ea: 8c 01 movw r16, r24\r
+ 17ec: eb 01 movw r28, r22\r
+ 17ee: 8b 81 ldd r24, Y+3 ; 0x03\r
+ 17f0: 81 ff sbrs r24, 1\r
+ 17f2: 1b c0 rjmp .+54 ; 0x182a <fputc+0x48>\r
+ 17f4: 82 ff sbrs r24, 2\r
+ 17f6: 0d c0 rjmp .+26 ; 0x1812 <fputc+0x30>\r
+ 17f8: 2e 81 ldd r18, Y+6 ; 0x06\r
+ 17fa: 3f 81 ldd r19, Y+7 ; 0x07\r
+ 17fc: 8c 81 ldd r24, Y+4 ; 0x04\r
+ 17fe: 9d 81 ldd r25, Y+5 ; 0x05\r
+ 1800: 28 17 cp r18, r24\r
+ 1802: 39 07 cpc r19, r25\r
+ 1804: 64 f4 brge .+24 ; 0x181e <fputc+0x3c>\r
+ 1806: e8 81 ld r30, Y\r
+ 1808: f9 81 ldd r31, Y+1 ; 0x01\r
+ 180a: 01 93 st Z+, r16\r
+ 180c: f9 83 std Y+1, r31 ; 0x01\r
+ 180e: e8 83 st Y, r30\r
+ 1810: 06 c0 rjmp .+12 ; 0x181e <fputc+0x3c>\r
+ 1812: e8 85 ldd r30, Y+8 ; 0x08\r
+ 1814: f9 85 ldd r31, Y+9 ; 0x09\r
+ 1816: 80 2f mov r24, r16\r
+ 1818: 09 95 icall\r
+ 181a: 00 97 sbiw r24, 0x00 ; 0\r
+ 181c: 31 f4 brne .+12 ; 0x182a <fputc+0x48>\r
+ 181e: 8e 81 ldd r24, Y+6 ; 0x06\r
+ 1820: 9f 81 ldd r25, Y+7 ; 0x07\r
+ 1822: 01 96 adiw r24, 0x01 ; 1\r
+ 1824: 9f 83 std Y+7, r25 ; 0x07\r
+ 1826: 8e 83 std Y+6, r24 ; 0x06\r
+ 1828: 02 c0 rjmp .+4 ; 0x182e <fputc+0x4c>\r
+ 182a: 0f ef ldi r16, 0xFF ; 255\r
+ 182c: 1f ef ldi r17, 0xFF ; 255\r
+ 182e: c8 01 movw r24, r16\r
+ 1830: df 91 pop r29\r
+ 1832: cf 91 pop r28\r
+ 1834: 1f 91 pop r17\r
+ 1836: 0f 91 pop r16\r
+ 1838: 08 95 ret\r
+\r
+0000183a <__ultoa_invert>:\r
+ 183a: fa 01 movw r30, r20\r
+ 183c: aa 27 eor r26, r26\r
+ 183e: 28 30 cpi r18, 0x08 ; 8\r
+ 1840: 51 f1 breq .+84 ; 0x1896 <__ultoa_invert+0x5c>\r
+ 1842: 20 31 cpi r18, 0x10 ; 16\r
+ 1844: 81 f1 breq .+96 ; 0x18a6 <__ultoa_invert+0x6c>\r
+ 1846: e8 94 clt\r
+ 1848: 6f 93 push r22\r
+ 184a: 6e 7f andi r22, 0xFE ; 254\r
+ 184c: 6e 5f subi r22, 0xFE ; 254\r
+ 184e: 7f 4f sbci r23, 0xFF ; 255\r
+ 1850: 8f 4f sbci r24, 0xFF ; 255\r
+ 1852: 9f 4f sbci r25, 0xFF ; 255\r
+ 1854: af 4f sbci r26, 0xFF ; 255\r
+ 1856: b1 e0 ldi r27, 0x01 ; 1\r
+ 1858: 3e d0 rcall .+124 ; 0x18d6 <__ultoa_invert+0x9c>\r
+ 185a: b4 e0 ldi r27, 0x04 ; 4\r
+ 185c: 3c d0 rcall .+120 ; 0x18d6 <__ultoa_invert+0x9c>\r
+ 185e: 67 0f add r22, r23\r
+ 1860: 78 1f adc r23, r24\r
+ 1862: 89 1f adc r24, r25\r
+ 1864: 9a 1f adc r25, r26\r
+ 1866: a1 1d adc r26, r1\r
+ 1868: 68 0f add r22, r24\r
+ 186a: 79 1f adc r23, r25\r
+ 186c: 8a 1f adc r24, r26\r
+ 186e: 91 1d adc r25, r1\r
+ 1870: a1 1d adc r26, r1\r
+ 1872: 6a 0f add r22, r26\r
+ 1874: 71 1d adc r23, r1\r
+ 1876: 81 1d adc r24, r1\r
+ 1878: 91 1d adc r25, r1\r
+ 187a: a1 1d adc r26, r1\r
+ 187c: 20 d0 rcall .+64 ; 0x18be <__ultoa_invert+0x84>\r
+ 187e: 09 f4 brne .+2 ; 0x1882 <__ultoa_invert+0x48>\r
+ 1880: 68 94 set\r
+ 1882: 3f 91 pop r19\r
+ 1884: 2a e0 ldi r18, 0x0A ; 10\r
+ 1886: 26 9f mul r18, r22\r
+ 1888: 11 24 eor r1, r1\r
+ 188a: 30 19 sub r19, r0\r
+ 188c: 30 5d subi r19, 0xD0 ; 208\r
+ 188e: 31 93 st Z+, r19\r
+ 1890: de f6 brtc .-74 ; 0x1848 <__ultoa_invert+0xe>\r
+ 1892: cf 01 movw r24, r30\r
+ 1894: 08 95 ret\r
+ 1896: 46 2f mov r20, r22\r
+ 1898: 47 70 andi r20, 0x07 ; 7\r
+ 189a: 40 5d subi r20, 0xD0 ; 208\r
+ 189c: 41 93 st Z+, r20\r
+ 189e: b3 e0 ldi r27, 0x03 ; 3\r
+ 18a0: 0f d0 rcall .+30 ; 0x18c0 <__ultoa_invert+0x86>\r
+ 18a2: c9 f7 brne .-14 ; 0x1896 <__ultoa_invert+0x5c>\r
+ 18a4: f6 cf rjmp .-20 ; 0x1892 <__ultoa_invert+0x58>\r
+ 18a6: 46 2f mov r20, r22\r
+ 18a8: 4f 70 andi r20, 0x0F ; 15\r
+ 18aa: 40 5d subi r20, 0xD0 ; 208\r
+ 18ac: 4a 33 cpi r20, 0x3A ; 58\r
+ 18ae: 18 f0 brcs .+6 ; 0x18b6 <__ultoa_invert+0x7c>\r
+ 18b0: 49 5d subi r20, 0xD9 ; 217\r
+ 18b2: 31 fd sbrc r19, 1\r
+ 18b4: 40 52 subi r20, 0x20 ; 32\r
+ 18b6: 41 93 st Z+, r20\r
+ 18b8: 02 d0 rcall .+4 ; 0x18be <__ultoa_invert+0x84>\r
+ 18ba: a9 f7 brne .-22 ; 0x18a6 <__ultoa_invert+0x6c>\r
+ 18bc: ea cf rjmp .-44 ; 0x1892 <__ultoa_invert+0x58>\r
+ 18be: b4 e0 ldi r27, 0x04 ; 4\r
+ 18c0: a6 95 lsr r26\r
+ 18c2: 97 95 ror r25\r
+ 18c4: 87 95 ror r24\r
+ 18c6: 77 95 ror r23\r
+ 18c8: 67 95 ror r22\r
+ 18ca: ba 95 dec r27\r
+ 18cc: c9 f7 brne .-14 ; 0x18c0 <__ultoa_invert+0x86>\r
+ 18ce: 00 97 sbiw r24, 0x00 ; 0\r
+ 18d0: 61 05 cpc r22, r1\r
+ 18d2: 71 05 cpc r23, r1\r
+ 18d4: 08 95 ret\r
+ 18d6: 9b 01 movw r18, r22\r
+ 18d8: ac 01 movw r20, r24\r
+ 18da: 0a 2e mov r0, r26\r
+ 18dc: 06 94 lsr r0\r
+ 18de: 57 95 ror r21\r
+ 18e0: 47 95 ror r20\r
+ 18e2: 37 95 ror r19\r
+ 18e4: 27 95 ror r18\r
+ 18e6: ba 95 dec r27\r
+ 18e8: c9 f7 brne .-14 ; 0x18dc <__ultoa_invert+0xa2>\r
+ 18ea: 62 0f add r22, r18\r
+ 18ec: 73 1f adc r23, r19\r
+ 18ee: 84 1f adc r24, r20\r
+ 18f0: 95 1f adc r25, r21\r
+ 18f2: a0 1d adc r26, r0\r
+ 18f4: 08 95 ret\r
+\r
+000018f6 <_exit>:\r
+ 18f6: f8 94 cli\r
+\r
+000018f8 <__stop_program>:\r
+ 18f8: ff cf rjmp .-2 ; 0x18f8 <__stop_program>\r
--- /dev/null
+Archive member included because of file (symbol)\r
+\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o (exit)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ AudioInputHost.o (__do_copy_data)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ ConfigDescriptor.o (__do_clear_bss)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ AudioInputHost.o (__iob)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ AudioInputHost.o (printf_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ AudioInputHost.o (puts_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o) (vfprintf)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eerd_byte_usb1287)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eeupd_byte_usb1287)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (fputc)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (__ultoa_invert)\r
+\r
+Allocating common symbols\r
+Common symbol size file\r
+\r
+USB_IsInitialized 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USARTSerialStream 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+USB_ControlRequest 0x8 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USB_HostState 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+__iob 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+\r
+Discarded input sections\r
+\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .text 0x00000000 0x0 AudioInputHost.o\r
+ .bss 0x00000000 0x0 AudioInputHost.o\r
+ .text 0x00000000 0x0 ConfigDescriptor.o\r
+ .data 0x00000000 0x0 ConfigDescriptor.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_GetDeviceDescriptor\r
+ 0x00000000 0x1c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_GetDeviceStringDescriptor\r
+ 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_ClearPipeStall\r
+ 0x00000000 0x32 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text.Pipe_IsEndpointBound\r
+ 0x00000000 0x5c ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text.Pipe_WaitUntilReady\r
+ 0x00000000 0x5e ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Discard_Stream\r
+ 0x00000000 0x9a ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Null_Stream\r
+ 0x00000000 0x9e ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_Stream_LE\r
+ 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_Stream_BE\r
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_Stream_LE\r
+ 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_Stream_BE\r
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_PStream_LE\r
+ 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_PStream_BE\r
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_EStream_LE\r
+ 0x00000000 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_EStream_BE\r
+ 0x00000000 0xbc ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_EStream_LE\r
+ 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_EStream_BE\r
+ 0x00000000 0xbe ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfType\r
+ 0x00000000 0x4c ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfTypeBefore\r
+ 0x00000000 0x56 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfTypeAfter\r
+ 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_ProcessHIDReport\r
+ 0x00000000 0x766 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_GetHIDReportItemInfo\r
+ 0x00000000 0xb6 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_SetHIDReportItemInfo\r
+ 0x00000000 0xc2 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_GetHIDReportSize\r
+ 0x00000000 0x58 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_getchar_Blocking\r
+ 0x00000000 0x20 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendString_P\r
+ 0x00000000 0x1a ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendString\r
+ 0x00000000 0x1c ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendData\r
+ 0x00000000 0x1e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .text.avr-libc\r
+ 0x00000000 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .text.avr-libc\r
+ 0x00000000 0x24 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ .data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ .bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+\r
+Memory Configuration\r
+\r
+Name Origin Length Attributes\r
+text 0x00000000 0x00020000 xr\r
+data 0x00800100 0x0000ff00 rw !x\r
+eeprom 0x00810000 0x00010000 rw !x\r
+fuse 0x00820000 0x00000400 rw !x\r
+lock 0x00830000 0x00000400 rw !x\r
+signature 0x00840000 0x00000400 rw !x\r
+*default* 0x00000000 0xffffffff\r
+\r
+Linker script and memory map\r
+\r
+Address of section .data set to 0x800100\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+LOAD AudioInputHost.o\r
+LOAD ConfigDescriptor.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/Events.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+LOAD ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+LOAD ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libm.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a\r
+\r
+.hash\r
+ *(.hash)\r
+\r
+.dynsym\r
+ *(.dynsym)\r
+\r
+.dynstr\r
+ *(.dynstr)\r
+\r
+.gnu.version\r
+ *(.gnu.version)\r
+\r
+.gnu.version_d\r
+ *(.gnu.version_d)\r
+\r
+.gnu.version_r\r
+ *(.gnu.version_r)\r
+\r
+.rel.init\r
+ *(.rel.init)\r
+\r
+.rela.init\r
+ *(.rela.init)\r
+\r
+.rel.text\r
+ *(.rel.text)\r
+ *(.rel.text.*)\r
+ *(.rel.gnu.linkonce.t*)\r
+\r
+.rela.text\r
+ *(.rela.text)\r
+ *(.rela.text.*)\r
+ *(.rela.gnu.linkonce.t*)\r
+\r
+.rel.fini\r
+ *(.rel.fini)\r
+\r
+.rela.fini\r
+ *(.rela.fini)\r
+\r
+.rel.rodata\r
+ *(.rel.rodata)\r
+ *(.rel.rodata.*)\r
+ *(.rel.gnu.linkonce.r*)\r
+\r
+.rela.rodata\r
+ *(.rela.rodata)\r
+ *(.rela.rodata.*)\r
+ *(.rela.gnu.linkonce.r*)\r
+\r
+.rel.data\r
+ *(.rel.data)\r
+ *(.rel.data.*)\r
+ *(.rel.gnu.linkonce.d*)\r
+\r
+.rela.data\r
+ *(.rela.data)\r
+ *(.rela.data.*)\r
+ *(.rela.gnu.linkonce.d*)\r
+\r
+.rel.ctors\r
+ *(.rel.ctors)\r
+\r
+.rela.ctors\r
+ *(.rela.ctors)\r
+\r
+.rel.dtors\r
+ *(.rel.dtors)\r
+\r
+.rela.dtors\r
+ *(.rela.dtors)\r
+\r
+.rel.got\r
+ *(.rel.got)\r
+\r
+.rela.got\r
+ *(.rela.got)\r
+\r
+.rel.bss\r
+ *(.rel.bss)\r
+\r
+.rela.bss\r
+ *(.rela.bss)\r
+\r
+.rel.plt\r
+ *(.rel.plt)\r
+\r
+.rela.plt\r
+ *(.rela.plt)\r
+\r
+.text 0x00000000 0x18fa\r
+ *(.vectors)\r
+ .vectors 0x00000000 0x98 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ 0x00000000 __vector_default\r
+ 0x00000000 __vectors\r
+ *(.vectors)\r
+ *(.progmem.gcc*)\r
+ *(.progmem*)\r
+ .progmem.data 0x00000098 0x20b AudioInputHost.o\r
+ 0x000002a4 . = ALIGN (0x2)\r
+ *fill* 0x000002a3 0x1 00\r
+ 0x000002a4 __trampolines_start = .\r
+ *(.trampolines)\r
+ .trampolines 0x000002a4 0x0 linker stubs\r
+ *(.trampolines*)\r
+ 0x000002a4 __trampolines_end = .\r
+ *(.jumptables)\r
+ *(.jumptables*)\r
+ *(.lowtext)\r
+ *(.lowtext*)\r
+ 0x000002a4 __ctors_start = .\r
+ *(.ctors)\r
+ 0x000002a4 __ctors_end = .\r
+ 0x000002a4 __dtors_start = .\r
+ *(.dtors)\r
+ 0x000002a4 __dtors_end = .\r
+ SORT(*)(.ctors)\r
+ SORT(*)(.dtors)\r
+ *(.init0)\r
+ .init0 0x000002a4 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ 0x000002a4 __init\r
+ *(.init0)\r
+ *(.init1)\r
+ *(.init1)\r
+ *(.init2)\r
+ .init2 0x000002a4 0xc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ *(.init2)\r
+ *(.init3)\r
+ *(.init3)\r
+ *(.init4)\r
+ .init4 0x000002b0 0x1a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ 0x000002b0 __do_copy_data\r
+ .init4 0x000002ca 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ 0x000002ca __do_clear_bss\r
+ *(.init4)\r
+ *(.init5)\r
+ *(.init5)\r
+ *(.init6)\r
+ *(.init6)\r
+ *(.init7)\r
+ *(.init7)\r
+ *(.init8)\r
+ *(.init8)\r
+ *(.init9)\r
+ .init9 0x000002da 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ *(.init9)\r
+ *(.text)\r
+ .text 0x000002e0 0x2 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ 0x000002e0 __vector_22\r
+ 0x000002e0 __vector_28\r
+ 0x000002e0 __vector_1\r
+ 0x000002e0 __vector_32\r
+ 0x000002e0 __vector_34\r
+ 0x000002e0 __vector_24\r
+ 0x000002e0 __vector_12\r
+ 0x000002e0 __bad_interrupt\r
+ 0x000002e0 __vector_6\r
+ 0x000002e0 __vector_31\r
+ 0x000002e0 __vector_35\r
+ 0x000002e0 __vector_3\r
+ 0x000002e0 __vector_23\r
+ 0x000002e0 __vector_30\r
+ 0x000002e0 __vector_25\r
+ 0x000002e0 __vector_11\r
+ 0x000002e0 __vector_13\r
+ 0x000002e0 __vector_17\r
+ 0x000002e0 __vector_19\r
+ 0x000002e0 __vector_7\r
+ 0x000002e0 __vector_27\r
+ 0x000002e0 __vector_5\r
+ 0x000002e0 __vector_33\r
+ 0x000002e0 __vector_37\r
+ 0x000002e0 __vector_4\r
+ 0x000002e0 __vector_9\r
+ 0x000002e0 __vector_2\r
+ 0x000002e0 __vector_15\r
+ 0x000002e0 __vector_36\r
+ 0x000002e0 __vector_29\r
+ 0x000002e0 __vector_8\r
+ 0x000002e0 __vector_26\r
+ 0x000002e0 __vector_14\r
+ 0x000002e0 __vector_16\r
+ 0x000002e0 __vector_18\r
+ 0x000002e0 __vector_20\r
+ 0x000002e2 . = ALIGN (0x2)\r
+ *(.text.*)\r
+ .text.LEDs_SetAllLEDs\r
+ 0x000002e2 0xa AudioInputHost.o\r
+ .text.SetupHardware\r
+ 0x000002ec 0x92 AudioInputHost.o\r
+ 0x000002ec SetupHardware\r
+ .text.EVENT_USB_Host_DeviceAttached\r
+ 0x0000037e 0xa AudioInputHost.o\r
+ 0x0000037e EVENT_USB_Host_DeviceAttached\r
+ .text.EVENT_USB_Host_DeviceUnattached\r
+ 0x00000388 0xa AudioInputHost.o\r
+ 0x00000388 EVENT_USB_Host_DeviceUnattached\r
+ .text.EVENT_USB_Host_DeviceEnumerationComplete\r
+ 0x00000392 0x4 AudioInputHost.o\r
+ 0x00000392 EVENT_USB_Host_DeviceEnumerationComplete\r
+ .text.EVENT_USB_Host_HostError\r
+ 0x00000396 0x3e AudioInputHost.o\r
+ 0x00000396 EVENT_USB_Host_HostError\r
+ .text.EVENT_USB_Host_DeviceEnumerationFailed\r
+ 0x000003d4 0x50 AudioInputHost.o\r
+ 0x000003d4 EVENT_USB_Host_DeviceEnumerationFailed\r
+ .text.Audio_Task\r
+ 0x00000424 0x134 AudioInputHost.o\r
+ 0x00000424 Audio_Task\r
+ .text.main 0x00000558 0x14 AudioInputHost.o\r
+ 0x00000558 main\r
+ .text.__vector_21\r
+ 0x0000056c 0xd2 AudioInputHost.o\r
+ 0x0000056c __vector_21\r
+ .text.DComp_NextAudioControlInterface\r
+ 0x0000063e 0x22 ConfigDescriptor.o\r
+ 0x0000063e DComp_NextAudioControlInterface\r
+ .text.DComp_NextAudioStreamInterface\r
+ 0x00000660 0x22 ConfigDescriptor.o\r
+ 0x00000660 DComp_NextAudioStreamInterface\r
+ .text.DComp_NextAudioInterfaceDataEndpoint\r
+ 0x00000682 0x22 ConfigDescriptor.o\r
+ 0x00000682 DComp_NextAudioInterfaceDataEndpoint\r
+ .text.ProcessConfigurationDescriptor\r
+ 0x000006a4 0x132 ConfigDescriptor.o\r
+ 0x000006a4 ProcessConfigurationDescriptor\r
+ .text.USB_Host_ResetDevice\r
+ 0x000007d6 0xa8 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_WaitMS\r
+ 0x0000087e 0xaa ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ 0x0000087e USB_Host_WaitMS\r
+ .text.USB_Host_ProcessNextHostState\r
+ 0x00000928 0x264 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ 0x00000928 USB_Host_ProcessNextHostState\r
+ .text.USB_Host_SetDeviceConfiguration\r
+ 0x00000b8c 0x2c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ 0x00000b8c USB_Host_SetDeviceConfiguration\r
+ .text.USB_Host_SetInterfaceAltSetting\r
+ 0x00000bb8 0x2e ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ 0x00000bb8 USB_Host_SetInterfaceAltSetting\r
+ .text.Pipe_ConfigurePipe\r
+ 0x00000be6 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ 0x00000be6 Pipe_ConfigurePipe\r
+ .text.Pipe_ClearPipes\r
+ 0x00000cb4 0x28 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ 0x00000cb4 Pipe_ClearPipes\r
+ .text.USB_Disable\r
+ 0x00000cdc 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ 0x00000cdc USB_Disable\r
+ .text.USB_ResetInterface\r
+ 0x00000d0c 0x9c ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ 0x00000d0c USB_ResetInterface\r
+ .text.USB_Init\r
+ 0x00000da8 0x12 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ 0x00000da8 USB_Init\r
+ .text.USB_INT_DisableAllInterrupts\r
+ 0x00000dba 0x10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ 0x00000dba USB_INT_DisableAllInterrupts\r
+ .text.USB_INT_ClearAllInterrupts\r
+ 0x00000dca 0xa ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ 0x00000dca USB_INT_ClearAllInterrupts\r
+ .text.__vector_10\r
+ 0x00000dd4 0x126 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ 0x00000dd4 __vector_10\r
+ .text.USB_Host_GetDeviceConfigDescriptor\r
+ 0x00000efa 0xae ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ 0x00000efa USB_Host_GetDeviceConfigDescriptor\r
+ .text.USB_GetNextDescriptorComp\r
+ 0x00000fa8 0x86 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ 0x00000fa8 USB_GetNextDescriptorComp\r
+ .text.USB_Event_Stub\r
+ 0x0000102e 0x2 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ 0x0000102e EVENT_USB_Host_StartOfFrame\r
+ 0x0000102e USB_Event_Stub\r
+ .text.USB_Host_WaitForIOS\r
+ 0x00001030 0x52 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .text.USB_Host_SendControlRequest\r
+ 0x00001082 0x22c ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ 0x00001082 USB_Host_SendControlRequest\r
+ .text.USB_USBTask\r
+ 0x000012ae 0x1c ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ 0x000012ae USB_USBTask\r
+ .text.Serial_putchar\r
+ 0x000012ca 0x12 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ 0x000012ca Serial_putchar\r
+ .text.Serial_getchar\r
+ 0x000012dc 0x26 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ 0x000012dc Serial_getchar\r
+ .text.avr-libc\r
+ 0x00001302 0x3e c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ 0x00001302 printf_P\r
+ .text.avr-libc\r
+ 0x00001340 0x70 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ 0x00001340 puts_P\r
+ .text.avr-libc\r
+ 0x000013b0 0x406 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ 0x000013b0 vfprintf\r
+ .text.avr-libc\r
+ 0x000017b6 0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ 0x000017b6 strnlen_P\r
+ .text.avr-libc\r
+ 0x000017cc 0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ 0x000017cc strnlen\r
+ .text.avr-libc\r
+ 0x000017e2 0x58 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ 0x000017e2 fputc\r
+ .text.avr-libc\r
+ 0x0000183a 0xbc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ 0x0000183a __ultoa_invert\r
+ 0x000018f6 . = ALIGN (0x2)\r
+ *(.fini9)\r
+ .fini9 0x000018f6 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ 0x000018f6 _exit\r
+ 0x000018f6 exit\r
+ *(.fini9)\r
+ *(.fini8)\r
+ *(.fini8)\r
+ *(.fini7)\r
+ *(.fini7)\r
+ *(.fini6)\r
+ *(.fini6)\r
+ *(.fini5)\r
+ *(.fini5)\r
+ *(.fini4)\r
+ *(.fini4)\r
+ *(.fini3)\r
+ *(.fini3)\r
+ *(.fini2)\r
+ *(.fini2)\r
+ *(.fini1)\r
+ *(.fini1)\r
+ *(.fini0)\r
+ .fini0 0x000018f6 0x4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ *(.fini0)\r
+ 0x000018fa _etext = .\r
+\r
+.data 0x00800100 0x1c load address 0x000018fa\r
+ 0x00800100 PROVIDE (__data_start, .)\r
+ *(.data)\r
+ .data 0x00800100 0x3 AudioInputHost.o\r
+ .data 0x00800103 0x18 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .data 0x0080011b 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ 0x0080011b USB_ControlPipeSize\r
+ *(.data*)\r
+ *(.rodata)\r
+ *(.rodata*)\r
+ *(.gnu.linkonce.d*)\r
+ 0x0080011c . = ALIGN (0x2)\r
+ 0x0080011c _edata = .\r
+ 0x0080011c PROVIDE (__data_end, .)\r
+\r
+.bss 0x0080011c 0x24\r
+ 0x0080011c PROVIDE (__bss_start, .)\r
+ *(.bss)\r
+ .bss 0x0080011c 0x3 ConfigDescriptor.o\r
+ 0x0080011c StreamingInterfaceIndex\r
+ 0x0080011d StreamingInterfaceAltSetting\r
+ 0x0080011e StreamingEndpointAddress\r
+ .bss 0x0080011f 0x3 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ *(.bss*)\r
+ *(COMMON)\r
+ COMMON 0x00800122 0xa ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ 0x00800122 USB_IsInitialized\r
+ 0x00800123 USB_ControlRequest\r
+ 0x0080012b USB_HostState\r
+ COMMON 0x0080012c 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ 0x0080012c USARTSerialStream\r
+ COMMON 0x0080013a 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ 0x0080013a __iob\r
+ 0x00800140 PROVIDE (__bss_end, .)\r
+ 0x000018fa __data_load_start = LOADADDR (.data)\r
+ 0x00001916 __data_load_end = (__data_load_start + SIZEOF (.data))\r
+\r
+.noinit 0x00800140 0x0\r
+ 0x00800140 PROVIDE (__noinit_start, .)\r
+ *(.noinit*)\r
+ 0x00800140 PROVIDE (__noinit_end, .)\r
+ 0x00800140 _end = .\r
+ 0x00800140 PROVIDE (__heap_start, .)\r
+\r
+.eeprom 0x00810000 0x0\r
+ *(.eeprom*)\r
+ 0x00810000 __eeprom_end = .\r
+\r
+.fuse\r
+ *(.fuse)\r
+ *(.lfuse)\r
+ *(.hfuse)\r
+ *(.efuse)\r
+\r
+.lock\r
+ *(.lock*)\r
+\r
+.signature\r
+ *(.signature*)\r
+\r
+.stab 0x00000000 0xe28\r
+ *(.stab)\r
+ .stab 0x00000000 0x6cc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .stab 0x000006cc 0x90 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ 0x9c (size before relaxing)\r
+ .stab 0x0000075c 0x114 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ 0x120 (size before relaxing)\r
+ .stab 0x00000870 0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ 0xa8 (size before relaxing)\r
+ .stab 0x0000090c 0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ 0xa8 (size before relaxing)\r
+ .stab 0x000009a8 0x480 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ 0x48c (size before relaxing)\r
+\r
+.stabstr 0x00000000 0x26b\r
+ *(.stabstr)\r
+ .stabstr 0x00000000 0x26b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+\r
+.stab.excl\r
+ *(.stab.excl)\r
+\r
+.stab.exclstr\r
+ *(.stab.exclstr)\r
+\r
+.stab.index\r
+ *(.stab.index)\r
+\r
+.stab.indexstr\r
+ *(.stab.indexstr)\r
+\r
+.comment\r
+ *(.comment)\r
+\r
+.debug\r
+ *(.debug)\r
+\r
+.line\r
+ *(.line)\r
+\r
+.debug_srcinfo\r
+ *(.debug_srcinfo)\r
+\r
+.debug_sfnames\r
+ *(.debug_sfnames)\r
+\r
+.debug_aranges 0x00000000 0x3b0\r
+ *(.debug_aranges)\r
+ .debug_aranges\r
+ 0x00000000 0x68 AudioInputHost.o\r
+ .debug_aranges\r
+ 0x00000068 0x38 ConfigDescriptor.o\r
+ .debug_aranges\r
+ 0x000000a0 0x58 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_aranges\r
+ 0x000000f8 0x38 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_aranges\r
+ 0x00000130 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_aranges\r
+ 0x00000160 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_aranges\r
+ 0x00000190 0x78 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_aranges\r
+ 0x00000208 0x40 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_aranges\r
+ 0x00000248 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_aranges\r
+ 0x00000268 0x28 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_aranges\r
+ 0x00000290 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_aranges\r
+ 0x000002b0 0x38 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_aranges\r
+ 0x000002e8 0x48 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_aranges\r
+ 0x00000330 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_aranges\r
+ 0x00000350 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_aranges\r
+ 0x00000370 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_aranges\r
+ 0x00000390 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_pubnames\r
+ 0x00000000 0x89a\r
+ *(.debug_pubnames)\r
+ .debug_pubnames\r
+ 0x00000000 0x107 AudioInputHost.o\r
+ .debug_pubnames\r
+ 0x00000107 0xff ConfigDescriptor.o\r
+ .debug_pubnames\r
+ 0x00000206 0xf4 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_pubnames\r
+ 0x000002fa 0x86 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_pubnames\r
+ 0x00000380 0x46 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_pubnames\r
+ 0x000003c6 0x62 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_pubnames\r
+ 0x00000428 0x13b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_pubnames\r
+ 0x00000563 0xc2 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_pubnames\r
+ 0x00000625 0x25 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_pubnames\r
+ 0x0000064a 0x32 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_pubnames\r
+ 0x0000067c 0x61 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_pubnames\r
+ 0x000006dd 0x7e ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_pubnames\r
+ 0x0000075b 0xac ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_pubnames\r
+ 0x00000807 0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_pubnames\r
+ 0x00000823 0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_pubnames\r
+ 0x00000842 0x1d c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_pubnames\r
+ 0x0000085f 0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_pubnames\r
+ 0x0000087e 0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_info 0x00000000 0x56c7\r
+ *(.debug_info)\r
+ .debug_info 0x00000000 0x81f AudioInputHost.o\r
+ .debug_info 0x0000081f 0x5dd ConfigDescriptor.o\r
+ .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_info 0x00000dfc 0xc19 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_info 0x00001a15 0x5b1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_info 0x00001fc6 0x409 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_info 0x000023cf 0x495 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_info 0x00002864 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_info 0x00002864 0xac6 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_info 0x0000332a 0x642 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_info 0x0000396c 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_info 0x0000396c 0x85 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_info 0x000039f1 0x62a ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_info 0x0000401b 0x1e8 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_info 0x00004203 0x6f9 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_info 0x000048fc 0x413 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_info 0x00004d0f 0x14f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_info 0x00004e5e 0x1c6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_info 0x00005024 0x1ec c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_info 0x00005210 0x350 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_info 0x00005560 0x167 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ *(.gnu.linkonce.wi.*)\r
+\r
+.debug_abbrev 0x00000000 0x1b65\r
+ *(.debug_abbrev)\r
+ .debug_abbrev 0x00000000 0x334 AudioInputHost.o\r
+ .debug_abbrev 0x00000334 0x185 ConfigDescriptor.o\r
+ .debug_abbrev 0x000004b9 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_abbrev 0x000004ba 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_abbrev 0x000004bb 0x2f6 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_abbrev 0x000007b1 0x1d9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_abbrev 0x0000098a 0x14d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_abbrev 0x00000ad7 0x12a ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_abbrev 0x00000c01 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_abbrev 0x00000c02 0x164 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_abbrev 0x00000d66 0x1ca ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_abbrev 0x00000f30 0x1 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_abbrev 0x00000f31 0x41 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_abbrev 0x00000f72 0x1ea ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_abbrev 0x0000115c 0x11a ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_abbrev 0x00001276 0x1ec ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_abbrev 0x00001462 0x1d1 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_abbrev 0x00001633 0xc5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_abbrev 0x000016f8 0x11c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_abbrev 0x00001814 0x119 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_abbrev 0x0000192d 0x15f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_abbrev 0x00001a8c 0xd9 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_line 0x00000000 0x53bf\r
+ *(.debug_line)\r
+ .debug_line 0x00000000 0x725 AudioInputHost.o\r
+ .debug_line 0x00000725 0x3df ConfigDescriptor.o\r
+ .debug_line 0x00000b04 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_line 0x00000b28 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_line 0x00000b4c 0xa69 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_line 0x000015b5 0x5f9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_line 0x00001bae 0x3f1 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_line 0x00001f9f 0x464 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_line 0x00002403 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_line 0x00002427 0xcf7 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_line 0x0000311e 0x3e3 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_line 0x00003501 0x24 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_line 0x00003525 0x86 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_line 0x000035ab 0x5f5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_line 0x00003ba0 0x1e4 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_line 0x00003d84 0x7b0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_line 0x00004534 0x326 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_line 0x0000485a 0xe5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_line 0x0000493f 0x1a4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_line 0x00004ae3 0x142 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_line 0x00004c25 0x659 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_line 0x0000527e 0x141 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_frame 0x00000000 0x540\r
+ *(.debug_frame)\r
+ .debug_frame 0x00000000 0xb0 AudioInputHost.o\r
+ .debug_frame 0x000000b0 0x50 ConfigDescriptor.o\r
+ .debug_frame 0x00000100 0x90 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_frame 0x00000190 0x50 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_frame 0x000001e0 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_frame 0x00000220 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_frame 0x00000260 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_frame 0x00000330 0x60 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_frame 0x00000390 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_frame 0x000003b0 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_frame 0x000003e0 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_frame 0x00000400 0x50 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_frame 0x00000450 0x70 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_frame 0x000004c0 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_frame 0x000004e0 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_frame 0x00000500 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_frame 0x00000520 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_str 0x00000000 0x26bf\r
+ *(.debug_str)\r
+ .debug_str 0x00000000 0x830 AudioInputHost.o\r
+ 0x8aa (size before relaxing)\r
+ .debug_str 0x00000830 0x53e ConfigDescriptor.o\r
+ 0x7d0 (size before relaxing)\r
+ .debug_str 0x00000d6e 0x6cc ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ 0xbc8 (size before relaxing)\r
+ .debug_str 0x0000143a 0x269 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ 0x5b7 (size before relaxing)\r
+ .debug_str 0x000016a3 0x16d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ 0x516 (size before relaxing)\r
+ .debug_str 0x00001810 0xaf ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ 0x4f5 (size before relaxing)\r
+ .debug_str 0x000018bf 0x260 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ 0x3a4 (size before relaxing)\r
+ .debug_str 0x00001b1f 0x234 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ 0x81e (size before relaxing)\r
+ .debug_str 0x00001d53 0x3a ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ 0x11f (size before relaxing)\r
+ .debug_str 0x00001d8d 0x15b ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ 0x519 (size before relaxing)\r
+ .debug_str 0x00001ee8 0x45 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ 0x1ee (size before relaxing)\r
+ .debug_str 0x00001f2d 0x487 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ 0x60d (size before relaxing)\r
+ .debug_str 0x000023b4 0xfd ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ 0x26d (size before relaxing)\r
+ .debug_str 0x000024b1 0x4b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ 0xef (size before relaxing)\r
+ .debug_str 0x000024fc 0x7a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ 0x126 (size before relaxing)\r
+ .debug_str 0x00002576 0x55 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ 0x120 (size before relaxing)\r
+ .debug_str 0x000025cb 0xa1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ 0x174 (size before relaxing)\r
+ .debug_str 0x0000266c 0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ 0xf8 (size before relaxing)\r
+\r
+.debug_loc 0x00000000 0x3422\r
+ *(.debug_loc)\r
+ .debug_loc 0x00000000 0xff AudioInputHost.o\r
+ .debug_loc 0x000000ff 0x280 ConfigDescriptor.o\r
+ .debug_loc 0x0000037f 0x3de ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_loc 0x0000075d 0x400 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_loc 0x00000b5d 0x13 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_loc 0x00000b70 0x118 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_loc 0x00000c88 0xfe0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_loc 0x00001c68 0x365 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_loc 0x00001fcd 0x2c5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_loc 0x00002292 0x1f ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_loc 0x000022b1 0x832 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_loc 0x00002ae3 0x15e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_loc 0x00002c41 0xe0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_loc 0x00002d21 0x6b1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_loc 0x000033d2 0x50 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_macinfo\r
+ *(.debug_macinfo)\r
+OUTPUT(AudioInputHost.elf elf32-avr)\r
+LOAD linker stubs\r
+\r
+.debug_pubtypes\r
+ 0x00000000 0xa86\r
+ .debug_pubtypes\r
+ 0x00000000 0x117 AudioInputHost.o\r
+ .debug_pubtypes\r
+ 0x00000117 0x179 ConfigDescriptor.o\r
+ .debug_pubtypes\r
+ 0x00000290 0x146 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_pubtypes\r
+ 0x000003d6 0x66 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_pubtypes\r
+ 0x0000043c 0x59 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_pubtypes\r
+ 0x00000495 0x88 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_pubtypes\r
+ 0x0000051d 0x4b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_pubtypes\r
+ 0x00000568 0x17e ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_pubtypes\r
+ 0x000006e6 0x12 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_pubtypes\r
+ 0x000006f8 0xa0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_pubtypes\r
+ 0x00000798 0x44 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_pubtypes\r
+ 0x000007dc 0x145 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_pubtypes\r
+ 0x00000921 0x42 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_pubtypes\r
+ 0x00000963 0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_pubtypes\r
+ 0x0000098c 0x48 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_pubtypes\r
+ 0x000009d4 0x36 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_pubtypes\r
+ 0x00000a0a 0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_pubtypes\r
+ 0x00000a5d 0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_ranges 0x00000000 0x490\r
+ .debug_ranges 0x00000000 0x58 AudioInputHost.o\r
+ .debug_ranges 0x00000058 0x58 ConfigDescriptor.o\r
+ .debug_ranges 0x000000b0 0x60 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_ranges 0x00000110 0xb0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_ranges 0x000001c0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_ranges 0x000001e0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_ranges 0x00000200 0x68 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_ranges 0x00000268 0x30 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_ranges 0x00000298 0x10 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_ranges 0x000002a8 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_ranges 0x000002d8 0x10 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_ranges 0x000002e8 0x100 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_ranges 0x000003e8 0x50 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_ranges 0x00000438 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_ranges 0x00000448 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_ranges 0x00000458 0x28 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_ranges 0x00000480 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+Cross Reference Table\r
+\r
+Symbol File\r
+Audio_Task AudioInputHost.o\r
+CALLBACK_HIDParser_FilterHIDReportItem ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+DComp_NextAudioControlInterface ConfigDescriptor.o\r
+DComp_NextAudioInterfaceDataEndpoint ConfigDescriptor.o\r
+DComp_NextAudioStreamInterface ConfigDescriptor.o\r
+EVENT_USB_Host_DeviceAttached AudioInputHost.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+EVENT_USB_Host_DeviceEnumerationComplete AudioInputHost.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_DeviceEnumerationFailed AudioInputHost.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_DeviceUnattached AudioInputHost.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_HostError AudioInputHost.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+EVENT_USB_Host_StartOfFrame ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+Pipe_ClearPipes ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+Pipe_ConfigurePipe ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ ConfigDescriptor.o\r
+Pipe_Discard_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_IsEndpointBound ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+Pipe_Null_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_WaitUntilReady ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_PStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_PStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ProcessConfigurationDescriptor ConfigDescriptor.o\r
+ AudioInputHost.o\r
+Serial_SendData ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_SendString ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_SendString_P ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_getchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ AudioInputHost.o\r
+Serial_getchar_Blocking ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_putchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ AudioInputHost.o\r
+SetupHardware AudioInputHost.o\r
+StreamingEndpointAddress ConfigDescriptor.o\r
+ AudioInputHost.o\r
+StreamingInterfaceAltSetting ConfigDescriptor.o\r
+ AudioInputHost.o\r
+StreamingInterfaceIndex ConfigDescriptor.o\r
+ AudioInputHost.o\r
+USARTSerialStream ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ AudioInputHost.o\r
+USB_ControlPipeSize ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_ControlRequest ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+USB_Disable ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ AudioInputHost.o\r
+USB_Event_Stub ../../../../LUFA/Drivers/USB/Core/Events.o\r
+USB_GetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_GetHIDReportSize ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_GetNextDescriptorComp ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ ConfigDescriptor.o\r
+USB_GetNextDescriptorOfType ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_GetNextDescriptorOfTypeAfter ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_GetNextDescriptorOfTypeBefore ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_HostState ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+USB_Host_ClearPipeStall ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_GetDeviceConfigDescriptor ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ ConfigDescriptor.o\r
+USB_Host_GetDeviceDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_GetDeviceStringDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_ProcessNextHostState ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USB_Host_SendControlRequest ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+USB_Host_SetDeviceConfiguration ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+USB_Host_SetInterfaceAltSetting ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+USB_Host_WaitMS ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+USB_INT_ClearAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_INT_DisableAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_Init ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ AudioInputHost.o\r
+USB_IsInitialized ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_ProcessHIDReport ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_ResetInterface ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_SetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_USBTask ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ AudioInputHost.o\r
+__bad_interrupt c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__bss_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+__bss_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+__data_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__data_load_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__data_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__do_clear_bss c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ ConfigDescriptor.o\r
+__do_copy_data c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ AudioInputHost.o\r
+__eerd_byte_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+__eeupd_byte_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+__eeupd_r18_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+__heap_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__init c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__iob c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ AudioInputHost.o\r
+__stack c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__ultoa_invert c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+__vector_1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_11 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_12 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_13 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_14 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_15 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_17 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_18 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_19 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_2 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_21 AudioInputHost.o\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_22 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_23 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_24 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_25 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_26 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_27 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_28 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_3 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_30 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_31 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_32 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_33 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_34 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_35 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_36 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_37 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_7 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_8 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_9 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_default c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vectors c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+_exit c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+exit c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+fputc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+main AudioInputHost.o\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+printf_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ AudioInputHost.o\r
+puts_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ AudioInputHost.o\r
+strnlen c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+strnlen_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+vfprintf c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r