From 78cfaac9b4fc9ae15652f18e9abb79dcedfcd4b5 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 30 May 2011 09:37:31 +0000 Subject: [PATCH] Remove output files from the incomplete AudioInputHost demo, and improve the logic in the ConfigDescriptor.c device configuration processing routine. --- .../AudioInputHost/AudioInputHost.eep | 1 - .../AudioInputHost/AudioInputHost.elf | Bin 101354 -> 0 bytes .../AudioInputHost/AudioInputHost.hex | 403 -- .../AudioInputHost/AudioInputHost.lss | 5024 ----------------- .../AudioInputHost/AudioInputHost.lst | 853 --- .../AudioInputHost/AudioInputHost.map | 1169 ---- .../AudioInputHost/AudioInputHost.sym | 267 - .../AudioInputHost/ConfigDescriptor.c | 59 +- .../AudioInputHost/ConfigDescriptor.lst | 400 -- .../AudioInputHost/ConfigDescriptor.o | Bin 13752 -> 0 bytes 10 files changed, 48 insertions(+), 8128 deletions(-) delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map delete mode 100644 Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym delete mode 100644 Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst delete mode 100644 Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep deleted file mode 100644 index 1996e8fde5..0000000000 --- a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep +++ /dev/null @@ -1 +0,0 @@ -:00000001FF diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf deleted file mode 100644 index a41d735eb1b638376cdbd56549ea7dd941423f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101354 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: - 0: 51 c1 rjmp .+674 ; 0x2a4 <__ctors_end> - 2: 00 00 nop - 4: 6d c1 rjmp .+730 ; 0x2e0 <__bad_interrupt> - 6: 00 00 nop - 8: 6b c1 rjmp .+726 ; 0x2e0 <__bad_interrupt> - a: 00 00 nop - c: 69 c1 rjmp .+722 ; 0x2e0 <__bad_interrupt> - e: 00 00 nop - 10: 67 c1 rjmp .+718 ; 0x2e0 <__bad_interrupt> - 12: 00 00 nop - 14: 65 c1 rjmp .+714 ; 0x2e0 <__bad_interrupt> - 16: 00 00 nop - 18: 63 c1 rjmp .+710 ; 0x2e0 <__bad_interrupt> - 1a: 00 00 nop - 1c: 61 c1 rjmp .+706 ; 0x2e0 <__bad_interrupt> - 1e: 00 00 nop - 20: 5f c1 rjmp .+702 ; 0x2e0 <__bad_interrupt> - 22: 00 00 nop - 24: 5d c1 rjmp .+698 ; 0x2e0 <__bad_interrupt> - 26: 00 00 nop - 28: d5 c6 rjmp .+3498 ; 0xdd4 <__vector_10> - 2a: 00 00 nop - 2c: 59 c1 rjmp .+690 ; 0x2e0 <__bad_interrupt> - 2e: 00 00 nop - 30: 57 c1 rjmp .+686 ; 0x2e0 <__bad_interrupt> - 32: 00 00 nop - 34: 55 c1 rjmp .+682 ; 0x2e0 <__bad_interrupt> - 36: 00 00 nop - 38: 53 c1 rjmp .+678 ; 0x2e0 <__bad_interrupt> - 3a: 00 00 nop - 3c: 51 c1 rjmp .+674 ; 0x2e0 <__bad_interrupt> - 3e: 00 00 nop - 40: 4f c1 rjmp .+670 ; 0x2e0 <__bad_interrupt> - 42: 00 00 nop - 44: 4d c1 rjmp .+666 ; 0x2e0 <__bad_interrupt> - 46: 00 00 nop - 48: 4b c1 rjmp .+662 ; 0x2e0 <__bad_interrupt> - 4a: 00 00 nop - 4c: 49 c1 rjmp .+658 ; 0x2e0 <__bad_interrupt> - 4e: 00 00 nop - 50: 47 c1 rjmp .+654 ; 0x2e0 <__bad_interrupt> - 52: 00 00 nop - 54: 8b c2 rjmp .+1302 ; 0x56c <__vector_21> - 56: 00 00 nop - 58: 43 c1 rjmp .+646 ; 0x2e0 <__bad_interrupt> - 5a: 00 00 nop - 5c: 41 c1 rjmp .+642 ; 0x2e0 <__bad_interrupt> - 5e: 00 00 nop - 60: 3f c1 rjmp .+638 ; 0x2e0 <__bad_interrupt> - 62: 00 00 nop - 64: 3d c1 rjmp .+634 ; 0x2e0 <__bad_interrupt> - 66: 00 00 nop - 68: 3b c1 rjmp .+630 ; 0x2e0 <__bad_interrupt> - 6a: 00 00 nop - 6c: 39 c1 rjmp .+626 ; 0x2e0 <__bad_interrupt> - 6e: 00 00 nop - 70: 37 c1 rjmp .+622 ; 0x2e0 <__bad_interrupt> - 72: 00 00 nop - 74: 35 c1 rjmp .+618 ; 0x2e0 <__bad_interrupt> - 76: 00 00 nop - 78: 33 c1 rjmp .+614 ; 0x2e0 <__bad_interrupt> - 7a: 00 00 nop - 7c: 31 c1 rjmp .+610 ; 0x2e0 <__bad_interrupt> - 7e: 00 00 nop - 80: 2f c1 rjmp .+606 ; 0x2e0 <__bad_interrupt> - 82: 00 00 nop - 84: 2d c1 rjmp .+602 ; 0x2e0 <__bad_interrupt> - 86: 00 00 nop - 88: 2b c1 rjmp .+598 ; 0x2e0 <__bad_interrupt> - 8a: 00 00 nop - 8c: 29 c1 rjmp .+594 ; 0x2e0 <__bad_interrupt> - 8e: 00 00 nop - 90: 27 c1 rjmp .+590 ; 0x2e0 <__bad_interrupt> - 92: 00 00 nop - 94: 25 c1 rjmp .+586 ; 0x2e0 <__bad_interrupt> - 96: 00 00 nop - -00000098 <__c.3939>: - 98: 4d 69 63 72 6f 70 68 6f 6e 65 20 45 6e 75 6d 65 Microphone Enume - a8: 72 61 74 65 64 2e 0d 0a 00 rated.... - -000000b1 <__c.3935>: - b1: 1b 5b 33 31 6d 43 6f 75 6c 64 20 6e 6f 74 20 73 .[31mCould not s - c1: 65 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 73 et alternative s - d1: 74 72 65 61 6d 69 6e 67 20 69 6e 74 65 72 66 61 treaming interfa - e1: 63 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 2d 2d ce setting... -- - f1: 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 25 64 0d Error Code: %d. - 101: 0a 1b 5b 33 37 6d 00 ..[37m. - -00000108 <__c.3933>: - 108: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err - 118: 6f 72 20 28 53 65 74 20 43 6f 6e 66 69 67 75 72 or (Set Configur - 128: 61 74 69 6f 6e 29 2e 0d 0a 20 2d 2d 20 45 72 72 ation)... -- Err - 138: 6f 72 20 43 6f 64 65 3a 20 25 64 0d 0a 1b 5b 33 or Code: %d...[3 - 148: 37 6d 00 7m. - -0000014b <__c.3930>: - 14b: 20 2d 2d 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 -- Error Code: - 15b: 25 64 0d 0a 1b 5b 33 37 6d 00 %d...[37m. - -00000165 <__c.3928>: - 165: 1b 5b 33 31 6d 49 6e 76 61 6c 69 64 20 44 65 76 .[31mInvalid Dev - 175: 69 63 65 2e 0d 0a 00 ice.... - -0000017c <__c.3926>: - 17c: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err - 18c: 6f 72 20 28 47 65 74 20 43 6f 6e 66 69 67 75 72 or (Get Configur - 19c: 61 74 69 6f 6e 29 2e 0d 0a 00 ation).... - -000001a6 <__c.3924>: - 1a6: 47 65 74 74 69 6e 67 20 43 6f 6e 66 69 67 20 44 Getting Config D - 1b6: 61 74 61 2e 0d 0a 00 ata.... - -000001bd <__c.3917>: - 1bd: 1b 5b 33 31 6d 44 65 76 20 45 6e 75 6d 20 45 72 .[31mDev Enum Er - 1cd: 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 43 ror.. -- Error C - 1dd: 6f 64 65 20 25 64 0d 0a 20 2d 2d 20 53 75 62 20 ode %d.. -- Sub - 1ed: 45 72 72 6f 72 20 43 6f 64 65 20 25 64 0d 0a 20 Error Code %d.. - 1fd: 2d 2d 20 49 6e 20 53 74 61 74 65 20 25 64 0d 0a -- In State %d.. - 20d: 1b 5b 33 37 6d 00 .[37m. - -00000213 <__c.3910>: - 213: 1b 5b 33 31 6d 48 6f 73 74 20 4d 6f 64 65 20 45 .[31mHost Mode E - 223: 72 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 rror.. -- Error - 233: 43 6f 64 65 20 25 64 0d 0a 1b 5b 33 37 6d 00 Code %d...[37m. - -00000242 <__c.3902>: - 242: 1b 5b 33 32 6d 44 65 76 69 63 65 20 55 6e 61 74 .[32mDevice Unat - 252: 74 61 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 tached....[37m. - -00000261 <__c.3897>: - 261: 1b 5b 33 32 6d 44 65 76 69 63 65 20 41 74 74 61 .[32mDevice Atta - 271: 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 ched....[37m. - -0000027e <__c.3888>: - 27e: 1b 5b 33 36 6d 41 75 64 69 6f 20 48 6f 73 74 20 .[36mAudio Host - 28e: 44 65 6d 6f 20 72 75 6e 6e 69 6e 67 2e 0d 0a 1b Demo running.... - 29e: 5b 33 37 6d 00 00 [37m.. - -000002a4 <__ctors_end>: - 2a4: 11 24 eor r1, r1 - 2a6: 1f be out 0x3f, r1 ; 63 - 2a8: cf ef ldi r28, 0xFF ; 255 - 2aa: d0 e2 ldi r29, 0x20 ; 32 - 2ac: de bf out 0x3e, r29 ; 62 - 2ae: cd bf out 0x3d, r28 ; 61 - -000002b0 <__do_copy_data>: - 2b0: 11 e0 ldi r17, 0x01 ; 1 - 2b2: a0 e0 ldi r26, 0x00 ; 0 - 2b4: b1 e0 ldi r27, 0x01 ; 1 - 2b6: ea ef ldi r30, 0xFA ; 250 - 2b8: f8 e1 ldi r31, 0x18 ; 24 - 2ba: 00 e0 ldi r16, 0x00 ; 0 - 2bc: 0b bf out 0x3b, r16 ; 59 - 2be: 02 c0 rjmp .+4 ; 0x2c4 <__do_copy_data+0x14> - 2c0: 07 90 elpm r0, Z+ - 2c2: 0d 92 st X+, r0 - 2c4: ac 31 cpi r26, 0x1C ; 28 - 2c6: b1 07 cpc r27, r17 - 2c8: d9 f7 brne .-10 ; 0x2c0 <__do_copy_data+0x10> - -000002ca <__do_clear_bss>: - 2ca: 11 e0 ldi r17, 0x01 ; 1 - 2cc: ac e1 ldi r26, 0x1C ; 28 - 2ce: b1 e0 ldi r27, 0x01 ; 1 - 2d0: 01 c0 rjmp .+2 ; 0x2d4 <.do_clear_bss_start> - -000002d2 <.do_clear_bss_loop>: - 2d2: 1d 92 st X+, r1 - -000002d4 <.do_clear_bss_start>: - 2d4: a0 34 cpi r26, 0x40 ; 64 - 2d6: b1 07 cpc r27, r17 - 2d8: e1 f7 brne .-8 ; 0x2d2 <.do_clear_bss_loop> - 2da: 3e d1 rcall .+636 ; 0x558
- 2dc: 0c 94 7b 0c jmp 0x18f6 ; 0x18f6 <_exit> - -000002e0 <__bad_interrupt>: - 2e0: 8f ce rjmp .-738 ; 0x0 <__vectors> - -000002e2 : - PORTD &= ~LEDMask; - } - - static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) - { - PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask); - 2e2: 9b b1 in r25, 0x0b ; 11 - 2e4: 9f 70 andi r25, 0x0F ; 15 - 2e6: 98 2b or r25, r24 - 2e8: 9b b9 out 0x0b, r25 ; 11 - } - 2ea: 08 95 ret - -000002ec : - -/** Configures the board hardware and chip peripherals for the demo's functionality. */ -void SetupHardware(void) -{ - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - 2ec: 84 b7 in r24, 0x34 ; 52 - 2ee: 87 7f andi r24, 0xF7 ; 247 - 2f0: 84 bf out 0x34, r24 ; 52 - wdt_disable(); - 2f2: 28 e1 ldi r18, 0x18 ; 24 - 2f4: 0f b6 in r0, 0x3f ; 63 - 2f6: f8 94 cli - 2f8: 20 93 60 00 sts 0x0060, r18 - 2fc: 10 92 60 00 sts 0x0060, r1 - 300: 0f be out 0x3f, r0 ; 63 -The type of x is clock_div_t. -*/ -void clock_prescale_set(clock_div_t __x) -{ - uint8_t __tmp = _BV(CLKPCE); - __asm__ __volatile__ ( - 302: 90 e0 ldi r25, 0x00 ; 0 - 304: 80 e8 ldi r24, 0x80 ; 128 - 306: 0f b6 in r0, 0x3f ; 63 - 308: f8 94 cli - 30a: 80 93 61 00 sts 0x0061, r24 - 30e: 90 93 61 00 sts 0x0061, r25 - 312: 0f be out 0x3f, r0 ; 63 - * \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate. - */ - static inline void Serial_Init(const uint32_t BaudRate, - const bool DoubleSpeed) - { - UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate)); - 314: 83 e3 ldi r24, 0x33 ; 51 - 316: 90 e0 ldi r25, 0x00 ; 0 - 318: 90 93 cd 00 sts 0x00CD, r25 - 31c: 80 93 cc 00 sts 0x00CC, r24 - - UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); - 320: 86 e0 ldi r24, 0x06 ; 6 - 322: 80 93 ca 00 sts 0x00CA, r24 - UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0); - 326: 10 92 c8 00 sts 0x00C8, r1 - UCSR1B = ((1 << TXEN1) | (1 << RXEN1)); - 32a: 20 93 c9 00 sts 0x00C9, r18 - - DDRD |= (1 << 3); - 32e: 53 9a sbi 0x0a, 3 ; 10 - PORTD |= (1 << 2); - 330: 5a 9a sbi 0x0b, 2 ; 11 - - /* Inline Functions: */ - #if !defined(__DOXYGEN__) - static inline void LEDs_Init(void) - { - DDRD |= LEDS_ALL_LEDS; - 332: 8a b1 in r24, 0x0a ; 10 - 334: 80 6f ori r24, 0xF0 ; 240 - 336: 8a b9 out 0x0a, r24 ; 10 - PORTD &= ~LEDS_ALL_LEDS; - 338: 8b b1 in r24, 0x0b ; 11 - 33a: 8f 70 andi r24, 0x0F ; 15 - 33c: 8b b9 out 0x0b, r24 ; 11 - clock_prescale_set(clock_div_1); - - /* Hardware Initialization */ - Serial_Init(9600, false); - LEDs_Init(); - USB_Init(); - 33e: 34 d5 rcall .+2664 ; 0xda8 - static inline void Serial_CreateStream(FILE* Stream) - { - if (!(Stream)) - { - Stream = &USARTSerialStream; - stdin = Stream; - 340: ec e2 ldi r30, 0x2C ; 44 - 342: f1 e0 ldi r31, 0x01 ; 1 - 344: f0 93 3b 01 sts 0x013B, r31 - 348: e0 93 3a 01 sts 0x013A, r30 - stdout = Stream; - 34c: f0 93 3d 01 sts 0x013D, r31 - 350: e0 93 3c 01 sts 0x013C, r30 - } - - *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW); - 354: 8e e0 ldi r24, 0x0E ; 14 - 356: df 01 movw r26, r30 - 358: 1d 92 st X+, r1 - 35a: 8a 95 dec r24 - 35c: e9 f7 brne .-6 ; 0x358 - 35e: 83 e0 ldi r24, 0x03 ; 3 - 360: 80 93 2f 01 sts 0x012F, r24 - 364: 85 e6 ldi r24, 0x65 ; 101 - 366: 99 e0 ldi r25, 0x09 ; 9 - 368: 90 93 35 01 sts 0x0135, r25 - 36c: 80 93 34 01 sts 0x0134, r24 - 370: 8e e6 ldi r24, 0x6E ; 110 - 372: 99 e0 ldi r25, 0x09 ; 9 - 374: 90 93 37 01 sts 0x0137, r25 - 378: 80 93 36 01 sts 0x0136, r24 - - /* Create a stdio stream for the serial port for stdin and stdout */ - Serial_CreateStream(NULL); -} - 37c: 08 95 ret - -0000037e : -/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and - * starts the library USB task to begin the enumeration and USB management process. - */ -void EVENT_USB_Host_DeviceAttached(void) -{ - puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE)); - 37e: 81 e6 ldi r24, 0x61 ; 97 - 380: 92 e0 ldi r25, 0x02 ; 2 - 382: de d7 rcall .+4028 ; 0x1340 - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); - 384: 80 ea ldi r24, 0xA0 ; 160 -} - 386: ad cf rjmp .-166 ; 0x2e2 - -00000388 : -/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and - * stops the library USB task management process. - */ -void EVENT_USB_Host_DeviceUnattached(void) -{ - puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE)); - 388: 82 e4 ldi r24, 0x42 ; 66 - 38a: 92 e0 ldi r25, 0x02 ; 2 - 38c: d9 d7 rcall .+4018 ; 0x1340 - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - 38e: 80 e1 ldi r24, 0x10 ; 16 -} - 390: a8 cf rjmp .-176 ; 0x2e2 - -00000392 : -/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully - * enumerated by the host and is now ready to be used by the application. - */ -void EVENT_USB_Host_DeviceEnumerationComplete(void) -{ - LEDs_SetAllLEDs(LEDMASK_USB_READY); - 392: 80 e6 ldi r24, 0x60 ; 96 -} - 394: a6 cf rjmp .-180 ; 0x2e2 - -00000396 : - -/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ -void EVENT_USB_Host_HostError(const uint8_t ErrorCode) -{ - 396: df 93 push r29 - 398: cf 93 push r28 - 39a: 0f 92 push r0 - 39c: cd b7 in r28, 0x3d ; 61 - 39e: de b7 in r29, 0x3e ; 62 - USB_Disable(); - 3a0: 89 83 std Y+1, r24 ; 0x01 - 3a2: 9c d4 rcall .+2360 ; 0xcdc - - printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n" - 3a4: 00 d0 rcall .+0 ; 0x3a6 - 3a6: 00 d0 rcall .+0 ; 0x3a8 - 3a8: ed b7 in r30, 0x3d ; 61 - 3aa: fe b7 in r31, 0x3e ; 62 - 3ac: 31 96 adiw r30, 0x01 ; 1 - 3ae: 23 e1 ldi r18, 0x13 ; 19 - 3b0: 32 e0 ldi r19, 0x02 ; 2 - 3b2: ad b7 in r26, 0x3d ; 61 - 3b4: be b7 in r27, 0x3e ; 62 - 3b6: 12 96 adiw r26, 0x02 ; 2 - 3b8: 3c 93 st X, r19 - 3ba: 2e 93 st -X, r18 - 3bc: 11 97 sbiw r26, 0x01 ; 1 - 3be: 89 81 ldd r24, Y+1 ; 0x01 - 3c0: 82 83 std Z+2, r24 ; 0x02 - 3c2: 13 82 std Z+3, r1 ; 0x03 - 3c4: 9e d7 rcall .+3900 ; 0x1302 - " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode); - - LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - 3c6: 0f 90 pop r0 - 3c8: 0f 90 pop r0 - 3ca: 0f 90 pop r0 - 3cc: 0f 90 pop r0 - 3ce: 80 e9 ldi r24, 0x90 ; 144 - 3d0: 88 df rcall .-240 ; 0x2e2 - 3d2: ff cf rjmp .-2 ; 0x3d2 - -000003d4 : - * enumerating an attached USB device. - */ -void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, - const uint8_t SubErrorCode) -{ - printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" - 3d4: 90 91 2b 01 lds r25, 0x012B - 3d8: 2d b7 in r18, 0x3d ; 61 - 3da: 3e b7 in r19, 0x3e ; 62 - 3dc: 28 50 subi r18, 0x08 ; 8 - 3de: 30 40 sbci r19, 0x00 ; 0 - 3e0: 0f b6 in r0, 0x3f ; 63 - 3e2: f8 94 cli - 3e4: 3e bf out 0x3e, r19 ; 62 - 3e6: 0f be out 0x3f, r0 ; 63 - 3e8: 2d bf out 0x3d, r18 ; 61 - 3ea: ed b7 in r30, 0x3d ; 61 - 3ec: fe b7 in r31, 0x3e ; 62 - 3ee: 31 96 adiw r30, 0x01 ; 1 - 3f0: 2d eb ldi r18, 0xBD ; 189 - 3f2: 31 e0 ldi r19, 0x01 ; 1 - 3f4: ad b7 in r26, 0x3d ; 61 - 3f6: be b7 in r27, 0x3e ; 62 - 3f8: 12 96 adiw r26, 0x02 ; 2 - 3fa: 3c 93 st X, r19 - 3fc: 2e 93 st -X, r18 - 3fe: 11 97 sbiw r26, 0x01 ; 1 - 400: 82 83 std Z+2, r24 ; 0x02 - 402: 13 82 std Z+3, r1 ; 0x03 - 404: 64 83 std Z+4, r22 ; 0x04 - 406: 15 82 std Z+5, r1 ; 0x05 - 408: 96 83 std Z+6, r25 ; 0x06 - 40a: 17 82 std Z+7, r1 ; 0x07 - 40c: 7a d7 rcall .+3828 ; 0x1302 - " -- Error Code %d\r\n" - " -- Sub Error Code %d\r\n" - " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState); - - LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - 40e: 2d b7 in r18, 0x3d ; 61 - 410: 3e b7 in r19, 0x3e ; 62 - 412: 28 5f subi r18, 0xF8 ; 248 - 414: 3f 4f sbci r19, 0xFF ; 255 - 416: 0f b6 in r0, 0x3f ; 63 - 418: f8 94 cli - 41a: 3e bf out 0x3e, r19 ; 62 - 41c: 0f be out 0x3f, r0 ; 63 - 41e: 2d bf out 0x3d, r18 ; 61 - 420: 80 e9 ldi r24, 0x90 ; 144 -} - 422: 5f cf rjmp .-322 ; 0x2e2 - -00000424 : - -void Audio_Task(void) -{ - 424: 1f 93 push r17 - 426: df 93 push r29 - 428: cf 93 push r28 - 42a: 00 d0 rcall .+0 ; 0x42c - 42c: 0f 92 push r0 - 42e: cd b7 in r28, 0x3d ; 61 - 430: de b7 in r29, 0x3e ; 62 - uint8_t ErrorCode; - - switch (USB_HostState) - 432: 80 91 2b 01 lds r24, 0x012B - 436: 8b 30 cpi r24, 0x0B ; 11 - 438: 09 f0 breq .+2 ; 0x43c - 43a: 87 c0 rjmp .+270 ; 0x54a - { - case HOST_STATE_Addressed: - puts_P(PSTR("Getting Config Data.\r\n")); - 43c: 86 ea ldi r24, 0xA6 ; 166 - 43e: 91 e0 ldi r25, 0x01 ; 1 - 440: 7f d7 rcall .+3838 ; 0x1340 - - /* Get and process the configuration descriptor data */ - if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead) - 442: 30 d1 rcall .+608 ; 0x6a4 - 444: 18 2f mov r17, r24 - 446: 88 23 and r24, r24 - 448: e9 f0 breq .+58 ; 0x484 - { - if (ErrorCode == ControlError) - 44a: 81 30 cpi r24, 0x01 ; 1 - 44c: 19 f4 brne .+6 ; 0x454 - puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n")); - 44e: 8c e7 ldi r24, 0x7C ; 124 - 450: 91 e0 ldi r25, 0x01 ; 1 - 452: 02 c0 rjmp .+4 ; 0x458 - else - puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n")); - 454: 85 e6 ldi r24, 0x65 ; 101 - 456: 91 e0 ldi r25, 0x01 ; 1 - 458: 73 d7 rcall .+3814 ; 0x1340 - - printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode); - 45a: 00 d0 rcall .+0 ; 0x45c - 45c: 00 d0 rcall .+0 ; 0x45e - 45e: ed b7 in r30, 0x3d ; 61 - 460: fe b7 in r31, 0x3e ; 62 - 462: 31 96 adiw r30, 0x01 ; 1 - 464: 2b e4 ldi r18, 0x4B ; 75 - 466: 31 e0 ldi r19, 0x01 ; 1 - 468: ad b7 in r26, 0x3d ; 61 - 46a: be b7 in r27, 0x3e ; 62 - 46c: 12 96 adiw r26, 0x02 ; 2 - 46e: 3c 93 st X, r19 - 470: 2e 93 st -X, r18 - 472: 11 97 sbiw r26, 0x01 ; 1 - 474: 12 83 std Z+2, r17 ; 0x02 - 476: 13 82 std Z+3, r1 ; 0x03 - 478: 44 d7 rcall .+3720 ; 0x1302 - - /* Indicate error status */ - LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - 47a: 0f 90 pop r0 - 47c: 0f 90 pop r0 - 47e: 0f 90 pop r0 - 480: 0f 90 pop r0 - 482: 4a c0 rjmp .+148 ; 0x518 - USB_HostState = HOST_STATE_WaitForDeviceRemoval; - break; - } - - /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */ - if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful) - 484: 81 e0 ldi r24, 0x01 ; 1 - 486: 82 d3 rcall .+1796 ; 0xb8c - 488: 88 23 and r24, r24 - 48a: 41 f0 breq .+16 ; 0x49c - { - printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n" - 48c: 00 d0 rcall .+0 ; 0x48e - 48e: 00 d0 rcall .+0 ; 0x490 - 490: ed b7 in r30, 0x3d ; 61 - 492: fe b7 in r31, 0x3e ; 62 - 494: 31 96 adiw r30, 0x01 ; 1 - 496: 28 e0 ldi r18, 0x08 ; 8 - 498: 31 e0 ldi r19, 0x01 ; 1 - 49a: 0e c0 rjmp .+28 ; 0x4b8 - /* Wait until USB device disconnected */ - USB_HostState = HOST_STATE_WaitForDeviceRemoval; - break; - } - - if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex, - 49c: 80 91 1c 01 lds r24, 0x011C - 4a0: 60 91 1d 01 lds r22, 0x011D - 4a4: 89 d3 rcall .+1810 ; 0xbb8 - 4a6: 88 23 and r24, r24 - 4a8: 79 f0 breq .+30 ; 0x4c8 - StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful) - { - printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n" - 4aa: 00 d0 rcall .+0 ; 0x4ac - 4ac: 00 d0 rcall .+0 ; 0x4ae - 4ae: ed b7 in r30, 0x3d ; 61 - 4b0: fe b7 in r31, 0x3e ; 62 - 4b2: 31 96 adiw r30, 0x01 ; 1 - 4b4: 21 eb ldi r18, 0xB1 ; 177 - 4b6: 30 e0 ldi r19, 0x00 ; 0 - 4b8: ad b7 in r26, 0x3d ; 61 - 4ba: be b7 in r27, 0x3e ; 62 - 4bc: 12 96 adiw r26, 0x02 ; 2 - 4be: 3c 93 st X, r19 - 4c0: 2e 93 st -X, r18 - 4c2: 11 97 sbiw r26, 0x01 ; 1 - 4c4: 82 83 std Z+2, r24 ; 0x02 - 4c6: d7 cf rjmp .-82 ; 0x476 - /* Wait until USB device disconnected */ - USB_HostState = HOST_STATE_WaitForDeviceRemoval; - break; - } - - USB_ControlRequest = (USB_Request_Header_t) - 4c8: 20 91 1e 01 lds r18, 0x011E - 4cc: 82 e2 ldi r24, 0x22 ; 34 - 4ce: 80 93 23 01 sts 0x0123, r24 - 4d2: 81 e0 ldi r24, 0x01 ; 1 - 4d4: 80 93 24 01 sts 0x0124, r24 - 4d8: 80 e0 ldi r24, 0x00 ; 0 - 4da: 91 e0 ldi r25, 0x01 ; 1 - 4dc: 90 93 26 01 sts 0x0126, r25 - 4e0: 80 93 25 01 sts 0x0125, r24 - 4e4: 20 93 27 01 sts 0x0127, r18 - 4e8: 10 92 28 01 sts 0x0128, r1 - 4ec: 83 e0 ldi r24, 0x03 ; 3 - 4ee: 90 e0 ldi r25, 0x00 ; 0 - 4f0: 90 93 2a 01 sts 0x012A, r25 - 4f4: 80 93 29 01 sts 0x0129, r24 - .wValue = 0x0100, - .wIndex = StreamingEndpointAddress, - .wLength = sizeof(USB_Audio_SampleFreq_t), - }; - - USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000); - 4f8: de 01 movw r26, r28 - 4fa: 11 96 adiw r26, 0x01 ; 1 - 4fc: e0 e0 ldi r30, 0x00 ; 0 - 4fe: f1 e0 ldi r31, 0x01 ; 1 - 500: 83 e0 ldi r24, 0x03 ; 3 - 502: 01 90 ld r0, Z+ - 504: 0d 92 st X+, r0 - 506: 81 50 subi r24, 0x01 ; 1 - 508: e1 f7 brne .-8 ; 0x502 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - 50a: 10 92 a7 00 sts 0x00A7, r1 - - /* Select the control pipe for the request transfer */ - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - /* Set the sample rate on the streaming interface endpoint */ - if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful) - 50e: ce 01 movw r24, r28 - 510: 01 96 adiw r24, 0x01 ; 1 - 512: b7 d5 rcall .+2926 ; 0x1082 - 514: 88 23 and r24, r24 - 516: 29 f0 breq .+10 ; 0x522 - { - /* Indicate error status */ - LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - 518: 80 e9 ldi r24, 0x90 ; 144 - 51a: e3 de rcall .-570 ; 0x2e2 - - /* Wait until USB device disconnected */ - USB_HostState = HOST_STATE_WaitForDeviceRemoval; - 51c: 10 92 2b 01 sts 0x012B, r1 - break; - 520: 14 c0 rjmp .+40 ; 0x54a - } - - /* Sample reload timer initialization */ - TIMSK0 = (1 << OCIE0A); - 522: 82 e0 ldi r24, 0x02 ; 2 - 524: 80 93 6e 00 sts 0x006E, r24 - OCR0A = ((F_CPU / 8 / 8000) - 1); - 528: 9c e7 ldi r25, 0x7C ; 124 - 52a: 97 bd out 0x27, r25 ; 39 - TCCR0A = (1 << WGM01); // CTC mode - 52c: 84 bd out 0x24, r24 ; 36 - TCCR0B = (1 << CS01); // Fcpu/8 speed - 52e: 85 bd out 0x25, r24 ; 37 - - /* Set speaker as output */ - DDRC |= (1 << 6); - 530: 3e 9a sbi 0x07, 6 ; 7 - - /* PWM speaker timer initialization */ - TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0) - 532: 81 ef ldi r24, 0xF1 ; 241 - 534: 80 93 90 00 sts 0x0090, r24 - | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP - TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed - 538: 89 e0 ldi r24, 0x09 ; 9 - 53a: 80 93 91 00 sts 0x0091, r24 - - puts_P(PSTR("Microphone Enumerated.\r\n")); - 53e: 88 e9 ldi r24, 0x98 ; 152 - 540: 90 e0 ldi r25, 0x00 ; 0 - 542: fe d6 rcall .+3580 ; 0x1340 - - USB_HostState = HOST_STATE_Configured; - 544: 8c e0 ldi r24, 0x0C ; 12 - 546: 80 93 2b 01 sts 0x012B, r24 - break; - case HOST_STATE_Configured: - break; - } -} - 54a: 0f 90 pop r0 - 54c: 0f 90 pop r0 - 54e: 0f 90 pop r0 - 550: cf 91 pop r28 - 552: df 91 pop r29 - 554: 1f 91 pop r17 - 556: 08 95 ret - -00000558
: -/** Main program entry point. This routine configures the hardware required by the application, then - * enters a loop to run the application tasks in sequence. - */ -int main(void) -{ - SetupHardware(); - 558: c9 de rcall .-622 ; 0x2ec - - puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE)); - 55a: 8e e7 ldi r24, 0x7E ; 126 - 55c: 92 e0 ldi r25, 0x02 ; 2 - 55e: f0 d6 rcall .+3552 ; 0x1340 - - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - 560: 80 e1 ldi r24, 0x10 ; 16 - 562: bf de rcall .-642 ; 0x2e2 - sei(); - 564: 78 94 sei - - for (;;) - { - Audio_Task(); - 566: 5e df rcall .-324 ; 0x424 - USB_USBTask(); - 568: a2 d6 rcall .+3396 ; 0x12ae - 56a: fd cf rjmp .-6 ; 0x566 - -0000056c <__vector_21>: - } -} - -/** ISR to handle the reloading of the PWM timer with the next sample. */ -ISR(TIMER0_COMPA_vect, ISR_BLOCK) -{ - 56c: 1f 92 push r1 - 56e: 0f 92 push r0 - 570: 0f b6 in r0, 0x3f ; 63 - 572: 0f 92 push r0 - 574: 0b b6 in r0, 0x3b ; 59 - 576: 0f 92 push r0 - 578: 11 24 eor r1, r1 - 57a: 1f 93 push r17 - 57c: 2f 93 push r18 - 57e: 3f 93 push r19 - 580: 4f 93 push r20 - 582: 5f 93 push r21 - 584: 6f 93 push r22 - 586: 7f 93 push r23 - 588: 8f 93 push r24 - 58a: 9f 93 push r25 - 58c: af 93 push r26 - 58e: bf 93 push r27 - 590: ef 93 push r30 - 592: ff 93 push r31 - * \return Index of the currently selected pipe. - */ - static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Pipe_GetCurrentPipe(void) - { - return (UPNUM & PIPE_PIPENUM_MASK); - 594: 10 91 a7 00 lds r17, 0x00A7 - 598: 17 70 andi r17, 0x07 ; 7 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - 59a: 81 e0 ldi r24, 0x01 ; 1 - 59c: 80 93 a7 00 sts 0x00A7, r24 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 5a0: 80 91 a9 00 lds r24, 0x00A9 - 5a4: 8f 7b andi r24, 0xBF ; 191 - 5a6: 80 93 a9 00 sts 0x00A9, r24 - * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise. - */ - static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsINReceived(void) - { - return ((UPINTX & (1 << RXINI)) ? true : false); - 5aa: 80 91 a6 00 lds r24, 0x00A6 - - Pipe_SelectPipe(AUDIO_DATA_IN_PIPE); - Pipe_Unfreeze(); - - /* Check if the current pipe can be read from (contains a packet) and the device is sending data */ - if (Pipe_IsINReceived()) - 5ae: 80 ff sbrs r24, 0 - 5b0: 2b c0 rjmp .+86 ; 0x608 <__vector_21+0x9c> - { - uint16_t Value; - uint8_t Bytes[2]; - } Data; - - Data.Bytes[0] = UPDATX; - 5b2: 80 91 af 00 lds r24, 0x00AF - Data.Bytes[1] = UPDATX; - 5b6: 40 91 af 00 lds r20, 0x00AF - * on its direction. - */ - static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsReadWriteAllowed(void) - { - return ((UPINTX & (1 << RWAL)) ? true : false); - 5ba: 80 91 a6 00 lds r24, 0x00A6 - { - /* Retrieve the signed 16-bit audio sample, convert to 8-bit */ - int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8); - - /* Check to see if the bank is now empty */ - if (!(Pipe_IsReadWriteAllowed())) - 5be: 85 fd sbrc r24, 5 - 5c0: 05 c0 rjmp .+10 ; 0x5cc <__vector_21+0x60> - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearIN(void) - { - UPINTX &= ~((1 << RXINI) | (1 << FIFOCON)); - 5c2: 80 91 a6 00 lds r24, 0x00A6 - 5c6: 8e 77 andi r24, 0x7E ; 126 - 5c8: 80 93 a6 00 sts 0x00A6, r24 - /* Acknowledge the packet, clear the bank ready for the next packet */ - Pipe_ClearIN(); - } - - /* Load the sample into the PWM timer channel */ - OCR3A = (Sample_8Bit ^ (1 << 7)); - 5cc: 84 2f mov r24, r20 - 5ce: 99 27 eor r25, r25 - 5d0: 87 fd sbrc r24, 7 - 5d2: 90 95 com r25 - 5d4: 20 e8 ldi r18, 0x80 ; 128 - 5d6: 30 e0 ldi r19, 0x00 ; 0 - 5d8: 82 27 eor r24, r18 - 5da: 93 27 eor r25, r19 - 5dc: 90 93 99 00 sts 0x0099, r25 - 5e0: 80 93 98 00 sts 0x0098, r24 - - uint8_t LEDMask = LEDS_NO_LEDS; - - /* Turn on LEDs as the sample amplitude increases */ - if (Sample_8Bit > 16) - 5e4: 41 31 cpi r20, 0x11 ; 17 - 5e6: 44 f4 brge .+16 ; 0x5f8 <__vector_21+0x8c> - LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4); - else if (Sample_8Bit > 8) - 5e8: 49 30 cpi r20, 0x09 ; 9 - 5ea: 44 f4 brge .+16 ; 0x5fc <__vector_21+0x90> - LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3); - else if (Sample_8Bit > 4) - 5ec: 45 30 cpi r20, 0x05 ; 5 - 5ee: 44 f4 brge .+16 ; 0x600 <__vector_21+0x94> - LEDMask = (LEDS_LED1 | LEDS_LED2); - else if (Sample_8Bit > 2) - 5f0: 43 30 cpi r20, 0x03 ; 3 - 5f2: 44 f4 brge .+16 ; 0x604 <__vector_21+0x98> - } - - /* Load the sample into the PWM timer channel */ - OCR3A = (Sample_8Bit ^ (1 << 7)); - - uint8_t LEDMask = LEDS_NO_LEDS; - 5f4: 80 e0 ldi r24, 0x00 ; 0 - 5f6: 07 c0 rjmp .+14 ; 0x606 <__vector_21+0x9a> - - /* Turn on LEDs as the sample amplitude increases */ - if (Sample_8Bit > 16) - LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4); - 5f8: 80 ef ldi r24, 0xF0 ; 240 - 5fa: 05 c0 rjmp .+10 ; 0x606 <__vector_21+0x9a> - else if (Sample_8Bit > 8) - LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3); - 5fc: 80 eb ldi r24, 0xB0 ; 176 - 5fe: 03 c0 rjmp .+6 ; 0x606 <__vector_21+0x9a> - else if (Sample_8Bit > 4) - LEDMask = (LEDS_LED1 | LEDS_LED2); - 600: 80 e3 ldi r24, 0x30 ; 48 - 602: 01 c0 rjmp .+2 ; 0x606 <__vector_21+0x9a> - else if (Sample_8Bit > 2) - LEDMask = (LEDS_LED1); - 604: 80 e1 ldi r24, 0x10 ; 16 - - LEDs_SetAllLEDs(LEDMask); - 606: 6d de rcall .-806 ; 0x2e2 - - /** Freezes the selected pipe, preventing it from communicating with an attached device. */ - static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Freeze(void) - { - UPCONX |= (1 << PFREEZE); - 608: 80 91 a9 00 lds r24, 0x00A9 - 60c: 80 64 ori r24, 0x40 ; 64 - 60e: 80 93 a9 00 sts 0x00A9, r24 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - 612: 10 93 a7 00 sts 0x00A7, r17 - } - - Pipe_Freeze(); - - Pipe_SelectPipe(PrevPipe); -} - 616: ff 91 pop r31 - 618: ef 91 pop r30 - 61a: bf 91 pop r27 - 61c: af 91 pop r26 - 61e: 9f 91 pop r25 - 620: 8f 91 pop r24 - 622: 7f 91 pop r23 - 624: 6f 91 pop r22 - 626: 5f 91 pop r21 - 628: 4f 91 pop r20 - 62a: 3f 91 pop r19 - 62c: 2f 91 pop r18 - 62e: 1f 91 pop r17 - 630: 0f 90 pop r0 - 632: 0b be out 0x3b, r0 ; 59 - 634: 0f 90 pop r0 - 636: 0f be out 0x3f, r0 ; 63 - 638: 0f 90 pop r0 - 63a: 1f 90 pop r1 - 63c: 18 95 reti - -0000063e : - /* Valid data found, return success */ - return SuccessfulConfigRead; -} - -uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor) -{ - 63e: fc 01 movw r30, r24 - USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); - - if (Header->Type == DTYPE_Interface) - 640: 81 81 ldd r24, Z+1 ; 0x01 - 642: 84 30 cpi r24, 0x04 ; 4 - 644: 49 f4 brne .+18 ; 0x658 - { - USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t); - - if ((Interface->Class == AUDIO_CSCP_AudioClass) && - 646: 85 81 ldd r24, Z+5 ; 0x05 - 648: 81 30 cpi r24, 0x01 ; 1 - 64a: 31 f4 brne .+12 ; 0x658 - 64c: 86 81 ldd r24, Z+6 ; 0x06 - 64e: 81 30 cpi r24, 0x01 ; 1 - 650: 19 f4 brne .+6 ; 0x658 - (Interface->SubClass == AUDIO_CSCP_ControlSubclass) && - 652: 87 81 ldd r24, Z+7 ; 0x07 - 654: 88 23 and r24, r24 - 656: 11 f0 breq .+4 ; 0x65c - { - return DESCRIPTOR_SEARCH_Found; - } - } - - return DESCRIPTOR_SEARCH_NotFound; - 658: 82 e0 ldi r24, 0x02 ; 2 - 65a: 08 95 ret - - if ((Interface->Class == AUDIO_CSCP_AudioClass) && - (Interface->SubClass == AUDIO_CSCP_ControlSubclass) && - (Interface->Protocol == AUDIO_CSCP_ControlProtocol)) - { - return DESCRIPTOR_SEARCH_Found; - 65c: 80 e0 ldi r24, 0x00 ; 0 - } - } - - return DESCRIPTOR_SEARCH_NotFound; -} - 65e: 08 95 ret - -00000660 : - -uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor) -{ - 660: fc 01 movw r30, r24 - USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); - - if (Header->Type == DTYPE_Interface) - 662: 81 81 ldd r24, Z+1 ; 0x01 - 664: 84 30 cpi r24, 0x04 ; 4 - 666: 49 f4 brne .+18 ; 0x67a - { - USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t); - - if ((Interface->Class == AUDIO_CSCP_AudioClass) && - 668: 85 81 ldd r24, Z+5 ; 0x05 - 66a: 81 30 cpi r24, 0x01 ; 1 - 66c: 31 f4 brne .+12 ; 0x67a - 66e: 86 81 ldd r24, Z+6 ; 0x06 - 670: 82 30 cpi r24, 0x02 ; 2 - 672: 19 f4 brne .+6 ; 0x67a - (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) && - 674: 87 81 ldd r24, Z+7 ; 0x07 - 676: 88 23 and r24, r24 - 678: 11 f0 breq .+4 ; 0x67e - { - return DESCRIPTOR_SEARCH_Found; - } - } - - return DESCRIPTOR_SEARCH_NotFound; - 67a: 82 e0 ldi r24, 0x02 ; 2 - 67c: 08 95 ret - - if ((Interface->Class == AUDIO_CSCP_AudioClass) && - (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) && - (Interface->Protocol == AUDIO_CSCP_StreamingProtocol)) - { - return DESCRIPTOR_SEARCH_Found; - 67e: 80 e0 ldi r24, 0x00 ; 0 - } - } - - return DESCRIPTOR_SEARCH_NotFound; -} - 680: 08 95 ret - -00000682 : - -uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor) -{ - 682: fc 01 movw r30, r24 - USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); - - if (Header->Type == DTYPE_Endpoint) - 684: 81 81 ldd r24, Z+1 ; 0x01 - 686: 85 30 cpi r24, 0x05 ; 5 - 688: 29 f4 brne .+10 ; 0x694 - { - USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t); - - if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS) - 68a: 83 81 ldd r24, Z+3 ; 0x03 - 68c: 83 70 andi r24, 0x03 ; 3 - 68e: 81 30 cpi r24, 0x01 ; 1 - 690: 19 f4 brne .+6 ; 0x698 - 692: 04 c0 rjmp .+8 ; 0x69c - return DESCRIPTOR_SEARCH_Found; - } - else if (Header->Type == DTYPE_Interface) - 694: 84 30 cpi r24, 0x04 ; 4 - 696: 21 f0 breq .+8 ; 0x6a0 - { - return DESCRIPTOR_SEARCH_Fail; - } - - return DESCRIPTOR_SEARCH_NotFound; - 698: 82 e0 ldi r24, 0x02 ; 2 - 69a: 08 95 ret - if (Header->Type == DTYPE_Endpoint) - { - USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t); - - if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS) - return DESCRIPTOR_SEARCH_Found; - 69c: 80 e0 ldi r24, 0x00 ; 0 - 69e: 08 95 ret - } - else if (Header->Type == DTYPE_Interface) - { - return DESCRIPTOR_SEARCH_Fail; - 6a0: 81 e0 ldi r24, 0x01 ; 1 - } - - return DESCRIPTOR_SEARCH_NotFound; -} - 6a2: 08 95 ret - -000006a4 : -uint8_t StreamingInterfaceIndex = 0; -uint8_t StreamingInterfaceAltSetting = 0; -uint8_t StreamingEndpointAddress = 0; - -uint8_t ProcessConfigurationDescriptor(void) -{ - 6a4: af 92 push r10 - 6a6: bf 92 push r11 - 6a8: cf 92 push r12 - 6aa: df 92 push r13 - 6ac: ef 92 push r14 - 6ae: ff 92 push r15 - 6b0: 0f 93 push r16 - 6b2: 1f 93 push r17 - 6b4: df 93 push r29 - 6b6: cf 93 push r28 - 6b8: cd b7 in r28, 0x3d ; 61 - 6ba: de b7 in r29, 0x3e ; 62 - 6bc: c4 50 subi r28, 0x04 ; 4 - 6be: d2 40 sbci r29, 0x02 ; 2 - 6c0: 0f b6 in r0, 0x3f ; 63 - 6c2: f8 94 cli - 6c4: de bf out 0x3e, r29 ; 62 - 6c6: 0f be out 0x3f, r0 ; 63 - 6c8: cd bf out 0x3d, r28 ; 61 - uint8_t ConfigDescriptorData[512]; - void* CurrConfigLocation = ConfigDescriptorData; - 6ca: ae 01 movw r20, r28 - 6cc: 4b 5f subi r20, 0xFB ; 251 - 6ce: 5f 4f sbci r21, 0xFF ; 255 - 6d0: 5a 83 std Y+2, r21 ; 0x02 - 6d2: 49 83 std Y+1, r20 ; 0x01 - USB_Descriptor_Interface_t* AudioControlInterface = NULL; - USB_Descriptor_Interface_t* AudioStreamingInterface = NULL; - USB_Descriptor_Endpoint_t* DataINEndpoint = NULL; - - /* Retrieve the entire configuration descriptor into the allocated buffer */ - switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData))) - 6d4: 23 e0 ldi r18, 0x03 ; 3 - 6d6: e2 2e mov r14, r18 - 6d8: f1 2c mov r15, r1 - 6da: ec 0e add r14, r28 - 6dc: fd 1e adc r15, r29 - 6de: 81 e0 ldi r24, 0x01 ; 1 - 6e0: b7 01 movw r22, r14 - 6e2: 20 e0 ldi r18, 0x00 ; 0 - 6e4: 32 e0 ldi r19, 0x02 ; 2 - 6e6: 09 d4 rcall .+2066 ; 0xefa - 6e8: 85 30 cpi r24, 0x05 ; 5 - 6ea: 09 f4 brne .+2 ; 0x6ee - 6ec: 5c c0 rjmp .+184 ; 0x7a6 - 6ee: 86 30 cpi r24, 0x06 ; 6 - 6f0: 61 f0 breq .+24 ; 0x70a - 6f2: 88 23 and r24, r24 - 6f4: 61 f4 brne .+24 ; 0x70e - 6f6: 00 e0 ldi r16, 0x00 ; 0 - 6f8: 10 e0 ldi r17, 0x00 ; 0 - 6fa: cc 24 eor r12, r12 - 6fc: dd 24 eor r13, r13 - 6fe: 57 01 movw r10, r14 - 700: 7e 01 movw r14, r28 - 702: 08 94 sec - 704: e1 1c adc r14, r1 - 706: f1 1c adc r15, r1 - 708: 07 c0 rjmp .+14 ; 0x718 - { - case HOST_GETCONFIG_Successful: - break; - case HOST_GETCONFIG_InvalidData: - return InvalidConfigDataReturned; - 70a: 83 e0 ldi r24, 0x03 ; 3 - 70c: 4f c0 rjmp .+158 ; 0x7ac - case HOST_GETCONFIG_BuffOverflow: - return DescriptorTooLarge; - default: - return ControlError; - 70e: 81 e0 ldi r24, 0x01 ; 1 - 710: 4d c0 rjmp .+154 ; 0x7ac - USB_Descriptor_Interface_t* AudioControlInterface = NULL; - USB_Descriptor_Interface_t* AudioStreamingInterface = NULL; - USB_Descriptor_Endpoint_t* DataINEndpoint = NULL; - - /* Retrieve the entire configuration descriptor into the allocated buffer */ - switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData))) - 712: 9c 01 movw r18, r24 - 714: 03 2f mov r16, r19 - 716: 18 2f mov r17, r24 - return ControlError; - } - - while (!(DataINEndpoint)) - { - if (!(AudioControlInterface) || - 718: c1 14 cp r12, r1 - 71a: d1 04 cpc r13, r1 - 71c: 41 f0 breq .+16 ; 0x72e - USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - 71e: c5 01 movw r24, r10 - 720: b7 01 movw r22, r14 - 722: 41 e4 ldi r20, 0x41 ; 65 - 724: 53 e0 ldi r21, 0x03 ; 3 - 726: 40 d4 rcall .+2176 ; 0xfa8 - return ControlError; - } - - while (!(DataINEndpoint)) - { - if (!(AudioControlInterface) || - 728: 88 23 and r24, r24 - 72a: 51 f4 brne .+20 ; 0x740 - 72c: 1c c0 rjmp .+56 ; 0x766 - USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found) - { - if (!(AudioControlInterface)) - { - if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - 72e: c5 01 movw r24, r10 - 730: b7 01 movw r22, r14 - 732: 4f e1 ldi r20, 0x1F ; 31 - 734: 53 e0 ldi r21, 0x03 ; 3 - 736: 38 d4 rcall .+2160 ; 0xfa8 - 738: 88 23 and r24, r24 - 73a: b9 f5 brne .+110 ; 0x7aa - /* Descriptor not found, error out */ - return NoCompatibleInterfaceFound; - } - - /* Save the interface in case we need to refer back to it later */ - AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); - 73c: c9 80 ldd r12, Y+1 ; 0x01 - 73e: da 80 ldd r13, Y+2 ; 0x02 - } - - if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - 740: c5 01 movw r24, r10 - 742: b7 01 movw r22, r14 - 744: 40 e3 ldi r20, 0x30 ; 48 - 746: 53 e0 ldi r21, 0x03 ; 3 - 748: 2f d4 rcall .+2142 ; 0xfa8 - 74a: 88 23 and r24, r24 - 74c: 49 f0 breq .+18 ; 0x760 - DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found) - { - if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - 74e: c5 01 movw r24, r10 - 750: b7 01 movw r22, r14 - 752: 4f e1 ldi r20, 0x1F ; 31 - 754: 53 e0 ldi r21, 0x03 ; 3 - 756: 28 d4 rcall .+2128 ; 0xfa8 - 758: 88 23 and r24, r24 - 75a: 39 f5 brne .+78 ; 0x7aa - /* Descriptor not found, error out */ - return NoCompatibleInterfaceFound; - } - - /* Save the interface in case we need to refer back to it later */ - AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); - 75c: c9 80 ldd r12, Y+1 ; 0x01 - 75e: da 80 ldd r13, Y+2 ; 0x02 - } - - /* Save the interface in case we need to refer back to it later */ - AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); - 760: 09 81 ldd r16, Y+1 ; 0x01 - 762: 1a 81 ldd r17, Y+2 ; 0x02 - - /* Skip the remainder of the loop as we have not found an endpoint yet */ - continue; - 764: 35 c0 rjmp .+106 ; 0x7d0 - } - - /* Retrieve the endpoint address from the endpoint descriptor */ - USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t); - 766: e9 81 ldd r30, Y+1 ; 0x01 - 768: fa 81 ldd r31, Y+2 ; 0x02 - - /* If the endpoint is a IN type endpoint */ - if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) - 76a: 82 81 ldd r24, Z+2 ; 0x02 - 76c: 87 ff sbrs r24, 7 - 76e: 30 c0 rjmp .+96 ; 0x7d0 - 770: 90 2f mov r25, r16 - 772: 81 2f mov r24, r17 - return DescriptorTooLarge; - default: - return ControlError; - } - - while (!(DataINEndpoint)) - 774: 30 97 sbiw r30, 0x00 ; 0 - 776: 69 f2 breq .-102 ; 0x712 - /* If the endpoint is a IN type endpoint */ - if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) - DataINEndpoint = EndpointData; - } - - StreamingInterfaceIndex = AudioStreamingInterface->InterfaceNumber; - 778: d8 01 movw r26, r16 - 77a: 12 96 adiw r26, 0x02 ; 2 - 77c: 8c 91 ld r24, X - 77e: 12 97 sbiw r26, 0x02 ; 2 - 780: 80 93 1c 01 sts 0x011C, r24 - StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting; - 784: 13 96 adiw r26, 0x03 ; 3 - 786: 8c 91 ld r24, X - 788: 80 93 1d 01 sts 0x011D, r24 - StreamingEndpointAddress = DataINEndpoint->EndpointAddress; - 78c: 22 81 ldd r18, Z+2 ; 0x02 - 78e: 20 93 1e 01 sts 0x011E, r18 - - /* Configure the HID data IN pipe */ - Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN, - 792: 04 81 ldd r16, Z+4 ; 0x04 - 794: 15 81 ldd r17, Z+5 ; 0x05 - 796: 81 e0 ldi r24, 0x01 ; 1 - 798: 61 e0 ldi r22, 0x01 ; 1 - 79a: 40 e1 ldi r20, 0x10 ; 16 - 79c: 94 e0 ldi r25, 0x04 ; 4 - 79e: e9 2e mov r14, r25 - 7a0: 22 d2 rcall .+1092 ; 0xbe6 - DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE); - - /* Valid data found, return success */ - return SuccessfulConfigRead; - 7a2: 80 e0 ldi r24, 0x00 ; 0 - 7a4: 03 c0 rjmp .+6 ; 0x7ac - case HOST_GETCONFIG_Successful: - break; - case HOST_GETCONFIG_InvalidData: - return InvalidConfigDataReturned; - case HOST_GETCONFIG_BuffOverflow: - return DescriptorTooLarge; - 7a6: 82 e0 ldi r24, 0x02 ; 2 - 7a8: 01 c0 rjmp .+2 ; 0x7ac - { - if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found) - { - /* Descriptor not found, error out */ - return NoCompatibleInterfaceFound; - 7aa: 84 e0 ldi r24, 0x04 ; 4 - Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN, - DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE); - - /* Valid data found, return success */ - return SuccessfulConfigRead; -} - 7ac: cc 5f subi r28, 0xFC ; 252 - 7ae: dd 4f sbci r29, 0xFD ; 253 - 7b0: 0f b6 in r0, 0x3f ; 63 - 7b2: f8 94 cli - 7b4: de bf out 0x3e, r29 ; 62 - 7b6: 0f be out 0x3f, r0 ; 63 - 7b8: cd bf out 0x3d, r28 ; 61 - 7ba: cf 91 pop r28 - 7bc: df 91 pop r29 - 7be: 1f 91 pop r17 - 7c0: 0f 91 pop r16 - 7c2: ff 90 pop r15 - 7c4: ef 90 pop r14 - 7c6: df 90 pop r13 - 7c8: cf 90 pop r12 - 7ca: bf 90 pop r11 - 7cc: af 90 pop r10 - 7ce: 08 95 ret - USB_Descriptor_Interface_t* AudioControlInterface = NULL; - USB_Descriptor_Interface_t* AudioStreamingInterface = NULL; - USB_Descriptor_Endpoint_t* DataINEndpoint = NULL; - - /* Retrieve the entire configuration descriptor into the allocated buffer */ - switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData))) - 7d0: 90 2f mov r25, r16 - 7d2: 81 2f mov r24, r17 - 7d4: 9e cf rjmp .-196 ; 0x712 - -000007d6 : - * \return Boolean \c true if the bus is currently suspended, \c false otherwise. - */ - static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusSuspended(void) - { - return ((UHCON & (1 << SOFEN)) ? false : true); - 7d6: 80 91 9e 00 lds r24, 0x009E - 7da: 90 e0 ldi r25, 0x00 ; 0 - 7dc: 81 70 andi r24, 0x01 ; 1 - 7de: 90 70 andi r25, 0x00 ; 0 - break; - case USB_INT_DCONNI: - UHIEN &= ~(1 << DCONNE); - break; - case USB_INT_DDISCI: - UHIEN &= ~(1 << DDISCE); - 7e0: 20 91 a0 00 lds r18, 0x00A0 - 7e4: 2d 7f andi r18, 0xFD ; 253 - 7e6: 20 93 a0 00 sts 0x00A0, r18 - * woken up automatically and the bus resumed after the reset has been correctly issued. - */ - static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResetBus(void) - { - UHCON |= (1 << RESET); - 7ea: 20 91 9e 00 lds r18, 0x009E - 7ee: 22 60 ori r18, 0x02 ; 2 - 7f0: 20 93 9e 00 sts 0x009E, r18 - * \return Boolean \c true if no bus reset is currently being sent, \c false otherwise. - */ - static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusResetComplete(void) - { - return ((UHCON & (1 << RESET)) ? false : true); - 7f4: 20 91 9e 00 lds r18, 0x009E - bool BusSuspended = USB_Host_IsBusSuspended(); - - USB_INT_Disable(USB_INT_DDISCI); - - USB_Host_ResetBus(); - while (!(USB_Host_IsBusResetComplete())); - 7f8: 21 fd sbrc r18, 1 - 7fa: fc cf rjmp .-8 ; 0x7f4 - * host and attached device may occur. - */ - static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeBus(void) - { - UHCON |= (1 << SOFEN); - 7fc: 20 91 9e 00 lds r18, 0x009E - 800: 21 60 ori r18, 0x01 ; 1 - 802: 20 93 9e 00 sts 0x009E, r18 - case USB_INT_RXSTPI: - return (UEIENX & (1 << RXSTPE)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHIEN & (1 << HSOFE)); - 806: 20 91 a0 00 lds r18, 0x00A0 - 80a: 30 e0 ldi r19, 0x00 ; 0 - 80c: 20 72 andi r18, 0x20 ; 32 - 80e: 30 70 andi r19, 0x00 ; 0 - UEIENX &= ~(1 << RXSTPE); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHIEN &= ~(1 << HSOFE); - 810: 40 91 a0 00 lds r20, 0x00A0 - 814: 4f 7d andi r20, 0xDF ; 223 - 816: 40 93 a0 00 sts 0x00A0, r20 - UEINTX &= ~(1 << RXSTPI); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - 81a: 40 91 9f 00 lds r20, 0x009F - 81e: 4f 7d andi r20, 0xDF ; 223 - 820: 40 93 9f 00 sts 0x009F, r20 - 824: 4a e0 ldi r20, 0x0A ; 10 - case USB_INT_RXSTPI: - return (UEINTX & (1 << RXSTPI)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHINT & (1 << HSOFI)); - 826: 50 91 9f 00 lds r21, 0x009F - /* Workaround for powerless-pull-up devices. After a USB bus reset, - all disconnection interrupts are suppressed while a USB frame is - looked for - if it is found within 10ms, the device is still - present. */ - - if (USB_INT_HasOccurred(USB_INT_HSOFI)) - 82a: 55 ff sbrs r21, 5 - 82c: 0b c0 rjmp .+22 ; 0x844 - UEINTX &= ~(1 << RXSTPI); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - 82e: 40 91 9f 00 lds r20, 0x009F - 832: 4f 7d andi r20, 0xDF ; 223 - 834: 40 93 9f 00 sts 0x009F, r20 - break; - case USB_INT_DCONNI: - UHINT &= ~(1 << DCONNI); - break; - case USB_INT_DDISCI: - UHINT &= ~(1 << DDISCI); - 838: 40 91 9f 00 lds r20, 0x009F - 83c: 4d 7f andi r20, 0xFD ; 253 - 83e: 40 93 9f 00 sts 0x009F, r20 - 842: 08 c0 rjmp .+16 ; 0x854 - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); - 844: ef ec ldi r30, 0xCF ; 207 - 846: f7 e0 ldi r31, 0x07 ; 7 - 848: 31 97 sbiw r30, 0x01 ; 1 - 84a: f1 f7 brne .-4 ; 0x848 - 84c: 00 c0 rjmp .+0 ; 0x84e - 84e: 00 00 nop - 850: 41 50 subi r20, 0x01 ; 1 - bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); - - USB_INT_Disable(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_HSOFI); - - for (uint8_t MSRem = 10; MSRem != 0; MSRem--) - 852: 49 f7 brne .-46 ; 0x826 - } - - Delay_MS(1); - } - - if (HSOFIEnabled) - 854: 21 15 cp r18, r1 - 856: 31 05 cpc r19, r1 - 858: 29 f0 breq .+10 ; 0x864 - UEIENX |= (1 << RXSTPE); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHIEN |= (1 << HSOFE); - 85a: 20 91 a0 00 lds r18, 0x00A0 - 85e: 20 62 ori r18, 0x20 ; 32 - 860: 20 93 a0 00 sts 0x00A0, r18 - USB_INT_Enable(USB_INT_HSOFI); - - if (BusSuspended) - 864: 00 97 sbiw r24, 0x00 ; 0 - 866: 29 f4 brne .+10 ; 0x872 - * messages to the device. - */ - static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SuspendBus(void) - { - UHCON &= ~(1 << SOFEN); - 868: 80 91 9e 00 lds r24, 0x009E - 86c: 8e 7f andi r24, 0xFE ; 254 - 86e: 80 93 9e 00 sts 0x009E, r24 - break; - case USB_INT_DCONNI: - UHIEN |= (1 << DCONNE); - break; - case USB_INT_DDISCI: - UHIEN |= (1 << DDISCE); - 872: 80 91 a0 00 lds r24, 0x00A0 - 876: 82 60 ori r24, 0x02 ; 2 - 878: 80 93 a0 00 sts 0x00A0, r24 - USB_Host_SuspendBus(); - - USB_INT_Enable(USB_INT_DDISCI); -} - 87c: 08 95 ret - -0000087e : - * \return Boolean \c true if the bus is currently suspended, \c false otherwise. - */ - static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusSuspended(void) - { - return ((UHCON & (1 << SOFEN)) ? false : true); - 87e: 40 91 9e 00 lds r20, 0x009E - 882: 50 e0 ldi r21, 0x00 ; 0 - 884: 41 70 andi r20, 0x01 ; 1 - 886: 50 70 andi r21, 0x00 ; 0 - case USB_INT_RXSTPI: - return (UEIENX & (1 << RXSTPE)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHIEN & (1 << HSOFE)); - 888: 20 91 a0 00 lds r18, 0x00A0 - 88c: 30 e0 ldi r19, 0x00 ; 0 - 88e: 20 72 andi r18, 0x20 ; 32 - 890: 30 70 andi r19, 0x00 ; 0 - UEIENX &= ~(1 << RXSTPE); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHIEN &= ~(1 << HSOFE); - 892: 90 91 a0 00 lds r25, 0x00A0 - 896: 9f 7d andi r25, 0xDF ; 223 - 898: 90 93 a0 00 sts 0x00A0, r25 - UEINTX &= ~(1 << RXSTPI); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - 89c: 90 91 9f 00 lds r25, 0x009F - 8a0: 9f 7d andi r25, 0xDF ; 223 - 8a2: 90 93 9f 00 sts 0x009F, r25 - * host and attached device may occur. - */ - static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeBus(void) - { - UHCON |= (1 << SOFEN); - 8a6: 90 91 9e 00 lds r25, 0x009E - 8aa: 91 60 ori r25, 0x01 ; 1 - 8ac: 90 93 9e 00 sts 0x009E, r25 - USB_INT_Disable(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_HSOFI); - - USB_Host_ResumeBus(); - - while (MS) - 8b0: 26 c0 rjmp .+76 ; 0x8fe - case USB_INT_RXSTPI: - return (UEINTX & (1 << RXSTPI)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHINT & (1 << HSOFI)); - 8b2: 90 91 9f 00 lds r25, 0x009F - { - if (USB_INT_HasOccurred(USB_INT_HSOFI)) - 8b6: 95 ff sbrs r25, 5 - 8b8: 06 c0 rjmp .+12 ; 0x8c6 - UEINTX &= ~(1 << RXSTPI); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - 8ba: 90 91 9f 00 lds r25, 0x009F - 8be: 9f 7d andi r25, 0xDF ; 223 - 8c0: 90 93 9f 00 sts 0x009F, r25 - { - USB_INT_Clear(USB_INT_HSOFI); - MS--; - 8c4: 81 50 subi r24, 0x01 ; 1 - } - - if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host)) - 8c6: 90 91 2b 01 lds r25, 0x012B - 8ca: 92 30 cpi r25, 0x02 ; 2 - 8cc: d9 f0 breq .+54 ; 0x904 - * \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise. - */ - static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsError(void) - { - return ((UPINTX & (1 << PERRI)) ? true : false); - 8ce: 90 91 a6 00 lds r25, 0x00A6 - ErrorCode = HOST_WAITERROR_DeviceDisconnect; - - break; - } - - if (Pipe_IsError() == true) - 8d2: 94 ff sbrs r25, 4 - 8d4: 09 c0 rjmp .+18 ; 0x8e8 - - /** Clears the error flags for the currently selected pipe. */ - static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearError(void) - { - UPERRX = 0; - 8d6: 10 92 f5 00 sts 0x00F5, r1 - UPINTX &= ~(1 << PERRI); - 8da: 80 91 a6 00 lds r24, 0x00A6 - 8de: 8f 7e andi r24, 0xEF ; 239 - 8e0: 80 93 a6 00 sts 0x00A6, r24 - { - Pipe_ClearError(); - ErrorCode = HOST_WAITERROR_PipeError; - 8e4: 82 e0 ldi r24, 0x02 ; 2 - - break; - 8e6: 0f c0 rjmp .+30 ; 0x906 - * \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise. - */ - static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsStalled(void) - { - return ((UPINTX & (1 << RXSTALLI)) ? true : false); - 8e8: 90 91 a6 00 lds r25, 0x00A6 - } - - if (Pipe_IsStalled() == true) - 8ec: 91 ff sbrs r25, 1 - 8ee: 07 c0 rjmp .+14 ; 0x8fe - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearStall(void) - { - UPINTX &= ~(1 << RXSTALLI); - 8f0: 80 91 a6 00 lds r24, 0x00A6 - 8f4: 8d 7f andi r24, 0xFD ; 253 - 8f6: 80 93 a6 00 sts 0x00A6, r24 - { - Pipe_ClearStall(); - ErrorCode = HOST_WAITERROR_SetupStalled; - 8fa: 83 e0 ldi r24, 0x03 ; 3 - - break; - 8fc: 04 c0 rjmp .+8 ; 0x906 - USB_INT_Disable(USB_INT_HSOFI); - USB_INT_Clear(USB_INT_HSOFI); - - USB_Host_ResumeBus(); - - while (MS) - 8fe: 88 23 and r24, r24 - 900: c1 f6 brne .-80 ; 0x8b2 - 902: 01 c0 rjmp .+2 ; 0x906 - MS--; - } - - if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host)) - { - ErrorCode = HOST_WAITERROR_DeviceDisconnect; - 904: 81 e0 ldi r24, 0x01 ; 1 - - break; - } - } - - if (BusSuspended) - 906: 41 15 cp r20, r1 - 908: 51 05 cpc r21, r1 - 90a: 29 f4 brne .+10 ; 0x916 - * messages to the device. - */ - static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SuspendBus(void) - { - UHCON &= ~(1 << SOFEN); - 90c: 90 91 9e 00 lds r25, 0x009E - 910: 9e 7f andi r25, 0xFE ; 254 - 912: 90 93 9e 00 sts 0x009E, r25 - USB_Host_SuspendBus(); - - if (HSOFIEnabled) - 916: 21 15 cp r18, r1 - 918: 31 05 cpc r19, r1 - 91a: 29 f0 breq .+10 ; 0x926 - UEIENX |= (1 << RXSTPE); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHIEN |= (1 << HSOFE); - 91c: 90 91 a0 00 lds r25, 0x00A0 - 920: 90 62 ori r25, 0x20 ; 32 - 922: 90 93 a0 00 sts 0x00A0, r25 - USB_INT_Enable(USB_INT_HSOFI); - - return ErrorCode; -} - 926: 08 95 ret - -00000928 : - -#define __INCLUDE_FROM_HOST_C -#include "../Host.h" - -void USB_Host_ProcessNextHostState(void) -{ - 928: ef 92 push r14 - 92a: 0f 93 push r16 - 92c: 1f 93 push r17 - 92e: df 93 push r29 - 930: cf 93 push r28 - 932: cd b7 in r28, 0x3d ; 61 - 934: de b7 in r29, 0x3e ; 62 - 936: 28 97 sbiw r28, 0x08 ; 8 - 938: 0f b6 in r0, 0x3f ; 63 - 93a: f8 94 cli - 93c: de bf out 0x3e, r29 ; 62 - 93e: 0f be out 0x3f, r0 ; 63 - 940: cd bf out 0x3d, r28 ; 61 - uint8_t SubErrorCode = HOST_ENUMERROR_NoError; - - static uint16_t WaitMSRemaining; - static uint8_t PostWaitState; - - switch (USB_HostState) - 942: 80 91 2b 01 lds r24, 0x012B - 946: 86 30 cpi r24, 0x06 ; 6 - 948: 09 f4 brne .+2 ; 0x94c - 94a: 99 c0 rjmp .+306 ; 0xa7e - 94c: 87 30 cpi r24, 0x07 ; 7 - 94e: 70 f4 brcc .+28 ; 0x96c - 950: 83 30 cpi r24, 0x03 ; 3 - 952: c9 f1 breq .+114 ; 0x9c6 - 954: 84 30 cpi r24, 0x04 ; 4 - 956: 20 f4 brcc .+8 ; 0x960 - 958: 81 30 cpi r24, 0x01 ; 1 - 95a: 09 f0 breq .+2 ; 0x95e - 95c: 0b c1 rjmp .+534 ; 0xb74 - 95e: 13 c0 rjmp .+38 ; 0x986 - 960: 84 30 cpi r24, 0x04 ; 4 - 962: c9 f1 breq .+114 ; 0x9d6 - 964: 85 30 cpi r24, 0x05 ; 5 - 966: 09 f0 breq .+2 ; 0x96a - 968: 05 c1 rjmp .+522 ; 0xb74 - 96a: 60 c0 rjmp .+192 ; 0xa2c - 96c: 88 30 cpi r24, 0x08 ; 8 - 96e: 09 f4 brne .+2 ; 0x972 - 970: a0 c0 rjmp .+320 ; 0xab2 - 972: 88 30 cpi r24, 0x08 ; 8 - 974: 08 f4 brcc .+2 ; 0x978 - 976: 8f c0 rjmp .+286 ; 0xa96 - 978: 89 30 cpi r24, 0x09 ; 9 - 97a: 09 f4 brne .+2 ; 0x97e - 97c: b9 c0 rjmp .+370 ; 0xaf0 - 97e: 8a 30 cpi r24, 0x0A ; 10 - 980: 09 f0 breq .+2 ; 0x984 - 982: f8 c0 rjmp .+496 ; 0xb74 - 984: de c0 rjmp .+444 ; 0xb42 - { - case HOST_STATE_WaitForDevice: - if (WaitMSRemaining) - 986: 00 91 20 01 lds r16, 0x0120 - 98a: 10 91 21 01 lds r17, 0x0121 - 98e: 01 15 cp r16, r1 - 990: 11 05 cpc r17, r1 - 992: 09 f4 brne .+2 ; 0x996 - 994: ef c0 rjmp .+478 ; 0xb74 - { - if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - 996: 81 e0 ldi r24, 0x01 ; 1 - 998: 72 df rcall .-284 ; 0x87e - 99a: 68 2f mov r22, r24 - 99c: 88 23 and r24, r24 - 99e: 31 f0 breq .+12 ; 0x9ac - { - USB_HostState = PostWaitState; - 9a0: 80 91 1f 01 lds r24, 0x011F - 9a4: 80 93 2b 01 sts 0x012B, r24 - ErrorCode = HOST_ENUMERROR_WaitStage; - 9a8: 81 e0 ldi r24, 0x01 ; 1 - break; - 9aa: e0 c0 rjmp .+448 ; 0xb6c - } - - if (!(--WaitMSRemaining)) - 9ac: 01 50 subi r16, 0x01 ; 1 - 9ae: 10 40 sbci r17, 0x00 ; 0 - 9b0: 10 93 21 01 sts 0x0121, r17 - 9b4: 00 93 20 01 sts 0x0120, r16 - 9b8: 01 15 cp r16, r1 - 9ba: 11 05 cpc r17, r1 - 9bc: 09 f0 breq .+2 ; 0x9c0 - 9be: da c0 rjmp .+436 ; 0xb74 - USB_HostState = PostWaitState; - 9c0: 80 91 1f 01 lds r24, 0x011F - 9c4: c3 c0 rjmp .+390 ; 0xb4c - } - - break; - case HOST_STATE_Powered: - WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS; - 9c6: 88 ee ldi r24, 0xE8 ; 232 - 9c8: 93 e0 ldi r25, 0x03 ; 3 - 9ca: 90 93 21 01 sts 0x0121, r25 - 9ce: 80 93 20 01 sts 0x0120, r24 - - USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle; - 9d2: 84 e0 ldi r24, 0x04 ; 4 - 9d4: bb c0 rjmp .+374 ; 0xb4c - break; - case HOST_STATE_Powered_WaitForDeviceSettle: - if (WaitMSRemaining--) - 9d6: 80 91 20 01 lds r24, 0x0120 - 9da: 90 91 21 01 lds r25, 0x0121 - 9de: 9c 01 movw r18, r24 - 9e0: 21 50 subi r18, 0x01 ; 1 - 9e2: 30 40 sbci r19, 0x00 ; 0 - 9e4: 30 93 21 01 sts 0x0121, r19 - 9e8: 20 93 20 01 sts 0x0120, r18 - 9ec: 00 97 sbiw r24, 0x00 ; 0 - 9ee: 39 f0 breq .+14 ; 0x9fe - 9f0: 8f ec ldi r24, 0xCF ; 207 - 9f2: 97 e0 ldi r25, 0x07 ; 7 - 9f4: 01 97 sbiw r24, 0x01 ; 1 - 9f6: f1 f7 brne .-4 ; 0x9f4 - 9f8: 00 c0 rjmp .+0 ; 0x9fa - 9fa: 00 00 nop - 9fc: bb c0 rjmp .+374 ; 0xb74 - } - - static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_Off(void) - { - PORTE &= ~(1 << 7); - 9fe: 77 98 cbi 0x0e, 7 ; 14 - - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_OTGPAD_On(void) - { - USBCON |= (1 << OTGPADE); - a00: 80 91 d8 00 lds r24, 0x00D8 - a04: 80 61 ori r24, 0x10 ; 16 - a06: 80 93 d8 00 sts 0x00D8, r24 - } - - static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Enable(void) - { - OTGCON &= ~(1 << VBUSHWC); - a0a: 80 91 dd 00 lds r24, 0x00DD - a0e: 8b 7f andi r24, 0xFB ; 251 - a10: 80 93 dd 00 sts 0x00DD, r24 - UHWCON |= (1 << UVCONE); - a14: 80 91 d7 00 lds r24, 0x00D7 - a18: 80 61 ori r24, 0x10 ; 16 - a1a: 80 93 d7 00 sts 0x00D7, r24 - } - - static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_On(void) - { - OTGCON |= (1 << VBUSREQ); - a1e: 80 91 dd 00 lds r24, 0x00DD - a22: 82 60 ori r24, 0x02 ; 2 - a24: 80 93 dd 00 sts 0x00DD, r24 - - USB_OTGPAD_On(); - USB_Host_VBUS_Auto_Enable(); - USB_Host_VBUS_Auto_On(); - - USB_HostState = HOST_STATE_Powered_WaitForConnect; - a28: 85 e0 ldi r24, 0x05 ; 5 - a2a: 90 c0 rjmp .+288 ; 0xb4c - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHINT & (1 << HSOFI)); - case USB_INT_DCONNI: - return (UHINT & (1 << DCONNI)); - a2c: 80 91 9f 00 lds r24, 0x009F - } - - break; - case HOST_STATE_Powered_WaitForConnect: - if (USB_INT_HasOccurred(USB_INT_DCONNI)) - a30: 80 ff sbrs r24, 0 - a32: a0 c0 rjmp .+320 ; 0xb74 - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - break; - case USB_INT_DCONNI: - UHINT &= ~(1 << DCONNI); - a34: 80 91 9f 00 lds r24, 0x009F - a38: 8e 7f andi r24, 0xFE ; 254 - a3a: 80 93 9f 00 sts 0x009F, r24 - break; - case USB_INT_DDISCI: - UHINT &= ~(1 << DDISCI); - a3e: 80 91 9f 00 lds r24, 0x009F - a42: 8d 7f andi r24, 0xFD ; 253 - a44: 80 93 9f 00 sts 0x009F, r24 - break; - case USB_INT_BCERRI: - OTGINT &= ~(1 << BCERRI); - break; - case USB_INT_VBERRI: - OTGINT &= ~(1 << VBERRI); - a48: 80 91 df 00 lds r24, 0x00DF - a4c: 8d 7f andi r24, 0xFD ; 253 - a4e: 80 93 df 00 sts 0x00DF, r24 - break; - case USB_INT_BCERRI: - OTGIEN |= (1 << BCERRE); - break; - case USB_INT_VBERRI: - OTGIEN |= (1 << VBERRE); - a52: 80 91 de 00 lds r24, 0x00DE - a56: 82 60 ori r24, 0x02 ; 2 - a58: 80 93 de 00 sts 0x00DE, r24 - * host and attached device may occur. - */ - static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeBus(void) - { - UHCON |= (1 << SOFEN); - a5c: 80 91 9e 00 lds r24, 0x009E - a60: 81 60 ori r24, 0x01 ; 1 - a62: 80 93 9e 00 sts 0x009E, r24 - - USB_INT_Clear(USB_INT_VBERRI); - USB_INT_Enable(USB_INT_VBERRI); - - USB_Host_ResumeBus(); - Pipe_ClearPipes(); - a66: 26 d1 rcall .+588 ; 0xcb4 - - HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset); - a68: 81 e0 ldi r24, 0x01 ; 1 - a6a: 80 93 2b 01 sts 0x012B, r24 - a6e: 84 e6 ldi r24, 0x64 ; 100 - a70: 90 e0 ldi r25, 0x00 ; 0 - a72: 90 93 21 01 sts 0x0121, r25 - a76: 80 93 20 01 sts 0x0120, r24 - a7a: 86 e0 ldi r24, 0x06 ; 6 - a7c: 5f c0 rjmp .+190 ; 0xb3c - } - - break; - case HOST_STATE_Powered_DoReset: - USB_Host_ResetDevice(); - a7e: ab de rcall .-682 ; 0x7d6 - - HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe); - a80: 81 e0 ldi r24, 0x01 ; 1 - a82: 80 93 2b 01 sts 0x012B, r24 - a86: 88 ec ldi r24, 0xC8 ; 200 - a88: 90 e0 ldi r25, 0x00 ; 0 - a8a: 90 93 21 01 sts 0x0121, r25 - a8e: 80 93 20 01 sts 0x0120, r24 - a92: 87 e0 ldi r24, 0x07 ; 7 - a94: 53 c0 rjmp .+166 ; 0xb3c - break; - case HOST_STATE_Powered_ConfigPipe: - Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL, - a96: 80 e0 ldi r24, 0x00 ; 0 - a98: 60 e0 ldi r22, 0x00 ; 0 - a9a: 40 e0 ldi r20, 0x00 ; 0 - a9c: 20 e0 ldi r18, 0x00 ; 0 - a9e: 00 e4 ldi r16, 0x40 ; 64 - aa0: 10 e0 ldi r17, 0x00 ; 0 - aa2: ee 24 eor r14, r14 - aa4: a0 d0 rcall .+320 ; 0xbe6 - * \return Boolean \c true if the selected pipe is configured, \c false otherwise. - */ - static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsConfigured(void) - { - return ((UPSTAX & (1 << CFGOK)) ? true : false); - aa6: 80 91 ac 00 lds r24, 0x00AC - PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP, - PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - aaa: 87 ff sbrs r24, 7 - aac: 5b c0 rjmp .+182 ; 0xb64 - ErrorCode = HOST_ENUMERROR_PipeConfigError; - SubErrorCode = 0; - break; - } - - USB_HostState = HOST_STATE_Default; - aae: 88 e0 ldi r24, 0x08 ; 8 - ab0: 4d c0 rjmp .+154 ; 0xb4c - break; - case HOST_STATE_Default: - USB_ControlRequest = (USB_Request_Header_t) - ab2: a3 e2 ldi r26, 0x23 ; 35 - ab4: b1 e0 ldi r27, 0x01 ; 1 - ab6: e3 e1 ldi r30, 0x13 ; 19 - ab8: f1 e0 ldi r31, 0x01 ; 1 - aba: 88 e0 ldi r24, 0x08 ; 8 - abc: 01 90 ld r0, Z+ - abe: 0d 92 st X+, r0 - ac0: 81 50 subi r24, 0x01 ; 1 - ac2: e1 f7 brne .-8 ; 0xabc - .wLength = 8, - }; - - uint8_t DataBuffer[8]; - - if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful) - ac4: ce 01 movw r24, r28 - ac6: 01 96 adiw r24, 0x01 ; 1 - ac8: dc d2 rcall .+1464 ; 0x1082 - aca: 68 2f mov r22, r24 - acc: 88 23 and r24, r24 - ace: 09 f0 breq .+2 ; 0xad2 - ad0: 4c c0 rjmp .+152 ; 0xb6a - { - ErrorCode = HOST_ENUMERROR_ControlError; - break; - } - - USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)]; - ad2: 88 85 ldd r24, Y+8 ; 0x08 - ad4: 80 93 1b 01 sts 0x011B, r24 - - USB_Host_ResetDevice(); - ad8: 7e de rcall .-772 ; 0x7d6 - - HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset); - ada: 81 e0 ldi r24, 0x01 ; 1 - adc: 80 93 2b 01 sts 0x012B, r24 - ae0: 88 ec ldi r24, 0xC8 ; 200 - ae2: 90 e0 ldi r25, 0x00 ; 0 - ae4: 90 93 21 01 sts 0x0121, r25 - ae8: 80 93 20 01 sts 0x0120, r24 - aec: 89 e0 ldi r24, 0x09 ; 9 - aee: 26 c0 rjmp .+76 ; 0xb3c - break; - case HOST_STATE_Default_PostReset: - Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL, - af0: 00 91 1b 01 lds r16, 0x011B - af4: 80 e0 ldi r24, 0x00 ; 0 - af6: 60 e0 ldi r22, 0x00 ; 0 - af8: 40 e0 ldi r20, 0x00 ; 0 - afa: 20 e0 ldi r18, 0x00 ; 0 - afc: 10 e0 ldi r17, 0x00 ; 0 - afe: ee 24 eor r14, r14 - b00: 72 d0 rcall .+228 ; 0xbe6 - b02: 80 91 ac 00 lds r24, 0x00AC - PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP, - USB_ControlPipeSize, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - b06: 87 ff sbrs r24, 7 - b08: 2d c0 rjmp .+90 ; 0xb64 - ErrorCode = HOST_ENUMERROR_PipeConfigError; - SubErrorCode = 0; - break; - } - - USB_ControlRequest = (USB_Request_Header_t) - b0a: a3 e2 ldi r26, 0x23 ; 35 - b0c: b1 e0 ldi r27, 0x01 ; 1 - b0e: eb e0 ldi r30, 0x0B ; 11 - b10: f1 e0 ldi r31, 0x01 ; 1 - b12: 88 e0 ldi r24, 0x08 ; 8 - b14: 01 90 ld r0, Z+ - b16: 0d 92 st X+, r0 - b18: 81 50 subi r24, 0x01 ; 1 - b1a: e1 f7 brne .-8 ; 0xb14 - .wValue = USB_HOST_DEVICEADDRESS, - .wIndex = 0, - .wLength = 0, - }; - - if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful) - b1c: 80 e0 ldi r24, 0x00 ; 0 - b1e: 90 e0 ldi r25, 0x00 ; 0 - b20: b0 d2 rcall .+1376 ; 0x1082 - b22: 68 2f mov r22, r24 - b24: 88 23 and r24, r24 - b26: 09 f5 brne .+66 ; 0xb6a - { - ErrorCode = HOST_ENUMERROR_ControlError; - break; - } - - HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet); - b28: 81 e0 ldi r24, 0x01 ; 1 - b2a: 80 93 2b 01 sts 0x012B, r24 - b2e: 84 e6 ldi r24, 0x64 ; 100 - b30: 90 e0 ldi r25, 0x00 ; 0 - b32: 90 93 21 01 sts 0x0121, r25 - b36: 80 93 20 01 sts 0x0120, r24 - b3a: 8a e0 ldi r24, 0x0A ; 10 - b3c: 80 93 1f 01 sts 0x011F, r24 - break; - b40: 19 c0 rjmp .+50 ; 0xb74 - } - - static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SetDeviceAddress(const uint8_t Address) - { - UHADDR = (Address & 0x7F); - b42: 81 e0 ldi r24, 0x01 ; 1 - b44: 80 93 a1 00 sts 0x00A1, r24 - case HOST_STATE_Default_PostAddressSet: - USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS); - - EVENT_USB_Host_DeviceEnumerationComplete(); - b48: 24 dc rcall .-1976 ; 0x392 - USB_HostState = HOST_STATE_Addressed; - b4a: 8b e0 ldi r24, 0x0B ; 11 - b4c: 80 93 2b 01 sts 0x012B, r24 - break; - b50: 11 c0 rjmp .+34 ; 0xb74 - } - - if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached)) - { - EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode); - b52: 40 dc rcall .-1920 ; 0x3d4 - } - - static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Off(void) - { - OTGCON |= (1 << VBUSRQC); - b54: 80 91 dd 00 lds r24, 0x00DD - b58: 81 60 ori r24, 0x01 ; 1 - b5a: 80 93 dd 00 sts 0x00DD, r24 - - USB_Host_VBUS_Auto_Off(); - - EVENT_USB_Host_DeviceUnattached(); - b5e: 14 dc rcall .-2008 ; 0x388 - - USB_ResetInterface(); - b60: d5 d0 rcall .+426 ; 0xd0c - b62: 08 c0 rjmp .+16 ; 0xb74 - USB_ControlPipeSize, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - { - ErrorCode = HOST_ENUMERROR_PipeConfigError; - SubErrorCode = 0; - b64: 60 e0 ldi r22, 0x00 ; 0 - PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP, - USB_ControlPipeSize, PIPE_BANK_SINGLE); - - if (!(Pipe_IsConfigured())) - { - ErrorCode = HOST_ENUMERROR_PipeConfigError; - b66: 84 e0 ldi r24, 0x04 ; 4 - b68: 01 c0 rjmp .+2 ; 0xb6c - .wLength = 0, - }; - - if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful) - { - ErrorCode = HOST_ENUMERROR_ControlError; - b6a: 83 e0 ldi r24, 0x03 ; 3 - EVENT_USB_Host_DeviceEnumerationComplete(); - USB_HostState = HOST_STATE_Addressed; - break; - } - - if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached)) - b6c: 90 91 2b 01 lds r25, 0x012B - b70: 92 30 cpi r25, 0x02 ; 2 - b72: 79 f7 brne .-34 ; 0xb52 - - EVENT_USB_Host_DeviceUnattached(); - - USB_ResetInterface(); - } -} - b74: 28 96 adiw r28, 0x08 ; 8 - b76: 0f b6 in r0, 0x3f ; 63 - b78: f8 94 cli - b7a: de bf out 0x3e, r29 ; 62 - b7c: 0f be out 0x3f, r0 ; 63 - b7e: cd bf out 0x3d, r28 ; 61 - b80: cf 91 pop r28 - b82: df 91 pop r29 - b84: 1f 91 pop r17 - b86: 0f 91 pop r16 - b88: ef 90 pop r14 - b8a: 08 95 ret - -00000b8c : - USB_INT_Enable(USB_INT_DDISCI); -} - -uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber) -{ - USB_ControlRequest = (USB_Request_Header_t) - b8c: 10 92 23 01 sts 0x0123, r1 - b90: 99 e0 ldi r25, 0x09 ; 9 - b92: 90 93 24 01 sts 0x0124, r25 - b96: 80 93 25 01 sts 0x0125, r24 - b9a: 10 92 26 01 sts 0x0126, r1 - b9e: 10 92 28 01 sts 0x0128, r1 - ba2: 10 92 27 01 sts 0x0127, r1 - ba6: 10 92 2a 01 sts 0x012A, r1 - baa: 10 92 29 01 sts 0x0129, r1 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - bae: 10 92 a7 00 sts 0x00A7, r1 - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); - bb2: 80 e0 ldi r24, 0x00 ; 0 - bb4: 90 e0 ldi r25, 0x00 ; 0 -} - bb6: 65 c2 rjmp .+1226 ; 0x1082 - -00000bb8 : -} - -uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceNum, - const uint8_t AltSetting) -{ - USB_ControlRequest = (USB_Request_Header_t) - bb8: e3 e2 ldi r30, 0x23 ; 35 - bba: f1 e0 ldi r31, 0x01 ; 1 - bbc: 91 e0 ldi r25, 0x01 ; 1 - bbe: 90 93 23 01 sts 0x0123, r25 - bc2: 9b e0 ldi r25, 0x0B ; 11 - bc4: 90 93 24 01 sts 0x0124, r25 - bc8: 60 93 25 01 sts 0x0125, r22 - bcc: 13 82 std Z+3, r1 ; 0x03 - bce: 80 93 27 01 sts 0x0127, r24 - bd2: 15 82 std Z+5, r1 ; 0x05 - bd4: 10 92 2a 01 sts 0x012A, r1 - bd8: 10 92 29 01 sts 0x0129, r1 - bdc: 10 92 a7 00 sts 0x00A7, r1 - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); - be0: 80 e0 ldi r24, 0x00 ; 0 - be2: 90 e0 ldi r25, 0x00 ; 0 -} - be4: 4e c2 rjmp .+1180 ; 0x1082 - -00000be6 : - const uint8_t Type, - const uint8_t Token, - const uint8_t EndpointNumber, - const uint16_t Size, - const uint8_t Banks) -{ - be6: ef 92 push r14 - be8: 0f 93 push r16 - bea: 1f 93 push r17 - bec: 5e 2d mov r21, r14 - - Pipe_SelectPipe(PNum); - - if (PNum == Number) - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - bee: 62 95 swap r22 - bf0: 66 0f add r22, r22 - bf2: 66 0f add r22, r22 - bf4: 60 7c andi r22, 0xC0 ; 192 - bf6: 64 2b or r22, r20 - bf8: 2f 70 andi r18, 0x0F ; 15 - bfa: 62 2b or r22, r18 - - Pipe_SetInfiniteINRequests(); - - return Pipe_IsConfigured(); -#else - for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++) - bfc: 98 2f mov r25, r24 - Pipe_SelectPipe(PNum); - - if (PNum == Number) - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - bfe: 52 60 ori r21, 0x02 ; 2 - - Pipe_SetInfiniteINRequests(); - - return Pipe_IsConfigured(); -#else - for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++) - c00: 4d c0 rjmp .+154 ; 0xc9c - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - c02: 90 93 a7 00 sts 0x00A7, r25 - uint8_t UPINRQXTemp; - uint8_t UPIENXTemp; - - Pipe_SelectPipe(PNum); - - if (PNum == Number) - c06: 98 17 cp r25, r24 - c08: b1 f4 brne .+44 ; 0xc36 - c0a: 28 e0 ldi r18, 0x08 ; 8 - c0c: 30 e0 ldi r19, 0x00 ; 0 - c0e: 40 e0 ldi r20, 0x00 ; 0 - c10: 03 c0 rjmp .+6 ; 0xc18 - uint8_t MaskVal = 0; - uint16_t CheckBytes = 8; - - while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE)) - { - MaskVal++; - c12: 4f 5f subi r20, 0xFF ; 255 - CheckBytes <<= 1; - c14: 22 0f add r18, r18 - c16: 33 1f adc r19, r19 - static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) - { - uint8_t MaskVal = 0; - uint16_t CheckBytes = 8; - - while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE)) - c18: 20 17 cp r18, r16 - c1a: 31 07 cpc r19, r17 - c1c: 10 f4 brcc .+4 ; 0xc22 - c1e: 45 30 cpi r20, 0x05 ; 5 - c20: c1 f7 brne .-16 ; 0xc12 - { - MaskVal++; - CheckBytes <<= 1; - } - - return (MaskVal << EPSIZE0); - c22: 24 2f mov r18, r20 - c24: 22 95 swap r18 - c26: 20 7f andi r18, 0xF0 ; 240 - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - c28: 25 2b or r18, r21 - - Pipe_SelectPipe(PNum); - - if (PNum == Number) - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - c2a: a6 2f mov r26, r22 - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - UPCFG2XTemp = 0; - UPCONXTemp = ((1 << PEN) | (1 << INMODE)); - UPINRQXTemp = 0; - UPIENXTemp = 0; - c2c: 40 e0 ldi r20, 0x00 ; 0 - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - UPCFG2XTemp = 0; - UPCONXTemp = ((1 << PEN) | (1 << INMODE)); - UPINRQXTemp = 0; - c2e: 70 e0 ldi r23, 0x00 ; 0 - if (PNum == Number) - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - UPCFG2XTemp = 0; - UPCONXTemp = ((1 << PEN) | (1 << INMODE)); - c30: e1 e2 ldi r30, 0x21 ; 33 - - if (PNum == Number) - { - UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); - UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); - UPCFG2XTemp = 0; - c32: f0 e0 ldi r31, 0x00 ; 0 - c34: 0c c0 rjmp .+24 ; 0xc4e - UPINRQXTemp = 0; - UPIENXTemp = 0; - } - else - { - UPCFG0XTemp = UPCFG0X; - c36: a0 91 aa 00 lds r26, 0x00AA - UPCFG1XTemp = UPCFG1X; - c3a: 20 91 ab 00 lds r18, 0x00AB - UPCFG2XTemp = UPCFG2X; - c3e: f0 91 ad 00 lds r31, 0x00AD - UPCONXTemp = UPCONX; - c42: e0 91 a9 00 lds r30, 0x00A9 - UPINRQXTemp = UPINRQX; - c46: 70 91 a5 00 lds r23, 0x00A5 - UPIENXTemp = UPIENX; - c4a: 40 91 ae 00 lds r20, 0x00AE - - /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */ - static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetInfiniteINRequests(void) - { - UPCONX |= (1 << INMODE); - c4e: 30 91 a9 00 lds r19, 0x00A9 - c52: 30 62 ori r19, 0x20 ; 32 - c54: 30 93 a9 00 sts 0x00A9, r19 - } - - Pipe_SetInfiniteINRequests(); - - if (!(UPCFG1XTemp & (1 << ALLOC))) - c58: 21 ff sbrs r18, 1 - c5a: 1f c0 rjmp .+62 ; 0xc9a - * from an attached device. - */ - static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_DisablePipe(void) - { - UPCONX &= ~(1 << PEN); - c5c: 30 91 a9 00 lds r19, 0x00A9 - c60: 3e 7f andi r19, 0xFE ; 254 - c62: 30 93 a9 00 sts 0x00A9, r19 - continue; - - Pipe_DisablePipe(); - UPCFG1X &= (1 << ALLOC); - c66: 30 91 ab 00 lds r19, 0x00AB - c6a: 32 70 andi r19, 0x02 ; 2 - c6c: 30 93 ab 00 sts 0x00AB, r19 - * \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe(). - */ - static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_EnablePipe(void) - { - UPCONX |= (1 << PEN); - c70: 30 91 a9 00 lds r19, 0x00A9 - c74: 31 60 ori r19, 0x01 ; 1 - c76: 30 93 a9 00 sts 0x00A9, r19 - - Pipe_EnablePipe(); - UPCFG0X = UPCFG0XTemp; - c7a: a0 93 aa 00 sts 0x00AA, r26 - UPCFG1X = UPCFG1XTemp; - c7e: 20 93 ab 00 sts 0x00AB, r18 - UPCFG2X = UPCFG2XTemp; - c82: f0 93 ad 00 sts 0x00AD, r31 - UPCONX = UPCONXTemp; - c86: e0 93 a9 00 sts 0x00A9, r30 - UPINRQX = UPINRQXTemp; - c8a: 70 93 a5 00 sts 0x00A5, r23 - UPIENX = UPIENXTemp; - c8e: 40 93 ae 00 sts 0x00AE, r20 - * \return Boolean \c true if the selected pipe is configured, \c false otherwise. - */ - static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsConfigured(void) - { - return ((UPSTAX & (1 << CFGOK)) ? true : false); - c92: 20 91 ac 00 lds r18, 0x00AC - - if (!(Pipe_IsConfigured())) - c96: 27 ff sbrs r18, 7 - c98: 08 c0 rjmp .+16 ; 0xcaa - - Pipe_SetInfiniteINRequests(); - - return Pipe_IsConfigured(); -#else - for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++) - c9a: 9f 5f subi r25, 0xFF ; 255 - c9c: 97 30 cpi r25, 0x07 ; 7 - c9e: 08 f4 brcc .+2 ; 0xca2 - ca0: b0 cf rjmp .-160 ; 0xc02 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - ca2: 80 93 a7 00 sts 0x00A7, r24 - if (!(Pipe_IsConfigured())) - return false; - } - - Pipe_SelectPipe(Number); - return true; - ca6: 81 e0 ldi r24, 0x01 ; 1 - ca8: 01 c0 rjmp .+2 ; 0xcac - UPCONX = UPCONXTemp; - UPINRQX = UPINRQXTemp; - UPIENX = UPIENXTemp; - - if (!(Pipe_IsConfigured())) - return false; - caa: 80 e0 ldi r24, 0x00 ; 0 - } - - Pipe_SelectPipe(Number); - return true; -#endif -} - cac: 1f 91 pop r17 - cae: 0f 91 pop r16 - cb0: ef 90 pop r14 - cb2: 08 95 ret - -00000cb4 : - -void Pipe_ClearPipes(void) -{ - UPINT = 0; - cb4: 10 92 f8 00 sts 0x00F8, r1 - - for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++) - cb8: 80 e0 ldi r24, 0x00 ; 0 - cba: 80 93 a7 00 sts 0x00A7, r24 - { - Pipe_SelectPipe(PNum); - UPIENX = 0; - cbe: 10 92 ae 00 sts 0x00AE, r1 - UPINTX = 0; - cc2: 10 92 a6 00 sts 0x00A6, r1 - UPCFG1X = 0; - cc6: 10 92 ab 00 sts 0x00AB, r1 - * from an attached device. - */ - static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_DisablePipe(void) - { - UPCONX &= ~(1 << PEN); - cca: 90 91 a9 00 lds r25, 0x00A9 - cce: 9e 7f andi r25, 0xFE ; 254 - cd0: 90 93 a9 00 sts 0x00A9, r25 - -void Pipe_ClearPipes(void) -{ - UPINT = 0; - - for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++) - cd4: 8f 5f subi r24, 0xFF ; 255 - cd6: 87 30 cpi r24, 0x07 ; 7 - cd8: 81 f7 brne .-32 ; 0xcba - UPIENX = 0; - UPINTX = 0; - UPCFG1X = 0; - Pipe_DisablePipe(); - } -} - cda: 08 95 ret - -00000cdc : - USB_ResetInterface(); -} - -void USB_Disable(void) -{ - USB_INT_DisableAllInterrupts(); - cdc: 6e d0 rcall .+220 ; 0xdba - USB_INT_ClearAllInterrupts(); - cde: 75 d0 rcall .+234 ; 0xdca - * enumerating the device once attached until \ref USB_Attach() is called. - */ - static inline void USB_Detach(void) ATTR_ALWAYS_INLINE; - static inline void USB_Detach(void) - { - UDCON |= (1 << DETACH); - ce0: e0 ee ldi r30, 0xE0 ; 224 - ce2: f0 e0 ldi r31, 0x00 ; 0 - ce4: 80 81 ld r24, Z - ce6: 81 60 ori r24, 0x01 ; 1 - ce8: 80 83 st Z, r24 - } - - static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE; - static inline void USB_Controller_Disable(void) - { - USBCON &= ~(1 << USBE); - cea: e8 ed ldi r30, 0xD8 ; 216 - cec: f0 e0 ldi r31, 0x00 ; 0 - cee: 80 81 ld r24, Z - cf0: 8f 77 andi r24, 0x7F ; 127 - cf2: 80 83 st Z, r24 - } - - static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_PLL_Off(void) - { - PLLCSR = 0; - cf4: 19 bc out 0x29, r1 ; 41 - - static inline void USB_REG_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_REG_Off(void) - { - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - UHWCON &= ~(1 << UVREGE); - cf6: a7 ed ldi r26, 0xD7 ; 215 - cf8: b0 e0 ldi r27, 0x00 ; 0 - cfa: 8c 91 ld r24, X - cfc: 8e 7f andi r24, 0xFE ; 254 - cfe: 8c 93 st X, r24 - } - - static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_OTGPAD_Off(void) - { - USBCON &= ~(1 << OTGPADE); - d00: 80 81 ld r24, Z - d02: 8f 7e andi r24, 0xEF ; 239 - d04: 80 83 st Z, r24 - - #if defined(USB_CAN_BE_BOTH) - USB_CurrentMode = USB_MODE_None; - #endif - - USB_IsInitialized = false; - d06: 10 92 22 01 sts 0x0122, r1 -} - d0a: 08 95 ret - -00000d0c : -{ - #if defined(USB_CAN_BE_BOTH) - bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0); - #endif - - USB_INT_DisableAllInterrupts(); - d0c: 56 d0 rcall .+172 ; 0xdba - USB_INT_ClearAllInterrupts(); - d0e: 5d d0 rcall .+186 ; 0xdca - } - - static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE; - static inline void USB_Controller_Reset(void) - { - const uint8_t Temp = USBCON; - d10: 80 91 d8 00 lds r24, 0x00D8 - - USBCON = (Temp & ~(1 << USBE)); - d14: 98 2f mov r25, r24 - d16: 9f 77 andi r25, 0x7F ; 127 - d18: 90 93 d8 00 sts 0x00D8, r25 - USBCON = (Temp | (1 << USBE)); - d1c: 80 68 ori r24, 0x80 ; 128 - d1e: 80 93 d8 00 sts 0x00D8, r24 - } - - static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void USB_CLK_Unfreeze(void) - { - USBCON &= ~(1 << FRZCLK); - d22: 80 91 d8 00 lds r24, 0x00D8 - d26: 8f 7d andi r24, 0xDF ; 223 - d28: 80 93 d8 00 sts 0x00D8, r24 - #endif - } - else if (USB_CurrentMode == USB_MODE_Host) - { - #if defined(USB_CAN_BE_HOST) - UHWCON &= ~(1 << UIMOD); - d2c: 80 91 d7 00 lds r24, 0x00D7 - d30: 8f 77 andi r24, 0x7F ; 127 - d32: 80 93 d7 00 sts 0x00D7, r24 - - /* Inline Functions: */ - static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_PLL_On(void) - { - PLLCSR = USB_PLL_PSC; - d36: 8c e0 ldi r24, 0x0C ; 12 - d38: 89 bd out 0x29, r24 ; 41 - PLLCSR |= (1 << PLLE); - d3a: 89 b5 in r24, 0x29 ; 41 - d3c: 82 60 ori r24, 0x02 ; 2 - d3e: 89 bd out 0x29, r24 ; 41 - - if (!(USB_Options & USB_OPT_MANUAL_PLL)) - { - #if defined(USB_CAN_BE_HOST) - USB_PLL_On(); - while (!(USB_PLL_IsReady())); - d40: 09 b4 in r0, 0x29 ; 41 - d42: 00 fe sbrs r0, 0 - d44: fd cf rjmp .-6 ; 0xd40 -#endif - -#if defined(USB_CAN_BE_HOST) -static void USB_Init_Host(void) -{ - USB_HostState = HOST_STATE_Unattached; - d46: 82 e0 ldi r24, 0x02 ; 2 - d48: 80 93 2b 01 sts 0x012B, r24 - USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE; - d4c: 80 e4 ldi r24, 0x40 ; 64 - d4e: 80 93 1b 01 sts 0x011B, r24 - #if !defined(__DOXYGEN__) - /* Macros: */ - static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_HostMode_On(void) - { - USBCON |= (1 << HOST); - d52: 80 91 d8 00 lds r24, 0x00D8 - d56: 80 64 ori r24, 0x40 ; 64 - d58: 80 93 d8 00 sts 0x00D8, r24 - } - - static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Off(void) - { - OTGCON |= (1 << VBUSRQC); - d5c: 80 91 dd 00 lds r24, 0x00DD - d60: 81 60 ori r24, 0x01 ; 1 - d62: 80 93 dd 00 sts 0x00DD, r24 - } - - static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_Enable(void) - { - OTGCON |= (1 << VBUSHWC); - d66: 80 91 dd 00 lds r24, 0x00DD - d6a: 84 60 ori r24, 0x04 ; 4 - d6c: 80 93 dd 00 sts 0x00DD, r24 - UHWCON &= ~(1 << UVCONE); - d70: 80 91 d7 00 lds r24, 0x00D7 - d74: 8f 7e andi r24, 0xEF ; 239 - d76: 80 93 d7 00 sts 0x00D7, r24 - - DDRE |= (1 << 7); - d7a: 6f 9a sbi 0x0d, 7 ; 13 - } - - static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_On(void) - { - PORTE |= (1 << 7); - d7c: 77 9a sbi 0x0e, 7 ; 14 - break; - case USB_INT_VBERRI: - OTGIEN |= (1 << VBERRE); - break; - case USB_INT_SRPI: - OTGIEN |= (1 << SRPE); - d7e: 80 91 de 00 lds r24, 0x00DE - d82: 81 60 ori r24, 0x01 ; 1 - d84: 80 93 de 00 sts 0x00DE, r24 - break; - case USB_INT_RSTI: - UHIEN |= (1 << RSTE); - break; - case USB_INT_BCERRI: - OTGIEN |= (1 << BCERRE); - d88: 80 91 de 00 lds r24, 0x00DE - d8c: 84 60 ori r24, 0x04 ; 4 - d8e: 80 93 de 00 sts 0x00DE, r24 - * register and despite the datasheet making no mention of its requirement in host mode. - */ - static inline void USB_Attach(void) ATTR_ALWAYS_INLINE; - static inline void USB_Attach(void) - { - UDCON &= ~(1 << DETACH); - d92: 80 91 e0 00 lds r24, 0x00E0 - d96: 8e 7f andi r24, 0xFE ; 254 - d98: 80 93 e0 00 sts 0x00E0, r24 - - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_OTGPAD_On(void) - { - USBCON |= (1 << OTGPADE); - d9c: 80 91 d8 00 lds r24, 0x00D8 - da0: 80 61 ori r24, 0x10 ; 16 - da2: 80 93 d8 00 sts 0x00D8, r24 - } - - #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) - USB_OTGPAD_On(); - #endif -} - da6: 08 95 ret - -00000da8 : - - static inline void USB_REG_On(void) ATTR_ALWAYS_INLINE; - static inline void USB_REG_On(void) - { - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - UHWCON |= (1 << UVREGE); - da8: e7 ed ldi r30, 0xD7 ; 215 - daa: f0 e0 ldi r31, 0x00 ; 0 - dac: 80 81 ld r24, Z - dae: 81 60 ori r24, 0x01 ; 1 - db0: 80 83 st Z, r24 - UHWCON &= ~(1 << UIDE); - USB_CurrentMode = Mode; - } - #endif - - USB_IsInitialized = true; - db2: 81 e0 ldi r24, 0x01 ; 1 - db4: 80 93 22 01 sts 0x0122, r24 - - USB_ResetInterface(); -} - db8: a9 cf rjmp .-174 ; 0xd0c - -00000dba : -#include "../USBInterrupt.h" - -void USB_INT_DisableAllInterrupts(void) -{ - #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - USBCON &= ~((1 << VBUSTE) | (1 << IDTE)); - dba: e8 ed ldi r30, 0xD8 ; 216 - dbc: f0 e0 ldi r31, 0x00 ; 0 - dbe: 80 81 ld r24, Z - dc0: 8c 7f andi r24, 0xFC ; 252 - dc2: 80 83 st Z, r24 - #if defined(USB_CAN_BE_BOTH) - OTGIEN = 0; - #endif - - #if defined(USB_CAN_BE_HOST) - UHIEN = 0; - dc4: 10 92 a0 00 sts 0x00A0, r1 - #endif - - #if defined(USB_CAN_BE_DEVICE) - UDIEN = 0; - #endif -} - dc8: 08 95 ret - -00000dca : - -void USB_INT_ClearAllInterrupts(void) -{ - #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) - USBINT = 0; - dca: 10 92 da 00 sts 0x00DA, r1 - #if defined(USB_CAN_BE_BOTH) - OTGINT = 0; - #endif - - #if defined(USB_CAN_BE_HOST) - UHINT = 0; - dce: 10 92 9f 00 sts 0x009F, r1 - #endif - - #if defined(USB_CAN_BE_DEVICE) - UDINT = 0; - #endif -} - dd2: 08 95 ret - -00000dd4 <__vector_10>: - -ISR(USB_GEN_vect, ISR_BLOCK) -{ - dd4: 1f 92 push r1 - dd6: 0f 92 push r0 - dd8: 0f b6 in r0, 0x3f ; 63 - dda: 0f 92 push r0 - ddc: 0b b6 in r0, 0x3b ; 59 - dde: 0f 92 push r0 - de0: 11 24 eor r1, r1 - de2: 2f 93 push r18 - de4: 3f 93 push r19 - de6: 4f 93 push r20 - de8: 5f 93 push r21 - dea: 6f 93 push r22 - dec: 7f 93 push r23 - dee: 8f 93 push r24 - df0: 9f 93 push r25 - df2: af 93 push r26 - df4: bf 93 push r27 - df6: ef 93 push r30 - df8: ff 93 push r31 - case USB_INT_RXSTPI: - return (UEINTX & (1 << RXSTPI)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHINT & (1 << HSOFI)); - dfa: 80 91 9f 00 lds r24, 0x009F - } - #endif - - #if defined(USB_CAN_BE_HOST) - #if !defined(NO_SOF_EVENTS) - if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI)) - dfe: 85 ff sbrs r24, 5 - e00: 0a c0 rjmp .+20 ; 0xe16 <__vector_10+0x42> - case USB_INT_RXSTPI: - return (UEIENX & (1 << RXSTPE)); - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - return (UHIEN & (1 << HSOFE)); - e02: 80 91 a0 00 lds r24, 0x00A0 - e06: 85 ff sbrs r24, 5 - e08: 06 c0 rjmp .+12 ; 0xe16 <__vector_10+0x42> - UEINTX &= ~(1 << RXSTPI); - break; - #endif - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - e0a: 80 91 9f 00 lds r24, 0x009F - e0e: 8f 7d andi r24, 0xDF ; 223 - e10: 80 93 9f 00 sts 0x009F, r24 - { - USB_INT_Clear(USB_INT_HSOFI); - - EVENT_USB_Host_StartOfFrame(); - e14: 0c d1 rcall .+536 ; 0x102e - case USB_INT_HSOFI: - return (UHINT & (1 << HSOFI)); - case USB_INT_DCONNI: - return (UHINT & (1 << DCONNI)); - case USB_INT_DDISCI: - return (UHINT & (1 << DDISCI)); - e16: 80 91 9f 00 lds r24, 0x009F - } - #endif - - if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI)) - e1a: 81 ff sbrs r24, 1 - e1c: 15 c0 rjmp .+42 ; 0xe48 <__vector_10+0x74> - case USB_INT_HSOFI: - return (UHIEN & (1 << HSOFE)); - case USB_INT_DCONNI: - return (UHIEN & (1 << DCONNE)); - case USB_INT_DDISCI: - return (UHIEN & (1 << DDISCE)); - e1e: 80 91 a0 00 lds r24, 0x00A0 - e22: 81 ff sbrs r24, 1 - e24: 11 c0 rjmp .+34 ; 0xe48 <__vector_10+0x74> - break; - case USB_INT_DCONNI: - UHINT &= ~(1 << DCONNI); - break; - case USB_INT_DDISCI: - UHINT &= ~(1 << DDISCI); - e26: 80 91 9f 00 lds r24, 0x009F - e2a: 8d 7f andi r24, 0xFD ; 253 - e2c: 80 93 9f 00 sts 0x009F, r24 - #if defined(USB_CAN_BE_HOST) - case USB_INT_HSOFI: - UHINT &= ~(1 << HSOFI); - break; - case USB_INT_DCONNI: - UHINT &= ~(1 << DCONNI); - e30: 80 91 9f 00 lds r24, 0x009F - e34: 8e 7f andi r24, 0xFE ; 254 - e36: 80 93 9f 00 sts 0x009F, r24 - break; - case USB_INT_DCONNI: - UHIEN &= ~(1 << DCONNE); - break; - case USB_INT_DDISCI: - UHIEN &= ~(1 << DDISCE); - e3a: 80 91 a0 00 lds r24, 0x00A0 - e3e: 8d 7f andi r24, 0xFD ; 253 - e40: 80 93 a0 00 sts 0x00A0, r24 - { - USB_INT_Clear(USB_INT_DDISCI); - USB_INT_Clear(USB_INT_DCONNI); - USB_INT_Disable(USB_INT_DDISCI); - - EVENT_USB_Host_DeviceUnattached(); - e44: a1 da rcall .-2750 ; 0x388 - - USB_ResetInterface(); - e46: 62 df rcall .-316 ; 0xd0c - case USB_INT_RSTI: - return (UHINT & (1 << RSTI)); - case USB_INT_BCERRI: - return (OTGINT & (1 << BCERRI)); - case USB_INT_VBERRI: - return (OTGINT & (1 << VBERRI)); - e48: 80 91 df 00 lds r24, 0x00DF - } - - if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI)) - e4c: 81 ff sbrs r24, 1 - e4e: 15 c0 rjmp .+42 ; 0xe7a <__vector_10+0xa6> - case USB_INT_RSTI: - return (UHIEN & (1 << RSTE)); - case USB_INT_BCERRI: - return (OTGIEN & (1 << BCERRE)); - case USB_INT_VBERRI: - return (OTGIEN & (1 << VBERRE)); - e50: 80 91 de 00 lds r24, 0x00DE - e54: 81 ff sbrs r24, 1 - e56: 11 c0 rjmp .+34 ; 0xe7a <__vector_10+0xa6> - break; - case USB_INT_BCERRI: - OTGINT &= ~(1 << BCERRI); - break; - case USB_INT_VBERRI: - OTGINT &= ~(1 << VBERRI); - e58: 80 91 df 00 lds r24, 0x00DF - e5c: 8d 7f andi r24, 0xFD ; 253 - e5e: 80 93 df 00 sts 0x00DF, r24 - } - - static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Manual_Off(void) - { - PORTE &= ~(1 << 7); - e62: 77 98 cbi 0x0e, 7 ; 14 - } - - static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_VBUS_Auto_Off(void) - { - OTGCON |= (1 << VBUSRQC); - e64: 80 91 dd 00 lds r24, 0x00DD - e68: 81 60 ori r24, 0x01 ; 1 - e6a: 80 93 dd 00 sts 0x00DD, r24 - USB_INT_Clear(USB_INT_VBERRI); - - USB_Host_VBUS_Manual_Off(); - USB_Host_VBUS_Auto_Off(); - - EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip); - e6e: 80 e0 ldi r24, 0x00 ; 0 - e70: 92 da rcall .-2780 ; 0x396 - EVENT_USB_Host_DeviceUnattached(); - e72: 8a da rcall .-2796 ; 0x388 - - USB_HostState = HOST_STATE_Unattached; - e74: 82 e0 ldi r24, 0x02 ; 2 - e76: 80 93 2b 01 sts 0x012B, r24 - case USB_INT_BCERRI: - return (OTGINT & (1 << BCERRI)); - case USB_INT_VBERRI: - return (OTGINT & (1 << VBERRI)); - case USB_INT_SRPI: - return (OTGINT & (1 << SRPI)); - e7a: 80 91 df 00 lds r24, 0x00DF - } - - if (USB_INT_HasOccurred(USB_INT_SRPI) && USB_INT_IsEnabled(USB_INT_SRPI)) - e7e: 80 ff sbrs r24, 0 - e80: 17 c0 rjmp .+46 ; 0xeb0 <__vector_10+0xdc> - case USB_INT_BCERRI: - return (OTGIEN & (1 << BCERRE)); - case USB_INT_VBERRI: - return (OTGIEN & (1 << VBERRE)); - case USB_INT_SRPI: - return (OTGIEN & (1 << SRPE)); - e82: 80 91 de 00 lds r24, 0x00DE - e86: 80 ff sbrs r24, 0 - e88: 13 c0 rjmp .+38 ; 0xeb0 <__vector_10+0xdc> - break; - case USB_INT_VBERRI: - OTGINT &= ~(1 << VBERRI); - break; - case USB_INT_SRPI: - OTGINT &= ~(1 << SRPI); - e8a: 80 91 df 00 lds r24, 0x00DF - e8e: 8e 7f andi r24, 0xFE ; 254 - e90: 80 93 df 00 sts 0x00DF, r24 - break; - case USB_INT_VBERRI: - OTGIEN &= ~(1 << VBERRE); - break; - case USB_INT_SRPI: - OTGIEN &= ~(1 << SRPE); - e94: 80 91 de 00 lds r24, 0x00DE - e98: 8e 7f andi r24, 0xFE ; 254 - e9a: 80 93 de 00 sts 0x00DE, r24 - { - USB_INT_Clear(USB_INT_SRPI); - USB_INT_Disable(USB_INT_SRPI); - - EVENT_USB_Host_DeviceAttached(); - e9e: 6f da rcall .-2850 ; 0x37e - break; - case USB_INT_DCONNI: - UHIEN |= (1 << DCONNE); - break; - case USB_INT_DDISCI: - UHIEN |= (1 << DDISCE); - ea0: 80 91 a0 00 lds r24, 0x00A0 - ea4: 82 60 ori r24, 0x02 ; 2 - ea6: 80 93 a0 00 sts 0x00A0, r24 - - USB_INT_Enable(USB_INT_DDISCI); - - USB_HostState = HOST_STATE_Powered; - eaa: 83 e0 ldi r24, 0x03 ; 3 - eac: 80 93 2b 01 sts 0x012B, r24 - case USB_INT_DDISCI: - return (UHINT & (1 << DDISCI)); - case USB_INT_RSTI: - return (UHINT & (1 << RSTI)); - case USB_INT_BCERRI: - return (OTGINT & (1 << BCERRI)); - eb0: 80 91 df 00 lds r24, 0x00DF - } - - if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI)) - eb4: 82 ff sbrs r24, 2 - eb6: 0e c0 rjmp .+28 ; 0xed4 <__vector_10+0x100> - case USB_INT_DDISCI: - return (UHIEN & (1 << DDISCE)); - case USB_INT_RSTI: - return (UHIEN & (1 << RSTE)); - case USB_INT_BCERRI: - return (OTGIEN & (1 << BCERRE)); - eb8: 80 91 de 00 lds r24, 0x00DE - ebc: 82 ff sbrs r24, 2 - ebe: 0a c0 rjmp .+20 ; 0xed4 <__vector_10+0x100> - break; - case USB_INT_RSTI: - UHINT &= ~(1 << RSTI); - break; - case USB_INT_BCERRI: - OTGINT &= ~(1 << BCERRI); - ec0: 80 91 df 00 lds r24, 0x00DF - ec4: 8b 7f andi r24, 0xFB ; 251 - ec6: 80 93 df 00 sts 0x00DF, r24 - { - USB_INT_Clear(USB_INT_BCERRI); - - EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0); - eca: 82 e0 ldi r24, 0x02 ; 2 - ecc: 60 e0 ldi r22, 0x00 ; 0 - ece: 82 da rcall .-2812 ; 0x3d4 - EVENT_USB_Host_DeviceUnattached(); - ed0: 5b da rcall .-2890 ; 0x388 - - USB_ResetInterface(); - ed2: 1c df rcall .-456 ; 0xd0c - USB_ResetInterface(); - - EVENT_USB_UIDChange(); - } - #endif -} - ed4: ff 91 pop r31 - ed6: ef 91 pop r30 - ed8: bf 91 pop r27 - eda: af 91 pop r26 - edc: 9f 91 pop r25 - ede: 8f 91 pop r24 - ee0: 7f 91 pop r23 - ee2: 6f 91 pop r22 - ee4: 5f 91 pop r21 - ee6: 4f 91 pop r20 - ee8: 3f 91 pop r19 - eea: 2f 91 pop r18 - eec: 0f 90 pop r0 - eee: 0b be out 0x3b, r0 ; 59 - ef0: 0f 90 pop r0 - ef2: 0f be out 0x3f, r0 ; 63 - ef4: 0f 90 pop r0 - ef6: 1f 90 pop r1 - ef8: 18 95 reti - -00000efa : -#if defined(USB_CAN_BE_HOST) -uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber, - uint16_t* const ConfigSizePtr, - void* const BufferPtr, - const uint16_t BufferSize) -{ - efa: cf 92 push r12 - efc: df 92 push r13 - efe: ef 92 push r14 - f00: ff 92 push r15 - f02: 0f 93 push r16 - f04: 1f 93 push r17 - f06: df 93 push r29 - f08: cf 93 push r28 - f0a: cd b7 in r28, 0x3d ; 61 - f0c: de b7 in r29, 0x3e ; 62 - f0e: 29 97 sbiw r28, 0x09 ; 9 - f10: 0f b6 in r0, 0x3f ; 63 - f12: f8 94 cli - f14: de bf out 0x3e, r29 ; 62 - f16: 0f be out 0x3f, r0 ; 63 - f18: cd bf out 0x3d, r28 ; 61 - f1a: 6b 01 movw r12, r22 - f1c: 8a 01 movw r16, r20 - f1e: 79 01 movw r14, r18 - uint8_t ErrorCode; - uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)]; - - USB_ControlRequest = (USB_Request_Header_t) - f20: 90 e8 ldi r25, 0x80 ; 128 - f22: 90 93 23 01 sts 0x0123, r25 - f26: 96 e0 ldi r25, 0x06 ; 6 - f28: 90 93 24 01 sts 0x0124, r25 - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = ((DTYPE_Configuration << 8) | (ConfigNumber - 1)), - f2c: 90 e0 ldi r25, 0x00 ; 0 - f2e: 01 97 sbiw r24, 0x01 ; 1 - f30: 92 60 ori r25, 0x02 ; 2 - const uint16_t BufferSize) -{ - uint8_t ErrorCode; - uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)]; - - USB_ControlRequest = (USB_Request_Header_t) - f32: 90 93 26 01 sts 0x0126, r25 - f36: 80 93 25 01 sts 0x0125, r24 - f3a: 10 92 28 01 sts 0x0128, r1 - f3e: 10 92 27 01 sts 0x0127, r1 - f42: 89 e0 ldi r24, 0x09 ; 9 - f44: 90 e0 ldi r25, 0x00 ; 0 - f46: 90 93 2a 01 sts 0x012A, r25 - f4a: 80 93 29 01 sts 0x0129, r24 - f4e: 10 92 a7 00 sts 0x00A7, r1 - .wLength = sizeof(USB_Descriptor_Configuration_Header_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful) - f52: ce 01 movw r24, r28 - f54: 01 96 adiw r24, 0x01 ; 1 - f56: 95 d0 rcall .+298 ; 0x1082 - f58: 88 23 and r24, r24 - f5a: b9 f4 brne .+46 ; 0xf8a - return ErrorCode; - - *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize; - f5c: 8b 81 ldd r24, Y+3 ; 0x03 - f5e: 9c 81 ldd r25, Y+4 ; 0x04 - f60: f6 01 movw r30, r12 - f62: 91 83 std Z+1, r25 ; 0x01 - f64: 80 83 st Z, r24 - - if (*ConfigSizePtr > BufferSize) - f66: e8 16 cp r14, r24 - f68: f9 06 cpc r15, r25 - f6a: 70 f0 brcs .+28 ; 0xf88 - return HOST_GETCONFIG_BuffOverflow; - - USB_ControlRequest.wLength = *ConfigSizePtr; - f6c: 90 93 2a 01 sts 0x012A, r25 - f70: 80 93 29 01 sts 0x0129, r24 - - if ((ErrorCode = USB_Host_SendControlRequest(BufferPtr)) != HOST_SENDCONTROL_Successful) - f74: c8 01 movw r24, r16 - f76: 85 d0 rcall .+266 ; 0x1082 - f78: 88 23 and r24, r24 - f7a: 39 f4 brne .+14 ; 0xf8a - return ErrorCode; - - if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration) - f7c: f8 01 movw r30, r16 - f7e: 91 81 ldd r25, Z+1 ; 0x01 - f80: 92 30 cpi r25, 0x02 ; 2 - f82: 19 f0 breq .+6 ; 0xf8a - return HOST_GETCONFIG_InvalidData; - f84: 86 e0 ldi r24, 0x06 ; 6 - f86: 01 c0 rjmp .+2 ; 0xf8a - return ErrorCode; - - *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize; - - if (*ConfigSizePtr > BufferSize) - return HOST_GETCONFIG_BuffOverflow; - f88: 85 e0 ldi r24, 0x05 ; 5 - - if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration) - return HOST_GETCONFIG_InvalidData; - - return HOST_GETCONFIG_Successful; -} - f8a: 29 96 adiw r28, 0x09 ; 9 - f8c: 0f b6 in r0, 0x3f ; 63 - f8e: f8 94 cli - f90: de bf out 0x3e, r29 ; 62 - f92: 0f be out 0x3f, r0 ; 63 - f94: cd bf out 0x3d, r28 ; 61 - f96: cf 91 pop r28 - f98: df 91 pop r29 - f9a: 1f 91 pop r17 - f9c: 0f 91 pop r16 - f9e: ff 90 pop r15 - fa0: ef 90 pop r14 - fa2: df 90 pop r13 - fa4: cf 90 pop r12 - fa6: 08 95 ret - -00000fa8 : -} - -uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const ConfigComparatorPtr_t const ComparatorRoutine) -{ - fa8: af 92 push r10 - faa: bf 92 push r11 - fac: cf 92 push r12 - fae: df 92 push r13 - fb0: ef 92 push r14 - fb2: ff 92 push r15 - fb4: 0f 93 push r16 - fb6: 1f 93 push r17 - fb8: cf 93 push r28 - fba: df 93 push r29 - fbc: 8c 01 movw r16, r24 - fbe: eb 01 movw r28, r22 - fc0: 6a 01 movw r12, r20 - uint8_t ErrorCode; - - while (*BytesRem) - fc2: 23 c0 rjmp .+70 ; 0x100a - { - uint8_t* PrevDescLoc = *CurrConfigLoc; - fc4: e8 81 ld r30, Y - fc6: f9 81 ldd r31, Y+1 ; 0x01 - fc8: 5f 01 movw r10, r30 - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - void** CurrConfigLoc) - { - uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size; - fca: 20 81 ld r18, Z - fcc: 30 e0 ldi r19, 0x00 ; 0 - fce: c7 01 movw r24, r14 - fd0: 2e 15 cp r18, r14 - fd2: 3f 05 cpc r19, r15 - fd4: 08 f4 brcc .+2 ; 0xfd8 - fd6: c9 01 movw r24, r18 - - if (*BytesRem < CurrDescriptorSize) - CurrDescriptorSize = *BytesRem; - - *CurrConfigLoc = (void*)((uintptr_t)*CurrConfigLoc + CurrDescriptorSize); - fd8: e8 0f add r30, r24 - fda: f9 1f adc r31, r25 - fdc: f9 83 std Y+1, r31 ; 0x01 - fde: e8 83 st Y, r30 - *BytesRem -= CurrDescriptorSize; - fe0: f8 01 movw r30, r16 - fe2: 20 81 ld r18, Z - fe4: 31 81 ldd r19, Z+1 ; 0x01 - fe6: 28 1b sub r18, r24 - fe8: 39 0b sbc r19, r25 - fea: 31 83 std Z+1, r19 ; 0x01 - fec: 20 83 st Z, r18 - uint16_t PrevBytesRem = *BytesRem; - - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound) - fee: 88 81 ld r24, Y - ff0: 99 81 ldd r25, Y+1 ; 0x01 - ff2: f6 01 movw r30, r12 - ff4: 09 95 icall - ff6: 82 30 cpi r24, 0x02 ; 2 - ff8: 41 f0 breq .+16 ; 0x100a - { - if (ErrorCode == DESCRIPTOR_SEARCH_Fail) - ffa: 81 30 cpi r24, 0x01 ; 1 - ffc: 69 f4 brne .+26 ; 0x1018 - { - *CurrConfigLoc = PrevDescLoc; - ffe: a8 82 st Y, r10 - 1000: b9 82 std Y+1, r11 ; 0x01 - *BytesRem = PrevBytesRem; - 1002: f8 01 movw r30, r16 - 1004: f1 82 std Z+1, r15 ; 0x01 - 1006: e0 82 st Z, r14 - 1008: 07 c0 rjmp .+14 ; 0x1018 - void** const CurrConfigLoc, - const ConfigComparatorPtr_t const ComparatorRoutine) -{ - uint8_t ErrorCode; - - while (*BytesRem) - 100a: f8 01 movw r30, r16 - 100c: e0 80 ld r14, Z - 100e: f1 80 ldd r15, Z+1 ; 0x01 - 1010: e1 14 cp r14, r1 - 1012: f1 04 cpc r15, r1 - 1014: b9 f6 brne .-82 ; 0xfc4 - - return ErrorCode; - } - } - - return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor; - 1016: 82 e0 ldi r24, 0x02 ; 2 -} - 1018: df 91 pop r29 - 101a: cf 91 pop r28 - 101c: 1f 91 pop r17 - 101e: 0f 91 pop r16 - 1020: ff 90 pop r15 - 1022: ef 90 pop r14 - 1024: df 90 pop r13 - 1026: cf 90 pop r12 - 1028: bf 90 pop r11 - 102a: af 90 pop r10 - 102c: 08 95 ret - -0000102e : -#include "Events.h" - -void USB_Event_Stub(void) -{ - -} - 102e: 08 95 ret - -00001030 : - - return ReturnStatus; -} - -static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType) -{ - 1030: 1f 93 push r17 - 1032: cf 93 push r28 - 1034: df 93 push r29 - 1036: 18 2f mov r17, r24 - #if (USB_HOST_TIMEOUT_MS < 0xFF) - uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #else - uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - 1038: c8 ee ldi r28, 0xE8 ; 232 - 103a: d3 e0 ldi r29, 0x03 ; 3 - #endif - - while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) || - 103c: 07 c0 rjmp .+14 ; 0x104c - ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) || - ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady()))) - { - uint8_t ErrorCode; - - if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - 103e: 81 e0 ldi r24, 0x01 ; 1 - 1040: 1e dc rcall .-1988 ; 0x87e - 1042: 88 23 and r24, r24 - 1044: d1 f4 brne .+52 ; 0x107a - return ErrorCode; - - if (!(TimeoutCounter--)) - 1046: 20 97 sbiw r28, 0x00 ; 0 - 1048: b9 f0 breq .+46 ; 0x1078 - 104a: 21 97 sbiw r28, 0x01 ; 1 - uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #else - uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #endif - - while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) || - 104c: 11 23 and r17, r17 - 104e: 29 f4 brne .+10 ; 0x105a - * \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise. - */ - static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsSETUPSent(void) - { - return ((UPINTX & (1 << TXSTPI)) ? true : false); - 1050: 80 91 a6 00 lds r24, 0x00A6 - 1054: 83 ff sbrs r24, 3 - 1056: f3 cf rjmp .-26 ; 0x103e - 1058: 0d c0 rjmp .+26 ; 0x1074 - 105a: 11 30 cpi r17, 0x01 ; 1 - 105c: 29 f4 brne .+10 ; 0x1068 - * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise. - */ - static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsINReceived(void) - { - return ((UPINTX & (1 << RXINI)) ? true : false); - 105e: 80 91 a6 00 lds r24, 0x00A6 - ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) || - 1062: 80 ff sbrs r24, 0 - 1064: ec cf rjmp .-40 ; 0x103e - 1066: 06 c0 rjmp .+12 ; 0x1074 - uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #else - uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #endif - - while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) || - 1068: 12 30 cpi r17, 0x02 ; 2 - 106a: 49 f7 brne .-46 ; 0x103e - * \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise. - */ - static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Pipe_IsOUTReady(void) - { - return ((UPINTX & (1 << TXOUTI)) ? true : false); - 106c: 80 91 a6 00 lds r24, 0x00A6 - ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) || - ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady()))) - 1070: 82 ff sbrs r24, 2 - 1072: e5 cf rjmp .-54 ; 0x103e - - if (!(TimeoutCounter--)) - return HOST_SENDCONTROL_SoftwareTimeOut; - } - - return HOST_SENDCONTROL_Successful; - 1074: 80 e0 ldi r24, 0x00 ; 0 - 1076: 01 c0 rjmp .+2 ; 0x107a - - if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - return ErrorCode; - - if (!(TimeoutCounter--)) - return HOST_SENDCONTROL_SoftwareTimeOut; - 1078: 84 e0 ldi r24, 0x04 ; 4 - } - - return HOST_SENDCONTROL_Successful; -} - 107a: df 91 pop r29 - 107c: cf 91 pop r28 - 107e: 1f 91 pop r17 - 1080: 08 95 ret - -00001082 : - -#define __INCLUDE_FROM_HOSTSTDREQ_C -#include "HostStandardReq.h" - -uint8_t USB_Host_SendControlRequest(void* const BufferPtr) -{ - 1082: ef 92 push r14 - 1084: ff 92 push r15 - 1086: 0f 93 push r16 - 1088: 1f 93 push r17 - 108a: cf 93 push r28 - 108c: df 93 push r29 - 108e: 8c 01 movw r16, r24 - * \return Boolean \c true if the bus is currently suspended, \c false otherwise. - */ - static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool USB_Host_IsBusSuspended(void) - { - return ((UHCON & (1 << SOFEN)) ? false : true); - 1090: e0 90 9e 00 lds r14, 0x009E - 1094: ff 24 eor r15, r15 - 1096: 81 e0 ldi r24, 0x01 ; 1 - 1098: e8 22 and r14, r24 - 109a: ff 24 eor r15, r15 - uint8_t* DataStream = (uint8_t*)BufferPtr; - bool BusSuspended = USB_Host_IsBusSuspended(); - uint8_t ReturnStatus = HOST_SENDCONTROL_Successful; - uint16_t DataLen = USB_ControlRequest.wLength; - 109c: c0 91 29 01 lds r28, 0x0129 - 10a0: d0 91 2a 01 lds r29, 0x012A - * host and attached device may occur. - */ - static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_ResumeBus(void) - { - UHCON |= (1 << SOFEN); - 10a4: 80 91 9e 00 lds r24, 0x009E - 10a8: 81 60 ori r24, 0x01 ; 1 - 10aa: 80 93 9e 00 sts 0x009E, r24 - - USB_Host_ResumeBus(); - - if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - 10ae: 81 e0 ldi r24, 0x01 ; 1 - 10b0: e6 db rcall .-2100 ; 0x87e - 10b2: 88 23 and r24, r24 - 10b4: 09 f0 breq .+2 ; 0x10b8 - 10b6: e2 c0 rjmp .+452 ; 0x127c - * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask. - */ - static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetPipeToken(const uint8_t Token) - { - UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token); - 10b8: 80 91 aa 00 lds r24, 0x00AA - 10bc: 8f 7c andi r24, 0xCF ; 207 - 10be: 80 93 aa 00 sts 0x00AA, r24 - - /** Clears the error flags for the currently selected pipe. */ - static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearError(void) - { - UPERRX = 0; - 10c2: 10 92 f5 00 sts 0x00F5, r1 - UPINTX &= ~(1 << PERRI); - 10c6: 80 91 a6 00 lds r24, 0x00A6 - 10ca: 8f 7e andi r24, 0xEF ; 239 - 10cc: 80 93 a6 00 sts 0x00A6, r24 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 10d0: 80 91 a9 00 lds r24, 0x00A9 - 10d4: 8f 7b andi r24, 0xBF ; 191 - 10d6: 80 93 a9 00 sts 0x00A9, r24 - Pipe_SetPipeToken(PIPE_TOKEN_SETUP); - Pipe_ClearError(); - - Pipe_Unfreeze(); - - Pipe_Write_8(USB_ControlRequest.bmRequestType); - 10da: 80 91 23 01 lds r24, 0x0123 - * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer. - */ - static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; - static inline void Pipe_Write_8(const uint8_t Data) - { - UPDATX = Data; - 10de: 80 93 af 00 sts 0x00AF, r24 - Pipe_Write_8(USB_ControlRequest.bRequest); - 10e2: 80 91 24 01 lds r24, 0x0124 - 10e6: 80 93 af 00 sts 0x00AF, r24 - Pipe_Write_16_LE(USB_ControlRequest.wValue); - 10ea: 90 91 25 01 lds r25, 0x0125 - 10ee: 80 91 26 01 lds r24, 0x0126 - * \param[in] Data Data to write to the currently selected pipe's FIFO buffer. - */ - static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; - static inline void Pipe_Write_16_LE(const uint16_t Data) - { - UPDATX = (Data & 0xFF); - 10f2: 90 93 af 00 sts 0x00AF, r25 - UPDATX = (Data >> 8); - 10f6: 80 93 af 00 sts 0x00AF, r24 - Pipe_Write_16_LE(USB_ControlRequest.wIndex); - 10fa: 90 91 27 01 lds r25, 0x0127 - 10fe: 80 91 28 01 lds r24, 0x0128 - * \param[in] Data Data to write to the currently selected pipe's FIFO buffer. - */ - static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; - static inline void Pipe_Write_16_LE(const uint16_t Data) - { - UPDATX = (Data & 0xFF); - 1102: 90 93 af 00 sts 0x00AF, r25 - UPDATX = (Data >> 8); - 1106: 80 93 af 00 sts 0x00AF, r24 - Pipe_Write_16_LE(USB_ControlRequest.wLength); - 110a: 90 91 29 01 lds r25, 0x0129 - 110e: 80 91 2a 01 lds r24, 0x012A - * \param[in] Data Data to write to the currently selected pipe's FIFO buffer. - */ - static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; - static inline void Pipe_Write_16_LE(const uint16_t Data) - { - UPDATX = (Data & 0xFF); - 1112: 90 93 af 00 sts 0x00AF, r25 - UPDATX = (Data >> 8); - 1116: 80 93 af 00 sts 0x00AF, r24 - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearSETUP(void) - { - UPINTX &= ~((1 << TXSTPI) | (1 << FIFOCON)); - 111a: 80 91 a6 00 lds r24, 0x00A6 - 111e: 87 77 andi r24, 0x77 ; 119 - 1120: 80 93 a6 00 sts 0x00A6, r24 - - Pipe_ClearSETUP(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful) - 1124: 80 e0 ldi r24, 0x00 ; 0 - 1126: 84 df rcall .-248 ; 0x1030 - 1128: 88 23 and r24, r24 - 112a: 09 f0 breq .+2 ; 0x112e - 112c: a7 c0 rjmp .+334 ; 0x127c - - /** Freezes the selected pipe, preventing it from communicating with an attached device. */ - static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Freeze(void) - { - UPCONX |= (1 << PFREEZE); - 112e: 80 91 a9 00 lds r24, 0x00A9 - 1132: 80 64 ori r24, 0x40 ; 64 - 1134: 80 93 a9 00 sts 0x00A9, r24 - goto End_Of_Control_Send; - - Pipe_Freeze(); - - if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - 1138: 81 e0 ldi r24, 0x01 ; 1 - 113a: a1 db rcall .-2238 ; 0x87e - 113c: 88 23 and r24, r24 - 113e: 09 f0 breq .+2 ; 0x1142 - 1140: 9d c0 rjmp .+314 ; 0x127c - goto End_Of_Control_Send; - - if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST) - 1142: 80 91 23 01 lds r24, 0x0123 - 1146: 87 ff sbrs r24, 7 - 1148: 4f c0 rjmp .+158 ; 0x11e8 - * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask. - */ - static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetPipeToken(const uint8_t Token) - { - UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token); - 114a: 80 91 aa 00 lds r24, 0x00AA - 114e: 8f 7c andi r24, 0xCF ; 207 - 1150: 80 61 ori r24, 0x10 ; 16 - 1152: 80 93 aa 00 sts 0x00AA, r24 - { - Pipe_SetPipeToken(PIPE_TOKEN_IN); - - if (DataStream != NULL) - 1156: 01 15 cp r16, r1 - 1158: 11 05 cpc r17, r1 - 115a: 61 f5 brne .+88 ; 0x11b4 - 115c: 2d c0 rjmp .+90 ; 0x11b8 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 115e: 80 91 a9 00 lds r24, 0x00A9 - 1162: 8f 7b andi r24, 0xBF ; 191 - 1164: 80 93 a9 00 sts 0x00A9, r24 - { - while (DataLen) - { - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful) - 1168: 81 e0 ldi r24, 0x01 ; 1 - 116a: 62 df rcall .-316 ; 0x1030 - 116c: 88 23 and r24, r24 - 116e: 09 f0 breq .+2 ; 0x1172 - 1170: 85 c0 rjmp .+266 ; 0x127c - * \return Total number of bytes in the currently selected pipe's FIFO buffer. - */ - static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint16_t Pipe_BytesInPipe(void) - { - return UPBCX; - 1172: 80 91 f6 00 lds r24, 0x00F6 - 1176: 90 91 f7 00 lds r25, 0x00F7 - goto End_Of_Control_Send; - - if (!(Pipe_BytesInPipe())) - 117a: 00 97 sbiw r24, 0x00 ; 0 - 117c: 49 f4 brne .+18 ; 0x1190 - DataLen = 0; - 117e: c0 e0 ldi r28, 0x00 ; 0 - 1180: d0 e0 ldi r29, 0x00 ; 0 - 1182: 06 c0 rjmp .+12 ; 0x1190 - * \return Next byte in the currently selected pipe's FIFO buffer. - */ - static inline uint8_t Pipe_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Pipe_Read_8(void) - { - return UPDATX; - 1184: 80 91 af 00 lds r24, 0x00AF - - while (Pipe_BytesInPipe() && DataLen) - { - *(DataStream++) = Pipe_Read_8(); - 1188: f8 01 movw r30, r16 - 118a: 81 93 st Z+, r24 - 118c: 8f 01 movw r16, r30 - DataLen--; - 118e: 21 97 sbiw r28, 0x01 ; 1 - * \return Total number of bytes in the currently selected pipe's FIFO buffer. - */ - static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint16_t Pipe_BytesInPipe(void) - { - return UPBCX; - 1190: 80 91 f6 00 lds r24, 0x00F6 - 1194: 90 91 f7 00 lds r25, 0x00F7 - goto End_Of_Control_Send; - - if (!(Pipe_BytesInPipe())) - DataLen = 0; - - while (Pipe_BytesInPipe() && DataLen) - 1198: 00 97 sbiw r24, 0x00 ; 0 - 119a: 11 f0 breq .+4 ; 0x11a0 - 119c: 20 97 sbiw r28, 0x00 ; 0 - 119e: 91 f7 brne .-28 ; 0x1184 - - /** Freezes the selected pipe, preventing it from communicating with an attached device. */ - static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Freeze(void) - { - UPCONX |= (1 << PFREEZE); - 11a0: 80 91 a9 00 lds r24, 0x00A9 - 11a4: 80 64 ori r24, 0x40 ; 64 - 11a6: 80 93 a9 00 sts 0x00A9, r24 - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearIN(void) - { - UPINTX &= ~((1 << RXINI) | (1 << FIFOCON)); - 11aa: 80 91 a6 00 lds r24, 0x00A6 - 11ae: 8e 77 andi r24, 0x7E ; 126 - 11b0: 80 93 a6 00 sts 0x00A6, r24 - { - Pipe_SetPipeToken(PIPE_TOKEN_IN); - - if (DataStream != NULL) - { - while (DataLen) - 11b4: 20 97 sbiw r28, 0x00 ; 0 - 11b6: 99 f6 brne .-90 ; 0x115e - * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask. - */ - static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetPipeToken(const uint8_t Token) - { - UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token); - 11b8: 80 91 aa 00 lds r24, 0x00AA - 11bc: 8f 7c andi r24, 0xCF ; 207 - 11be: 80 62 ori r24, 0x20 ; 32 - 11c0: 80 93 aa 00 sts 0x00AA, r24 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 11c4: 80 91 a9 00 lds r24, 0x00A9 - 11c8: 8f 7b andi r24, 0xBF ; 191 - 11ca: 80 93 a9 00 sts 0x00A9, r24 - } - - Pipe_SetPipeToken(PIPE_TOKEN_OUT); - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - 11ce: 82 e0 ldi r24, 0x02 ; 2 - 11d0: 2f df rcall .-418 ; 0x1030 - 11d2: 88 23 and r24, r24 - 11d4: 09 f0 breq .+2 ; 0x11d8 - 11d6: 52 c0 rjmp .+164 ; 0x127c - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearOUT(void) - { - UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON)); - 11d8: 80 91 a6 00 lds r24, 0x00A6 - 11dc: 8b 77 andi r24, 0x7B ; 123 - 11de: 80 93 a6 00 sts 0x00A6, r24 - goto End_Of_Control_Send; - - Pipe_ClearOUT(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - 11e2: 82 e0 ldi r24, 0x02 ; 2 - 11e4: 25 df rcall .-438 ; 0x1030 - 11e6: 4a c0 rjmp .+148 ; 0x127c - goto End_Of_Control_Send; - } - else - { - if (DataStream != NULL) - 11e8: 01 15 cp r16, r1 - 11ea: 11 05 cpc r17, r1 - 11ec: 99 f1 breq .+102 ; 0x1254 - * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask. - */ - static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetPipeToken(const uint8_t Token) - { - UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token); - 11ee: 80 91 aa 00 lds r24, 0x00AA - 11f2: 8f 7c andi r24, 0xCF ; 207 - 11f4: 80 62 ori r24, 0x20 ; 32 - 11f6: 80 93 aa 00 sts 0x00AA, r24 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 11fa: 80 91 a9 00 lds r24, 0x00A9 - 11fe: 8f 7b andi r24, 0xBF ; 191 - 1200: 80 93 a9 00 sts 0x00A9, r24 - { - Pipe_SetPipeToken(PIPE_TOKEN_OUT); - Pipe_Unfreeze(); - - while (DataLen) - 1204: 1c c0 rjmp .+56 ; 0x123e - { - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - 1206: 82 e0 ldi r24, 0x02 ; 2 - 1208: 13 df rcall .-474 ; 0x1030 - 120a: 88 23 and r24, r24 - 120c: b9 f5 brne .+110 ; 0x127c - 120e: f8 01 movw r30, r16 - 1210: 06 c0 rjmp .+12 ; 0x121e - goto End_Of_Control_Send; - - while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize)) - { - Pipe_Write_8(*(DataStream++)); - 1212: 81 91 ld r24, Z+ - 1214: 8f 01 movw r16, r30 - * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer. - */ - static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; - static inline void Pipe_Write_8(const uint8_t Data) - { - UPDATX = Data; - 1216: 80 93 af 00 sts 0x00AF, r24 - DataLen--; - 121a: 21 97 sbiw r28, 0x01 ; 1 - while (DataLen) - { - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - goto End_Of_Control_Send; - - while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize)) - 121c: 59 f0 breq .+22 ; 0x1234 - 121e: 8f 01 movw r16, r30 - * \return Total number of bytes in the currently selected pipe's FIFO buffer. - */ - static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint16_t Pipe_BytesInPipe(void) - { - return UPBCX; - 1220: 20 91 f6 00 lds r18, 0x00F6 - 1224: 30 91 f7 00 lds r19, 0x00F7 - 1228: 80 91 1b 01 lds r24, 0x011B - 122c: 90 e0 ldi r25, 0x00 ; 0 - 122e: 28 17 cp r18, r24 - 1230: 39 07 cpc r19, r25 - 1232: 78 f3 brcs .-34 ; 0x1212 - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearOUT(void) - { - UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON)); - 1234: 80 91 a6 00 lds r24, 0x00A6 - 1238: 8b 77 andi r24, 0x7B ; 123 - 123a: 80 93 a6 00 sts 0x00A6, r24 - if (DataStream != NULL) - { - Pipe_SetPipeToken(PIPE_TOKEN_OUT); - Pipe_Unfreeze(); - - while (DataLen) - 123e: 20 97 sbiw r28, 0x00 ; 0 - 1240: 11 f7 brne .-60 ; 0x1206 - } - - Pipe_ClearOUT(); - } - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - 1242: 82 e0 ldi r24, 0x02 ; 2 - 1244: f5 de rcall .-534 ; 0x1030 - 1246: 88 23 and r24, r24 - 1248: c9 f4 brne .+50 ; 0x127c - - /** Freezes the selected pipe, preventing it from communicating with an attached device. */ - static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Freeze(void) - { - UPCONX |= (1 << PFREEZE); - 124a: 80 91 a9 00 lds r24, 0x00A9 - 124e: 80 64 ori r24, 0x40 ; 64 - 1250: 80 93 a9 00 sts 0x00A9, r24 - * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask. - */ - static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE; - static inline void Pipe_SetPipeToken(const uint8_t Token) - { - UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token); - 1254: 80 91 aa 00 lds r24, 0x00AA - 1258: 8f 7c andi r24, 0xCF ; 207 - 125a: 80 61 ori r24, 0x10 ; 16 - 125c: 80 93 aa 00 sts 0x00AA, r24 - - /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */ - static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Unfreeze(void) - { - UPCONX &= ~(1 << PFREEZE); - 1260: 80 91 a9 00 lds r24, 0x00A9 - 1264: 8f 7b andi r24, 0xBF ; 191 - 1266: 80 93 a9 00 sts 0x00A9, r24 - } - - Pipe_SetPipeToken(PIPE_TOKEN_IN); - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful) - 126a: 81 e0 ldi r24, 0x01 ; 1 - 126c: e1 de rcall .-574 ; 0x1030 - 126e: 88 23 and r24, r24 - 1270: 29 f4 brne .+10 ; 0x127c - * \ingroup Group_PipePacketManagement_AVR8 - */ - static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_ClearIN(void) - { - UPINTX &= ~((1 << RXINI) | (1 << FIFOCON)); - 1272: 90 91 a6 00 lds r25, 0x00A6 - 1276: 9e 77 andi r25, 0x7E ; 126 - 1278: 90 93 a6 00 sts 0x00A6, r25 - - /** Freezes the selected pipe, preventing it from communicating with an attached device. */ - static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE; - static inline void Pipe_Freeze(void) - { - UPCONX |= (1 << PFREEZE); - 127c: 90 91 a9 00 lds r25, 0x00A9 - 1280: 90 64 ori r25, 0x40 ; 64 - 1282: 90 93 a9 00 sts 0x00A9, r25 - } - -End_Of_Control_Send: - Pipe_Freeze(); - - if (BusSuspended) - 1286: e1 14 cp r14, r1 - 1288: f1 04 cpc r15, r1 - 128a: 29 f4 brne .+10 ; 0x1296 - * messages to the device. - */ - static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE; - static inline void USB_Host_SuspendBus(void) - { - UHCON &= ~(1 << SOFEN); - 128c: 90 91 9e 00 lds r25, 0x009E - 1290: 9e 7f andi r25, 0xFE ; 254 - 1292: 90 93 9e 00 sts 0x009E, r25 - * \param[in] PipeNumber Index of the pipe to reset. - */ - static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_ResetPipe(const uint8_t PipeNumber) - { - UPRST = (1 << PipeNumber); - 1296: 91 e0 ldi r25, 0x01 ; 1 - 1298: 90 93 a8 00 sts 0x00A8, r25 - UPRST = 0; - 129c: 10 92 a8 00 sts 0x00A8, r1 - USB_Host_SuspendBus(); - - Pipe_ResetPipe(PIPE_CONTROLPIPE); - - return ReturnStatus; -} - 12a0: df 91 pop r29 - 12a2: cf 91 pop r28 - 12a4: 1f 91 pop r17 - 12a6: 0f 91 pop r16 - 12a8: ff 90 pop r15 - 12aa: ef 90 pop r14 - 12ac: 08 95 ret - -000012ae : -#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR) -volatile uint8_t USB_DeviceState; -#endif - -void USB_USBTask(void) -{ - 12ae: 1f 93 push r17 - 12b0: cf 93 push r28 - 12b2: df 93 push r29 - * \return Index of the currently selected pipe. - */ - static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Pipe_GetCurrentPipe(void) - { - return (UPNUM & PIPE_PIPENUM_MASK); - 12b4: c7 ea ldi r28, 0xA7 ; 167 - 12b6: d0 e0 ldi r29, 0x00 ; 0 - 12b8: 18 81 ld r17, Y - 12ba: 17 70 andi r17, 0x07 ; 7 - * \param[in] PipeNumber Index of the pipe to select. - */ - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE; - static inline void Pipe_SelectPipe(const uint8_t PipeNumber) - { - UPNUM = PipeNumber; - 12bc: 18 82 st Y, r1 -{ - uint8_t PrevPipe = Pipe_GetCurrentPipe(); - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - USB_Host_ProcessNextHostState(); - 12be: 34 db rcall .-2456 ; 0x928 - 12c0: 18 83 st Y, r17 - if (USB_CurrentMode == USB_MODE_Device) - USB_DeviceTask(); - else if (USB_CurrentMode == USB_MODE_Host) - USB_HostTask(); - #endif -} - 12c2: df 91 pop r29 - 12c4: cf 91 pop r28 - 12c6: 1f 91 pop r17 - 12c8: 08 95 ret - -000012ca : - * \param[in] DataByte Byte to transmit through the USART. - */ - static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE; - static inline void Serial_SendByte(const char DataByte) - { - while (!(UCSR1A & (1 << UDRE1))); - 12ca: 90 91 c8 00 lds r25, 0x00C8 - 12ce: 95 ff sbrs r25, 5 - 12d0: fc cf rjmp .-8 ; 0x12ca - UDR1 = DataByte; - 12d2: 80 93 ce 00 sts 0x00CE, r24 -{ - (void)Stream; - - Serial_SendByte(DataByte); - return 0; -} - 12d6: 80 e0 ldi r24, 0x00 ; 0 - 12d8: 90 e0 ldi r25, 0x00 ; 0 - 12da: 08 95 ret - -000012dc : - * \return Boolean \c true if a character has been received, \c false otherwise. - */ - static inline bool Serial_IsCharReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Serial_IsCharReceived(void) - { - return ((UCSR1A & (1 << RXC1)) ? true : false); - 12dc: 80 91 c8 00 lds r24, 0x00C8 - -int Serial_getchar(FILE *Stream) -{ - (void)Stream; - - if (!(Serial_IsCharReceived())) - 12e0: 87 ff sbrs r24, 7 - 12e2: 08 c0 rjmp .+16 ; 0x12f4 - 12e4: 80 91 c8 00 lds r24, 0x00C8 - * \return Next byte received from the USART, or a negative value if no byte has been received. - */ - static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE; - static inline int16_t Serial_ReceiveByte(void) - { - if (!(Serial_IsCharReceived())) - 12e8: 87 ff sbrs r24, 7 - 12ea: 07 c0 rjmp .+14 ; 0x12fa - return -1; - - return UDR1; - 12ec: 20 91 ce 00 lds r18, 0x00CE - 12f0: 30 e0 ldi r19, 0x00 ; 0 - 12f2: 05 c0 rjmp .+10 ; 0x12fe - return _FDEV_EOF; - 12f4: 2e ef ldi r18, 0xFE ; 254 - 12f6: 3f ef ldi r19, 0xFF ; 255 - 12f8: 02 c0 rjmp .+4 ; 0x12fe - */ - static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE; - static inline int16_t Serial_ReceiveByte(void) - { - if (!(Serial_IsCharReceived())) - return -1; - 12fa: 2f ef ldi r18, 0xFF ; 255 - 12fc: 3f ef ldi r19, 0xFF ; 255 - - return Serial_ReceiveByte(); -} - 12fe: c9 01 movw r24, r18 - 1300: 08 95 ret - -00001302 : - 1302: df 93 push r29 - 1304: cf 93 push r28 - 1306: cd b7 in r28, 0x3d ; 61 - 1308: de b7 in r29, 0x3e ; 62 - 130a: fe 01 movw r30, r28 - 130c: 35 96 adiw r30, 0x05 ; 5 - 130e: 61 91 ld r22, Z+ - 1310: 71 91 ld r23, Z+ - 1312: 80 91 3c 01 lds r24, 0x013C - 1316: 90 91 3d 01 lds r25, 0x013D - 131a: dc 01 movw r26, r24 - 131c: 13 96 adiw r26, 0x03 ; 3 - 131e: 2c 91 ld r18, X - 1320: 13 97 sbiw r26, 0x03 ; 3 - 1322: 28 60 ori r18, 0x08 ; 8 - 1324: 13 96 adiw r26, 0x03 ; 3 - 1326: 2c 93 st X, r18 - 1328: af 01 movw r20, r30 - 132a: 42 d0 rcall .+132 ; 0x13b0 - 132c: e0 91 3c 01 lds r30, 0x013C - 1330: f0 91 3d 01 lds r31, 0x013D - 1334: 23 81 ldd r18, Z+3 ; 0x03 - 1336: 27 7f andi r18, 0xF7 ; 247 - 1338: 23 83 std Z+3, r18 ; 0x03 - 133a: cf 91 pop r28 - 133c: df 91 pop r29 - 133e: 08 95 ret - -00001340 : - 1340: ef 92 push r14 - 1342: ff 92 push r15 - 1344: 0f 93 push r16 - 1346: 1f 93 push r17 - 1348: cf 93 push r28 - 134a: df 93 push r29 - 134c: 8c 01 movw r16, r24 - 134e: e0 91 3c 01 lds r30, 0x013C - 1352: f0 91 3d 01 lds r31, 0x013D - 1356: 83 81 ldd r24, Z+3 ; 0x03 - 1358: 81 ff sbrs r24, 1 - 135a: 20 c0 rjmp .+64 ; 0x139c - 135c: c0 e0 ldi r28, 0x00 ; 0 - 135e: d0 e0 ldi r29, 0x00 ; 0 - 1360: 0c c0 rjmp .+24 ; 0x137a - 1362: db 01 movw r26, r22 - 1364: 18 96 adiw r26, 0x08 ; 8 - 1366: ed 91 ld r30, X+ - 1368: fc 91 ld r31, X - 136a: 19 97 sbiw r26, 0x09 ; 9 - 136c: 09 95 icall - 136e: 00 97 sbiw r24, 0x00 ; 0 - 1370: 11 f0 breq .+4 ; 0x1376 - 1372: cf ef ldi r28, 0xFF ; 255 - 1374: df ef ldi r29, 0xFF ; 255 - 1376: 0f 5f subi r16, 0xFF ; 255 - 1378: 1f 4f sbci r17, 0xFF ; 255 - 137a: f8 01 movw r30, r16 - 137c: 84 91 lpm r24, Z+ - 137e: 60 91 3c 01 lds r22, 0x013C - 1382: 70 91 3d 01 lds r23, 0x013D - 1386: 88 23 and r24, r24 - 1388: 61 f7 brne .-40 ; 0x1362 - 138a: db 01 movw r26, r22 - 138c: 18 96 adiw r26, 0x08 ; 8 - 138e: ed 91 ld r30, X+ - 1390: fc 91 ld r31, X - 1392: 19 97 sbiw r26, 0x09 ; 9 - 1394: 8a e0 ldi r24, 0x0A ; 10 - 1396: 09 95 icall - 1398: 00 97 sbiw r24, 0x00 ; 0 - 139a: 11 f0 breq .+4 ; 0x13a0 - 139c: cf ef ldi r28, 0xFF ; 255 - 139e: df ef ldi r29, 0xFF ; 255 - 13a0: ce 01 movw r24, r28 - 13a2: df 91 pop r29 - 13a4: cf 91 pop r28 - 13a6: 1f 91 pop r17 - 13a8: 0f 91 pop r16 - 13aa: ff 90 pop r15 - 13ac: ef 90 pop r14 - 13ae: 08 95 ret - -000013b0 : - 13b0: 2f 92 push r2 - 13b2: 3f 92 push r3 - 13b4: 4f 92 push r4 - 13b6: 5f 92 push r5 - 13b8: 6f 92 push r6 - 13ba: 7f 92 push r7 - 13bc: 8f 92 push r8 - 13be: 9f 92 push r9 - 13c0: af 92 push r10 - 13c2: bf 92 push r11 - 13c4: cf 92 push r12 - 13c6: df 92 push r13 - 13c8: ef 92 push r14 - 13ca: ff 92 push r15 - 13cc: 0f 93 push r16 - 13ce: 1f 93 push r17 - 13d0: df 93 push r29 - 13d2: cf 93 push r28 - 13d4: cd b7 in r28, 0x3d ; 61 - 13d6: de b7 in r29, 0x3e ; 62 - 13d8: 2c 97 sbiw r28, 0x0c ; 12 - 13da: 0f b6 in r0, 0x3f ; 63 - 13dc: f8 94 cli - 13de: de bf out 0x3e, r29 ; 62 - 13e0: 0f be out 0x3f, r0 ; 63 - 13e2: cd bf out 0x3d, r28 ; 61 - 13e4: 6c 01 movw r12, r24 - 13e6: 1b 01 movw r2, r22 - 13e8: 8a 01 movw r16, r20 - 13ea: fc 01 movw r30, r24 - 13ec: 17 82 std Z+7, r1 ; 0x07 - 13ee: 16 82 std Z+6, r1 ; 0x06 - 13f0: 83 81 ldd r24, Z+3 ; 0x03 - 13f2: 81 ff sbrs r24, 1 - 13f4: c4 c1 rjmp .+904 ; 0x177e - 13f6: 2e 01 movw r4, r28 - 13f8: 08 94 sec - 13fa: 41 1c adc r4, r1 - 13fc: 51 1c adc r5, r1 - 13fe: f6 01 movw r30, r12 - 1400: 93 81 ldd r25, Z+3 ; 0x03 - 1402: f1 01 movw r30, r2 - 1404: 93 fd sbrc r25, 3 - 1406: 85 91 lpm r24, Z+ - 1408: 93 ff sbrs r25, 3 - 140a: 81 91 ld r24, Z+ - 140c: 1f 01 movw r2, r30 - 140e: 88 23 and r24, r24 - 1410: 09 f4 brne .+2 ; 0x1414 - 1412: b1 c1 rjmp .+866 ; 0x1776 - 1414: 85 32 cpi r24, 0x25 ; 37 - 1416: 39 f4 brne .+14 ; 0x1426 - 1418: 93 fd sbrc r25, 3 - 141a: 85 91 lpm r24, Z+ - 141c: 93 ff sbrs r25, 3 - 141e: 81 91 ld r24, Z+ - 1420: 1f 01 movw r2, r30 - 1422: 85 32 cpi r24, 0x25 ; 37 - 1424: 21 f4 brne .+8 ; 0x142e - 1426: 90 e0 ldi r25, 0x00 ; 0 - 1428: b6 01 movw r22, r12 - 142a: db d1 rcall .+950 ; 0x17e2 - 142c: e8 cf rjmp .-48 ; 0x13fe - 142e: ee 24 eor r14, r14 - 1430: ff 24 eor r15, r15 - 1432: 20 e0 ldi r18, 0x00 ; 0 - 1434: 20 32 cpi r18, 0x20 ; 32 - 1436: b0 f4 brcc .+44 ; 0x1464 - 1438: 8b 32 cpi r24, 0x2B ; 43 - 143a: 69 f0 breq .+26 ; 0x1456 - 143c: 8c 32 cpi r24, 0x2C ; 44 - 143e: 28 f4 brcc .+10 ; 0x144a - 1440: 80 32 cpi r24, 0x20 ; 32 - 1442: 51 f0 breq .+20 ; 0x1458 - 1444: 83 32 cpi r24, 0x23 ; 35 - 1446: 71 f4 brne .+28 ; 0x1464 - 1448: 0b c0 rjmp .+22 ; 0x1460 - 144a: 8d 32 cpi r24, 0x2D ; 45 - 144c: 39 f0 breq .+14 ; 0x145c - 144e: 80 33 cpi r24, 0x30 ; 48 - 1450: 49 f4 brne .+18 ; 0x1464 - 1452: 21 60 ori r18, 0x01 ; 1 - 1454: 2c c0 rjmp .+88 ; 0x14ae - 1456: 22 60 ori r18, 0x02 ; 2 - 1458: 24 60 ori r18, 0x04 ; 4 - 145a: 29 c0 rjmp .+82 ; 0x14ae - 145c: 28 60 ori r18, 0x08 ; 8 - 145e: 27 c0 rjmp .+78 ; 0x14ae - 1460: 20 61 ori r18, 0x10 ; 16 - 1462: 25 c0 rjmp .+74 ; 0x14ae - 1464: 27 fd sbrc r18, 7 - 1466: 2c c0 rjmp .+88 ; 0x14c0 - 1468: 38 2f mov r19, r24 - 146a: 30 53 subi r19, 0x30 ; 48 - 146c: 3a 30 cpi r19, 0x0A ; 10 - 146e: 98 f4 brcc .+38 ; 0x1496 - 1470: 26 ff sbrs r18, 6 - 1472: 08 c0 rjmp .+16 ; 0x1484 - 1474: 8e 2d mov r24, r14 - 1476: 88 0f add r24, r24 - 1478: e8 2e mov r14, r24 - 147a: ee 0c add r14, r14 - 147c: ee 0c add r14, r14 - 147e: e8 0e add r14, r24 - 1480: e3 0e add r14, r19 - 1482: 15 c0 rjmp .+42 ; 0x14ae - 1484: 8f 2d mov r24, r15 - 1486: 88 0f add r24, r24 - 1488: f8 2e mov r15, r24 - 148a: ff 0c add r15, r15 - 148c: ff 0c add r15, r15 - 148e: f8 0e add r15, r24 - 1490: f3 0e add r15, r19 - 1492: 20 62 ori r18, 0x20 ; 32 - 1494: 0c c0 rjmp .+24 ; 0x14ae - 1496: 8e 32 cpi r24, 0x2E ; 46 - 1498: 21 f4 brne .+8 ; 0x14a2 - 149a: 26 fd sbrc r18, 6 - 149c: 6c c1 rjmp .+728 ; 0x1776 - 149e: 20 64 ori r18, 0x40 ; 64 - 14a0: 06 c0 rjmp .+12 ; 0x14ae - 14a2: 8c 36 cpi r24, 0x6C ; 108 - 14a4: 11 f4 brne .+4 ; 0x14aa - 14a6: 20 68 ori r18, 0x80 ; 128 - 14a8: 02 c0 rjmp .+4 ; 0x14ae - 14aa: 88 36 cpi r24, 0x68 ; 104 - 14ac: 49 f4 brne .+18 ; 0x14c0 - 14ae: f1 01 movw r30, r2 - 14b0: 93 fd sbrc r25, 3 - 14b2: 85 91 lpm r24, Z+ - 14b4: 93 ff sbrs r25, 3 - 14b6: 81 91 ld r24, Z+ - 14b8: 1f 01 movw r2, r30 - 14ba: 88 23 and r24, r24 - 14bc: 09 f0 breq .+2 ; 0x14c0 - 14be: ba cf rjmp .-140 ; 0x1434 - 14c0: 98 2f mov r25, r24 - 14c2: 95 54 subi r25, 0x45 ; 69 - 14c4: 93 30 cpi r25, 0x03 ; 3 - 14c6: 18 f0 brcs .+6 ; 0x14ce - 14c8: 90 52 subi r25, 0x20 ; 32 - 14ca: 93 30 cpi r25, 0x03 ; 3 - 14cc: 28 f4 brcc .+10 ; 0x14d8 - 14ce: 0c 5f subi r16, 0xFC ; 252 - 14d0: 1f 4f sbci r17, 0xFF ; 255 - 14d2: ff e3 ldi r31, 0x3F ; 63 - 14d4: f9 83 std Y+1, r31 ; 0x01 - 14d6: 0d c0 rjmp .+26 ; 0x14f2 - 14d8: 83 36 cpi r24, 0x63 ; 99 - 14da: 31 f0 breq .+12 ; 0x14e8 - 14dc: 83 37 cpi r24, 0x73 ; 115 - 14de: 71 f0 breq .+28 ; 0x14fc - 14e0: 83 35 cpi r24, 0x53 ; 83 - 14e2: 09 f0 breq .+2 ; 0x14e6 - 14e4: 5c c0 rjmp .+184 ; 0x159e - 14e6: 21 c0 rjmp .+66 ; 0x152a - 14e8: f8 01 movw r30, r16 - 14ea: 80 81 ld r24, Z - 14ec: 89 83 std Y+1, r24 ; 0x01 - 14ee: 0e 5f subi r16, 0xFE ; 254 - 14f0: 1f 4f sbci r17, 0xFF ; 255 - 14f2: 42 01 movw r8, r4 - 14f4: 71 e0 ldi r23, 0x01 ; 1 - 14f6: a7 2e mov r10, r23 - 14f8: b1 2c mov r11, r1 - 14fa: 15 c0 rjmp .+42 ; 0x1526 - 14fc: 62 e0 ldi r22, 0x02 ; 2 - 14fe: 66 2e mov r6, r22 - 1500: 71 2c mov r7, r1 - 1502: 60 0e add r6, r16 - 1504: 71 1e adc r7, r17 - 1506: f8 01 movw r30, r16 - 1508: 80 80 ld r8, Z - 150a: 91 80 ldd r9, Z+1 ; 0x01 - 150c: 26 ff sbrs r18, 6 - 150e: 03 c0 rjmp .+6 ; 0x1516 - 1510: 6e 2d mov r22, r14 - 1512: 70 e0 ldi r23, 0x00 ; 0 - 1514: 02 c0 rjmp .+4 ; 0x151a - 1516: 6f ef ldi r22, 0xFF ; 255 - 1518: 7f ef ldi r23, 0xFF ; 255 - 151a: c4 01 movw r24, r8 - 151c: 2c 87 std Y+12, r18 ; 0x0c - 151e: 56 d1 rcall .+684 ; 0x17cc - 1520: 5c 01 movw r10, r24 - 1522: 83 01 movw r16, r6 - 1524: 2c 85 ldd r18, Y+12 ; 0x0c - 1526: 2f 77 andi r18, 0x7F ; 127 - 1528: 16 c0 rjmp .+44 ; 0x1556 - 152a: 52 e0 ldi r21, 0x02 ; 2 - 152c: 65 2e mov r6, r21 - 152e: 71 2c mov r7, r1 - 1530: 60 0e add r6, r16 - 1532: 71 1e adc r7, r17 - 1534: f8 01 movw r30, r16 - 1536: 80 80 ld r8, Z - 1538: 91 80 ldd r9, Z+1 ; 0x01 - 153a: 26 ff sbrs r18, 6 - 153c: 03 c0 rjmp .+6 ; 0x1544 - 153e: 6e 2d mov r22, r14 - 1540: 70 e0 ldi r23, 0x00 ; 0 - 1542: 02 c0 rjmp .+4 ; 0x1548 - 1544: 6f ef ldi r22, 0xFF ; 255 - 1546: 7f ef ldi r23, 0xFF ; 255 - 1548: c4 01 movw r24, r8 - 154a: 2c 87 std Y+12, r18 ; 0x0c - 154c: 34 d1 rcall .+616 ; 0x17b6 - 154e: 5c 01 movw r10, r24 - 1550: 2c 85 ldd r18, Y+12 ; 0x0c - 1552: 20 68 ori r18, 0x80 ; 128 - 1554: 83 01 movw r16, r6 - 1556: 23 fd sbrc r18, 3 - 1558: 1e c0 rjmp .+60 ; 0x1596 - 155a: 07 c0 rjmp .+14 ; 0x156a - 155c: 80 e2 ldi r24, 0x20 ; 32 - 155e: 90 e0 ldi r25, 0x00 ; 0 - 1560: b6 01 movw r22, r12 - 1562: 2c 87 std Y+12, r18 ; 0x0c - 1564: 3e d1 rcall .+636 ; 0x17e2 - 1566: fa 94 dec r15 - 1568: 2c 85 ldd r18, Y+12 ; 0x0c - 156a: 8f 2d mov r24, r15 - 156c: 90 e0 ldi r25, 0x00 ; 0 - 156e: a8 16 cp r10, r24 - 1570: b9 06 cpc r11, r25 - 1572: a0 f3 brcs .-24 ; 0x155c - 1574: 10 c0 rjmp .+32 ; 0x1596 - 1576: f4 01 movw r30, r8 - 1578: 27 fd sbrc r18, 7 - 157a: 85 91 lpm r24, Z+ - 157c: 27 ff sbrs r18, 7 - 157e: 81 91 ld r24, Z+ - 1580: 4f 01 movw r8, r30 - 1582: 90 e0 ldi r25, 0x00 ; 0 - 1584: b6 01 movw r22, r12 - 1586: 2c 87 std Y+12, r18 ; 0x0c - 1588: 2c d1 rcall .+600 ; 0x17e2 - 158a: 2c 85 ldd r18, Y+12 ; 0x0c - 158c: f1 10 cpse r15, r1 - 158e: fa 94 dec r15 - 1590: 08 94 sec - 1592: a1 08 sbc r10, r1 - 1594: b1 08 sbc r11, r1 - 1596: a1 14 cp r10, r1 - 1598: b1 04 cpc r11, r1 - 159a: 69 f7 brne .-38 ; 0x1576 - 159c: e9 c0 rjmp .+466 ; 0x1770 - 159e: 84 36 cpi r24, 0x64 ; 100 - 15a0: 11 f0 breq .+4 ; 0x15a6 - 15a2: 89 36 cpi r24, 0x69 ; 105 - 15a4: 41 f5 brne .+80 ; 0x15f6 - 15a6: 27 ff sbrs r18, 7 - 15a8: 08 c0 rjmp .+16 ; 0x15ba - 15aa: f8 01 movw r30, r16 - 15ac: 60 81 ld r22, Z - 15ae: 71 81 ldd r23, Z+1 ; 0x01 - 15b0: 82 81 ldd r24, Z+2 ; 0x02 - 15b2: 93 81 ldd r25, Z+3 ; 0x03 - 15b4: 0c 5f subi r16, 0xFC ; 252 - 15b6: 1f 4f sbci r17, 0xFF ; 255 - 15b8: 09 c0 rjmp .+18 ; 0x15cc - 15ba: f8 01 movw r30, r16 - 15bc: 60 81 ld r22, Z - 15be: 71 81 ldd r23, Z+1 ; 0x01 - 15c0: 88 27 eor r24, r24 - 15c2: 77 fd sbrc r23, 7 - 15c4: 80 95 com r24 - 15c6: 98 2f mov r25, r24 - 15c8: 0e 5f subi r16, 0xFE ; 254 - 15ca: 1f 4f sbci r17, 0xFF ; 255 - 15cc: 4f e6 ldi r20, 0x6F ; 111 - 15ce: b4 2e mov r11, r20 - 15d0: b2 22 and r11, r18 - 15d2: 97 ff sbrs r25, 7 - 15d4: 09 c0 rjmp .+18 ; 0x15e8 - 15d6: 90 95 com r25 - 15d8: 80 95 com r24 - 15da: 70 95 com r23 - 15dc: 61 95 neg r22 - 15de: 7f 4f sbci r23, 0xFF ; 255 - 15e0: 8f 4f sbci r24, 0xFF ; 255 - 15e2: 9f 4f sbci r25, 0xFF ; 255 - 15e4: f0 e8 ldi r31, 0x80 ; 128 - 15e6: bf 2a or r11, r31 - 15e8: a2 01 movw r20, r4 - 15ea: 2a e0 ldi r18, 0x0A ; 10 - 15ec: 30 e0 ldi r19, 0x00 ; 0 - 15ee: 25 d1 rcall .+586 ; 0x183a <__ultoa_invert> - 15f0: 78 2e mov r7, r24 - 15f2: 74 18 sub r7, r4 - 15f4: 44 c0 rjmp .+136 ; 0x167e - 15f6: 85 37 cpi r24, 0x75 ; 117 - 15f8: 31 f4 brne .+12 ; 0x1606 - 15fa: 3f ee ldi r19, 0xEF ; 239 - 15fc: b3 2e mov r11, r19 - 15fe: b2 22 and r11, r18 - 1600: 2a e0 ldi r18, 0x0A ; 10 - 1602: 30 e0 ldi r19, 0x00 ; 0 - 1604: 25 c0 rjmp .+74 ; 0x1650 - 1606: 99 ef ldi r25, 0xF9 ; 249 - 1608: b9 2e mov r11, r25 - 160a: b2 22 and r11, r18 - 160c: 8f 36 cpi r24, 0x6F ; 111 - 160e: c1 f0 breq .+48 ; 0x1640 - 1610: 80 37 cpi r24, 0x70 ; 112 - 1612: 20 f4 brcc .+8 ; 0x161c - 1614: 88 35 cpi r24, 0x58 ; 88 - 1616: 09 f0 breq .+2 ; 0x161a - 1618: ae c0 rjmp .+348 ; 0x1776 - 161a: 0d c0 rjmp .+26 ; 0x1636 - 161c: 80 37 cpi r24, 0x70 ; 112 - 161e: 21 f0 breq .+8 ; 0x1628 - 1620: 88 37 cpi r24, 0x78 ; 120 - 1622: 09 f0 breq .+2 ; 0x1626 - 1624: a8 c0 rjmp .+336 ; 0x1776 - 1626: 02 c0 rjmp .+4 ; 0x162c - 1628: 20 e1 ldi r18, 0x10 ; 16 - 162a: b2 2a or r11, r18 - 162c: b4 fe sbrs r11, 4 - 162e: 0b c0 rjmp .+22 ; 0x1646 - 1630: 84 e0 ldi r24, 0x04 ; 4 - 1632: b8 2a or r11, r24 - 1634: 08 c0 rjmp .+16 ; 0x1646 - 1636: b4 fe sbrs r11, 4 - 1638: 09 c0 rjmp .+18 ; 0x164c - 163a: e6 e0 ldi r30, 0x06 ; 6 - 163c: be 2a or r11, r30 - 163e: 06 c0 rjmp .+12 ; 0x164c - 1640: 28 e0 ldi r18, 0x08 ; 8 - 1642: 30 e0 ldi r19, 0x00 ; 0 - 1644: 05 c0 rjmp .+10 ; 0x1650 - 1646: 20 e1 ldi r18, 0x10 ; 16 - 1648: 30 e0 ldi r19, 0x00 ; 0 - 164a: 02 c0 rjmp .+4 ; 0x1650 - 164c: 20 e1 ldi r18, 0x10 ; 16 - 164e: 32 e0 ldi r19, 0x02 ; 2 - 1650: b7 fe sbrs r11, 7 - 1652: 08 c0 rjmp .+16 ; 0x1664 - 1654: f8 01 movw r30, r16 - 1656: 60 81 ld r22, Z - 1658: 71 81 ldd r23, Z+1 ; 0x01 - 165a: 82 81 ldd r24, Z+2 ; 0x02 - 165c: 93 81 ldd r25, Z+3 ; 0x03 - 165e: 0c 5f subi r16, 0xFC ; 252 - 1660: 1f 4f sbci r17, 0xFF ; 255 - 1662: 07 c0 rjmp .+14 ; 0x1672 - 1664: f8 01 movw r30, r16 - 1666: 60 81 ld r22, Z - 1668: 71 81 ldd r23, Z+1 ; 0x01 - 166a: 80 e0 ldi r24, 0x00 ; 0 - 166c: 90 e0 ldi r25, 0x00 ; 0 - 166e: 0e 5f subi r16, 0xFE ; 254 - 1670: 1f 4f sbci r17, 0xFF ; 255 - 1672: a2 01 movw r20, r4 - 1674: e2 d0 rcall .+452 ; 0x183a <__ultoa_invert> - 1676: 78 2e mov r7, r24 - 1678: 74 18 sub r7, r4 - 167a: ff e7 ldi r31, 0x7F ; 127 - 167c: bf 22 and r11, r31 - 167e: b6 fe sbrs r11, 6 - 1680: 0b c0 rjmp .+22 ; 0x1698 - 1682: 2e ef ldi r18, 0xFE ; 254 - 1684: b2 22 and r11, r18 - 1686: 7e 14 cp r7, r14 - 1688: 38 f4 brcc .+14 ; 0x1698 - 168a: b4 fe sbrs r11, 4 - 168c: 07 c0 rjmp .+14 ; 0x169c - 168e: b2 fc sbrc r11, 2 - 1690: 05 c0 rjmp .+10 ; 0x169c - 1692: 8f ee ldi r24, 0xEF ; 239 - 1694: b8 22 and r11, r24 - 1696: 02 c0 rjmp .+4 ; 0x169c - 1698: a7 2c mov r10, r7 - 169a: 01 c0 rjmp .+2 ; 0x169e - 169c: ae 2c mov r10, r14 - 169e: 8b 2d mov r24, r11 - 16a0: 90 e0 ldi r25, 0x00 ; 0 - 16a2: b4 fe sbrs r11, 4 - 16a4: 0d c0 rjmp .+26 ; 0x16c0 - 16a6: fe 01 movw r30, r28 - 16a8: e7 0d add r30, r7 - 16aa: f1 1d adc r31, r1 - 16ac: 20 81 ld r18, Z - 16ae: 20 33 cpi r18, 0x30 ; 48 - 16b0: 19 f4 brne .+6 ; 0x16b8 - 16b2: e9 ee ldi r30, 0xE9 ; 233 - 16b4: be 22 and r11, r30 - 16b6: 09 c0 rjmp .+18 ; 0x16ca - 16b8: a3 94 inc r10 - 16ba: b2 fe sbrs r11, 2 - 16bc: 06 c0 rjmp .+12 ; 0x16ca - 16be: 04 c0 rjmp .+8 ; 0x16c8 - 16c0: 86 78 andi r24, 0x86 ; 134 - 16c2: 90 70 andi r25, 0x00 ; 0 - 16c4: 00 97 sbiw r24, 0x00 ; 0 - 16c6: 09 f0 breq .+2 ; 0x16ca - 16c8: a3 94 inc r10 - 16ca: 8b 2c mov r8, r11 - 16cc: 99 24 eor r9, r9 - 16ce: b3 fc sbrc r11, 3 - 16d0: 13 c0 rjmp .+38 ; 0x16f8 - 16d2: b0 fe sbrs r11, 0 - 16d4: 0e c0 rjmp .+28 ; 0x16f2 - 16d6: af 14 cp r10, r15 - 16d8: 28 f4 brcc .+10 ; 0x16e4 - 16da: e7 2c mov r14, r7 - 16dc: ef 0c add r14, r15 - 16de: ea 18 sub r14, r10 - 16e0: af 2c mov r10, r15 - 16e2: 07 c0 rjmp .+14 ; 0x16f2 - 16e4: e7 2c mov r14, r7 - 16e6: 05 c0 rjmp .+10 ; 0x16f2 - 16e8: 80 e2 ldi r24, 0x20 ; 32 - 16ea: 90 e0 ldi r25, 0x00 ; 0 - 16ec: b6 01 movw r22, r12 - 16ee: 79 d0 rcall .+242 ; 0x17e2 - 16f0: a3 94 inc r10 - 16f2: af 14 cp r10, r15 - 16f4: c8 f3 brcs .-14 ; 0x16e8 - 16f6: 04 c0 rjmp .+8 ; 0x1700 - 16f8: af 14 cp r10, r15 - 16fa: 10 f4 brcc .+4 ; 0x1700 - 16fc: fa 18 sub r15, r10 - 16fe: 01 c0 rjmp .+2 ; 0x1702 - 1700: ff 24 eor r15, r15 - 1702: 84 fe sbrs r8, 4 - 1704: 0e c0 rjmp .+28 ; 0x1722 - 1706: 80 e3 ldi r24, 0x30 ; 48 - 1708: 90 e0 ldi r25, 0x00 ; 0 - 170a: b6 01 movw r22, r12 - 170c: 6a d0 rcall .+212 ; 0x17e2 - 170e: 82 fe sbrs r8, 2 - 1710: 1d c0 rjmp .+58 ; 0x174c - 1712: 81 fe sbrs r8, 1 - 1714: 03 c0 rjmp .+6 ; 0x171c - 1716: 88 e5 ldi r24, 0x58 ; 88 - 1718: 90 e0 ldi r25, 0x00 ; 0 - 171a: 10 c0 rjmp .+32 ; 0x173c - 171c: 88 e7 ldi r24, 0x78 ; 120 - 171e: 90 e0 ldi r25, 0x00 ; 0 - 1720: 0d c0 rjmp .+26 ; 0x173c - 1722: c4 01 movw r24, r8 - 1724: 86 78 andi r24, 0x86 ; 134 - 1726: 90 70 andi r25, 0x00 ; 0 - 1728: 00 97 sbiw r24, 0x00 ; 0 - 172a: 81 f0 breq .+32 ; 0x174c - 172c: 81 fc sbrc r8, 1 - 172e: 02 c0 rjmp .+4 ; 0x1734 - 1730: 80 e2 ldi r24, 0x20 ; 32 - 1732: 01 c0 rjmp .+2 ; 0x1736 - 1734: 8b e2 ldi r24, 0x2B ; 43 - 1736: b7 fc sbrc r11, 7 - 1738: 8d e2 ldi r24, 0x2D ; 45 - 173a: 90 e0 ldi r25, 0x00 ; 0 - 173c: b6 01 movw r22, r12 - 173e: 51 d0 rcall .+162 ; 0x17e2 - 1740: 05 c0 rjmp .+10 ; 0x174c - 1742: 80 e3 ldi r24, 0x30 ; 48 - 1744: 90 e0 ldi r25, 0x00 ; 0 - 1746: b6 01 movw r22, r12 - 1748: 4c d0 rcall .+152 ; 0x17e2 - 174a: ea 94 dec r14 - 174c: 7e 14 cp r7, r14 - 174e: c8 f3 brcs .-14 ; 0x1742 - 1750: 7a 94 dec r7 - 1752: f2 01 movw r30, r4 - 1754: e7 0d add r30, r7 - 1756: f1 1d adc r31, r1 - 1758: 80 81 ld r24, Z - 175a: 90 e0 ldi r25, 0x00 ; 0 - 175c: b6 01 movw r22, r12 - 175e: 41 d0 rcall .+130 ; 0x17e2 - 1760: 77 20 and r7, r7 - 1762: b1 f7 brne .-20 ; 0x1750 - 1764: 05 c0 rjmp .+10 ; 0x1770 - 1766: 80 e2 ldi r24, 0x20 ; 32 - 1768: 90 e0 ldi r25, 0x00 ; 0 - 176a: b6 01 movw r22, r12 - 176c: 3a d0 rcall .+116 ; 0x17e2 - 176e: fa 94 dec r15 - 1770: ff 20 and r15, r15 - 1772: c9 f7 brne .-14 ; 0x1766 - 1774: 44 ce rjmp .-888 ; 0x13fe - 1776: f6 01 movw r30, r12 - 1778: 26 81 ldd r18, Z+6 ; 0x06 - 177a: 37 81 ldd r19, Z+7 ; 0x07 - 177c: 02 c0 rjmp .+4 ; 0x1782 - 177e: 2f ef ldi r18, 0xFF ; 255 - 1780: 3f ef ldi r19, 0xFF ; 255 - 1782: c9 01 movw r24, r18 - 1784: 2c 96 adiw r28, 0x0c ; 12 - 1786: 0f b6 in r0, 0x3f ; 63 - 1788: f8 94 cli - 178a: de bf out 0x3e, r29 ; 62 - 178c: 0f be out 0x3f, r0 ; 63 - 178e: cd bf out 0x3d, r28 ; 61 - 1790: cf 91 pop r28 - 1792: df 91 pop r29 - 1794: 1f 91 pop r17 - 1796: 0f 91 pop r16 - 1798: ff 90 pop r15 - 179a: ef 90 pop r14 - 179c: df 90 pop r13 - 179e: cf 90 pop r12 - 17a0: bf 90 pop r11 - 17a2: af 90 pop r10 - 17a4: 9f 90 pop r9 - 17a6: 8f 90 pop r8 - 17a8: 7f 90 pop r7 - 17aa: 6f 90 pop r6 - 17ac: 5f 90 pop r5 - 17ae: 4f 90 pop r4 - 17b0: 3f 90 pop r3 - 17b2: 2f 90 pop r2 - 17b4: 08 95 ret - -000017b6 : - 17b6: fc 01 movw r30, r24 - 17b8: 05 90 lpm r0, Z+ - 17ba: 61 50 subi r22, 0x01 ; 1 - 17bc: 70 40 sbci r23, 0x00 ; 0 - 17be: 01 10 cpse r0, r1 - 17c0: d8 f7 brcc .-10 ; 0x17b8 - 17c2: 80 95 com r24 - 17c4: 90 95 com r25 - 17c6: 8e 0f add r24, r30 - 17c8: 9f 1f adc r25, r31 - 17ca: 08 95 ret - -000017cc : - 17cc: fc 01 movw r30, r24 - 17ce: 61 50 subi r22, 0x01 ; 1 - 17d0: 70 40 sbci r23, 0x00 ; 0 - 17d2: 01 90 ld r0, Z+ - 17d4: 01 10 cpse r0, r1 - 17d6: d8 f7 brcc .-10 ; 0x17ce - 17d8: 80 95 com r24 - 17da: 90 95 com r25 - 17dc: 8e 0f add r24, r30 - 17de: 9f 1f adc r25, r31 - 17e0: 08 95 ret - -000017e2 : - 17e2: 0f 93 push r16 - 17e4: 1f 93 push r17 - 17e6: cf 93 push r28 - 17e8: df 93 push r29 - 17ea: 8c 01 movw r16, r24 - 17ec: eb 01 movw r28, r22 - 17ee: 8b 81 ldd r24, Y+3 ; 0x03 - 17f0: 81 ff sbrs r24, 1 - 17f2: 1b c0 rjmp .+54 ; 0x182a - 17f4: 82 ff sbrs r24, 2 - 17f6: 0d c0 rjmp .+26 ; 0x1812 - 17f8: 2e 81 ldd r18, Y+6 ; 0x06 - 17fa: 3f 81 ldd r19, Y+7 ; 0x07 - 17fc: 8c 81 ldd r24, Y+4 ; 0x04 - 17fe: 9d 81 ldd r25, Y+5 ; 0x05 - 1800: 28 17 cp r18, r24 - 1802: 39 07 cpc r19, r25 - 1804: 64 f4 brge .+24 ; 0x181e - 1806: e8 81 ld r30, Y - 1808: f9 81 ldd r31, Y+1 ; 0x01 - 180a: 01 93 st Z+, r16 - 180c: f9 83 std Y+1, r31 ; 0x01 - 180e: e8 83 st Y, r30 - 1810: 06 c0 rjmp .+12 ; 0x181e - 1812: e8 85 ldd r30, Y+8 ; 0x08 - 1814: f9 85 ldd r31, Y+9 ; 0x09 - 1816: 80 2f mov r24, r16 - 1818: 09 95 icall - 181a: 00 97 sbiw r24, 0x00 ; 0 - 181c: 31 f4 brne .+12 ; 0x182a - 181e: 8e 81 ldd r24, Y+6 ; 0x06 - 1820: 9f 81 ldd r25, Y+7 ; 0x07 - 1822: 01 96 adiw r24, 0x01 ; 1 - 1824: 9f 83 std Y+7, r25 ; 0x07 - 1826: 8e 83 std Y+6, r24 ; 0x06 - 1828: 02 c0 rjmp .+4 ; 0x182e - 182a: 0f ef ldi r16, 0xFF ; 255 - 182c: 1f ef ldi r17, 0xFF ; 255 - 182e: c8 01 movw r24, r16 - 1830: df 91 pop r29 - 1832: cf 91 pop r28 - 1834: 1f 91 pop r17 - 1836: 0f 91 pop r16 - 1838: 08 95 ret - -0000183a <__ultoa_invert>: - 183a: fa 01 movw r30, r20 - 183c: aa 27 eor r26, r26 - 183e: 28 30 cpi r18, 0x08 ; 8 - 1840: 51 f1 breq .+84 ; 0x1896 <__ultoa_invert+0x5c> - 1842: 20 31 cpi r18, 0x10 ; 16 - 1844: 81 f1 breq .+96 ; 0x18a6 <__ultoa_invert+0x6c> - 1846: e8 94 clt - 1848: 6f 93 push r22 - 184a: 6e 7f andi r22, 0xFE ; 254 - 184c: 6e 5f subi r22, 0xFE ; 254 - 184e: 7f 4f sbci r23, 0xFF ; 255 - 1850: 8f 4f sbci r24, 0xFF ; 255 - 1852: 9f 4f sbci r25, 0xFF ; 255 - 1854: af 4f sbci r26, 0xFF ; 255 - 1856: b1 e0 ldi r27, 0x01 ; 1 - 1858: 3e d0 rcall .+124 ; 0x18d6 <__ultoa_invert+0x9c> - 185a: b4 e0 ldi r27, 0x04 ; 4 - 185c: 3c d0 rcall .+120 ; 0x18d6 <__ultoa_invert+0x9c> - 185e: 67 0f add r22, r23 - 1860: 78 1f adc r23, r24 - 1862: 89 1f adc r24, r25 - 1864: 9a 1f adc r25, r26 - 1866: a1 1d adc r26, r1 - 1868: 68 0f add r22, r24 - 186a: 79 1f adc r23, r25 - 186c: 8a 1f adc r24, r26 - 186e: 91 1d adc r25, r1 - 1870: a1 1d adc r26, r1 - 1872: 6a 0f add r22, r26 - 1874: 71 1d adc r23, r1 - 1876: 81 1d adc r24, r1 - 1878: 91 1d adc r25, r1 - 187a: a1 1d adc r26, r1 - 187c: 20 d0 rcall .+64 ; 0x18be <__ultoa_invert+0x84> - 187e: 09 f4 brne .+2 ; 0x1882 <__ultoa_invert+0x48> - 1880: 68 94 set - 1882: 3f 91 pop r19 - 1884: 2a e0 ldi r18, 0x0A ; 10 - 1886: 26 9f mul r18, r22 - 1888: 11 24 eor r1, r1 - 188a: 30 19 sub r19, r0 - 188c: 30 5d subi r19, 0xD0 ; 208 - 188e: 31 93 st Z+, r19 - 1890: de f6 brtc .-74 ; 0x1848 <__ultoa_invert+0xe> - 1892: cf 01 movw r24, r30 - 1894: 08 95 ret - 1896: 46 2f mov r20, r22 - 1898: 47 70 andi r20, 0x07 ; 7 - 189a: 40 5d subi r20, 0xD0 ; 208 - 189c: 41 93 st Z+, r20 - 189e: b3 e0 ldi r27, 0x03 ; 3 - 18a0: 0f d0 rcall .+30 ; 0x18c0 <__ultoa_invert+0x86> - 18a2: c9 f7 brne .-14 ; 0x1896 <__ultoa_invert+0x5c> - 18a4: f6 cf rjmp .-20 ; 0x1892 <__ultoa_invert+0x58> - 18a6: 46 2f mov r20, r22 - 18a8: 4f 70 andi r20, 0x0F ; 15 - 18aa: 40 5d subi r20, 0xD0 ; 208 - 18ac: 4a 33 cpi r20, 0x3A ; 58 - 18ae: 18 f0 brcs .+6 ; 0x18b6 <__ultoa_invert+0x7c> - 18b0: 49 5d subi r20, 0xD9 ; 217 - 18b2: 31 fd sbrc r19, 1 - 18b4: 40 52 subi r20, 0x20 ; 32 - 18b6: 41 93 st Z+, r20 - 18b8: 02 d0 rcall .+4 ; 0x18be <__ultoa_invert+0x84> - 18ba: a9 f7 brne .-22 ; 0x18a6 <__ultoa_invert+0x6c> - 18bc: ea cf rjmp .-44 ; 0x1892 <__ultoa_invert+0x58> - 18be: b4 e0 ldi r27, 0x04 ; 4 - 18c0: a6 95 lsr r26 - 18c2: 97 95 ror r25 - 18c4: 87 95 ror r24 - 18c6: 77 95 ror r23 - 18c8: 67 95 ror r22 - 18ca: ba 95 dec r27 - 18cc: c9 f7 brne .-14 ; 0x18c0 <__ultoa_invert+0x86> - 18ce: 00 97 sbiw r24, 0x00 ; 0 - 18d0: 61 05 cpc r22, r1 - 18d2: 71 05 cpc r23, r1 - 18d4: 08 95 ret - 18d6: 9b 01 movw r18, r22 - 18d8: ac 01 movw r20, r24 - 18da: 0a 2e mov r0, r26 - 18dc: 06 94 lsr r0 - 18de: 57 95 ror r21 - 18e0: 47 95 ror r20 - 18e2: 37 95 ror r19 - 18e4: 27 95 ror r18 - 18e6: ba 95 dec r27 - 18e8: c9 f7 brne .-14 ; 0x18dc <__ultoa_invert+0xa2> - 18ea: 62 0f add r22, r18 - 18ec: 73 1f adc r23, r19 - 18ee: 84 1f adc r24, r20 - 18f0: 95 1f adc r25, r21 - 18f2: a0 1d adc r26, r0 - 18f4: 08 95 ret - -000018f6 <_exit>: - 18f6: f8 94 cli - -000018f8 <__stop_program>: - 18f8: ff cf rjmp .-2 ; 0x18f8 <__stop_program> diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst deleted file mode 100644 index c99fb0e1da..0000000000 --- a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst +++ /dev/null @@ -1,853 +0,0 @@ - 1 .file "AudioInputHost.c" - 2 __SREG__ = 0x3f - 3 __SP_H__ = 0x3e - 4 __SP_L__ = 0x3d - 5 __CCP__ = 0x34 - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 15 .Ltext0: - 16 .section .text.LEDs_SetAllLEDs,"ax",@progbits - 18 LEDs_SetAllLEDs: - 19 .LFB127: - 20 .LSM0: - 21 .LVL0: - 22 /* prologue: function */ - 23 /* frame size = 0 */ - 24 /* stack size = 0 */ - 25 .L__stack_usage = 0 - 26 .LSM1: - 27 0000 9BB1 in r25,43-32 - 28 0002 9F70 andi r25,lo8(15) - 29 0004 982B or r25,r24 - 30 0006 9BB9 out 43-32,r25 - 31 /* epilogue start */ - 32 .LSM2: - 33 0008 0895 ret - 34 .LFE127: - 36 .section .text.SetupHardware,"ax",@progbits - 37 .global SetupHardware - 39 SetupHardware: - 40 .LFB132: - 41 .LSM3: - 42 /* prologue: function */ - 43 /* frame size = 0 */ - 44 /* stack size = 0 */ - 45 .L__stack_usage = 0 - 46 .LSM4: - 47 0000 84B7 in r24,84-32 - 48 0002 877F andi r24,lo8(-9) - 49 0004 84BF out 84-32,r24 - 50 .LSM5: - 51 0006 28E1 ldi r18,lo8(24) - 52 /* #APP */ - 53 ; 63 "AudioInputHost.c" 1 - 54 0008 0FB6 in __tmp_reg__, __SREG__ - 55 000a F894 cli - 56 000c 2093 6000 sts 96, r18 - 57 0010 1092 6000 sts 96, __zero_reg__ - 58 0014 0FBE out __SREG__,__tmp_reg__ - 59 - 60 ; 0 "" 2 - 61 .LVL1: - 62 /* #NOAPP */ - 63 .LBB39: - 64 .LBB40: - 65 .LSM6: - 66 0016 90E0 ldi r25,lo8(0) - 67 0018 80E8 ldi r24,lo8(-128) - 68 /* #APP */ - 69 ; 1614 "c:\program files (x86)\atmel\avr studio 5.0\extensions\application\avr toolchain\bin\../l - 70 001a 0FB6 in __tmp_reg__,__SREG__ - 71 001c F894 cli - 72 001e 8093 6100 sts 97, r24 - 73 0022 9093 6100 sts 97, r25 - 74 0026 0FBE out __SREG__, __tmp_reg__ - 75 ; 0 "" 2 - 76 .LVL2: - 77 /* #NOAPP */ - 78 .LBE40: - 79 .LBE39: - 80 .LBB41: - 81 .LBB42: - 82 .LSM7: - 83 0028 83E3 ldi r24,lo8(51) - 84 002a 90E0 ldi r25,hi8(51) - 85 002c 9093 CD00 sts 204+1,r25 - 86 0030 8093 CC00 sts 204,r24 - 87 .LSM8: - 88 0034 86E0 ldi r24,lo8(6) - 89 0036 8093 CA00 sts 202,r24 - 90 .LSM9: - 91 003a 1092 C800 sts 200,__zero_reg__ - 92 .LSM10: - 93 003e 2093 C900 sts 201,r18 - 94 .LSM11: - 95 0042 539A sbi 42-32,3 - 96 .LSM12: - 97 0044 5A9A sbi 43-32,2 - 98 .LBE42: - 99 .LBE41: - 100 .LBB43: - 101 .LBB44: - 102 .LSM13: - 103 0046 8AB1 in r24,42-32 - 104 0048 806F ori r24,lo8(-16) - 105 004a 8AB9 out 42-32,r24 - 106 .LSM14: - 107 004c 8BB1 in r24,43-32 - 108 004e 8F70 andi r24,lo8(15) - 109 0050 8BB9 out 43-32,r24 - 110 .LBE44: - 111 .LBE43: - 112 .LSM15: - 113 0052 0E94 0000 call USB_Init - 114 .LVL3: - 115 .LBB45: - 116 .LBB46: - 117 .LSM16: - 118 0056 E0E0 ldi r30,lo8(USARTSerialStream) - 119 0058 F0E0 ldi r31,hi8(USARTSerialStream) - 120 005a F093 0000 sts __iob+1,r31 - 121 005e E093 0000 sts __iob,r30 - 122 .LSM17: - 123 0062 F093 0000 sts __iob+2+1,r31 - 124 0066 E093 0000 sts __iob+2,r30 - 125 .LSM18: - 126 006a 8EE0 ldi r24,lo8(14) - 127 006c DF01 movw r26,r30 - 128 006e 1D92 st X+,__zero_reg__ - 129 0070 8A95 dec r24 - 130 0072 01F4 brne .-6 - 131 0074 83E0 ldi r24,lo8(3) - 132 0076 8093 0000 sts USARTSerialStream+3,r24 - 133 007a 80E0 ldi r24,lo8(gs(Serial_putchar)) - 134 007c 90E0 ldi r25,hi8(gs(Serial_putchar)) - 135 007e 9093 0000 sts USARTSerialStream+8+1,r25 - 136 0082 8093 0000 sts USARTSerialStream+8,r24 - 137 0086 80E0 ldi r24,lo8(gs(Serial_getchar)) - 138 0088 90E0 ldi r25,hi8(gs(Serial_getchar)) - 139 008a 9093 0000 sts USARTSerialStream+10+1,r25 - 140 008e 8093 0000 sts USARTSerialStream+10,r24 - 141 /* epilogue start */ - 142 .LBE46: - 143 .LBE45: - 144 .LSM19: - 145 0092 0895 ret - 146 .LFE132: - 148 .section .text.EVENT_USB_Host_DeviceAttached,"ax",@progbits - 149 .global EVENT_USB_Host_DeviceAttached - 151 EVENT_USB_Host_DeviceAttached: - 152 .LFB133: - 153 .LSM20: - 154 /* prologue: function */ - 155 /* frame size = 0 */ - 156 /* stack size = 0 */ - 157 .L__stack_usage = 0 - 158 .LSM21: - 159 0000 80E0 ldi r24,lo8(__c.3897) - 160 0002 90E0 ldi r25,hi8(__c.3897) - 161 0004 0E94 0000 call puts_P - 162 .LSM22: - 163 0008 80EA ldi r24,lo8(-96) - 164 000a 0E94 0000 call LEDs_SetAllLEDs - 165 /* epilogue start */ - 166 .LSM23: - 167 000e 0895 ret - 168 .LFE133: - 170 .section .text.EVENT_USB_Host_DeviceUnattached,"ax",@progbits - 171 .global EVENT_USB_Host_DeviceUnattached - 173 EVENT_USB_Host_DeviceUnattached: - 174 .LFB134: - 175 .LSM24: - 176 /* prologue: function */ - 177 /* frame size = 0 */ - 178 /* stack size = 0 */ - 179 .L__stack_usage = 0 - 180 .LSM25: - 181 0000 80E0 ldi r24,lo8(__c.3902) - 182 0002 90E0 ldi r25,hi8(__c.3902) - 183 0004 0E94 0000 call puts_P - 184 .LSM26: - 185 0008 80E1 ldi r24,lo8(16) - 186 000a 0E94 0000 call LEDs_SetAllLEDs - 187 /* epilogue start */ - 188 .LSM27: - 189 000e 0895 ret - 190 .LFE134: - 192 .section .text.EVENT_USB_Host_DeviceEnumerationComplete,"ax",@progbits - 193 .global EVENT_USB_Host_DeviceEnumerationComplete - 195 EVENT_USB_Host_DeviceEnumerationComplete: - 196 .LFB135: - 197 .LSM28: - 198 /* prologue: function */ - 199 /* frame size = 0 */ - 200 /* stack size = 0 */ - 201 .L__stack_usage = 0 - 202 .LSM29: - 203 0000 80E6 ldi r24,lo8(96) - 204 0002 0E94 0000 call LEDs_SetAllLEDs - 205 /* epilogue start */ - 206 .LSM30: - 207 0006 0895 ret - 208 .LFE135: - 210 .section .text.EVENT_USB_Host_HostError,"ax",@progbits - 211 .global EVENT_USB_Host_HostError - 213 EVENT_USB_Host_HostError: - 214 .LFB136: - 215 .LSM31: - 216 .LVL4: - 217 0000 DF93 push r29 - 218 0002 CF93 push r28 - 219 0004 0F92 push __tmp_reg__ - 220 0006 CDB7 in r28,__SP_L__ - 221 0008 DEB7 in r29,__SP_H__ - 222 /* prologue: function */ - 223 /* frame size = 1 */ - 224 /* stack size = 3 */ - 225 .L__stack_usage = 3 - 226 .LSM32: - 227 000a 8983 std Y+1,r24 - 228 000c 0E94 0000 call USB_Disable - 229 .LVL5: - 230 .LSM33: - 231 0010 00D0 rcall . - 232 0012 00D0 rcall . - 233 0014 EDB7 in r30,__SP_L__ - 234 0016 FEB7 in r31,__SP_H__ - 235 0018 3196 adiw r30,1 - 236 001a 20E0 ldi r18,lo8(__c.3910) - 237 001c 30E0 ldi r19,hi8(__c.3910) - 238 001e ADB7 in r26,__SP_L__ - 239 0020 BEB7 in r27,__SP_H__ - 240 0022 1296 adiw r26,1+1 - 241 0024 3C93 st X,r19 - 242 0026 2E93 st -X,r18 - 243 0028 1197 sbiw r26,1 - 244 002a 8981 ldd r24,Y+1 - 245 002c 8283 std Z+2,r24 - 246 002e 1382 std Z+3,__zero_reg__ - 247 0030 0E94 0000 call printf_P - 248 .LSM34: - 249 0034 0F90 pop __tmp_reg__ - 250 0036 0F90 pop __tmp_reg__ - 251 0038 0F90 pop __tmp_reg__ - 252 003a 0F90 pop __tmp_reg__ - 253 003c 80E9 ldi r24,lo8(-112) - 254 003e 0E94 0000 call LEDs_SetAllLEDs - 255 .L7: - 256 0042 00C0 rjmp .L7 - 257 .LFE136: - 259 .section .text.EVENT_USB_Host_DeviceEnumerationFailed,"ax",@progbits - 260 .global EVENT_USB_Host_DeviceEnumerationFailed - 262 EVENT_USB_Host_DeviceEnumerationFailed: - 263 .LFB137: - 264 .LSM35: - 265 .LVL6: - 266 /* prologue: function */ - 267 /* frame size = 0 */ - 268 /* stack size = 0 */ - 269 .L__stack_usage = 0 - 270 .LSM36: - 271 0000 9091 0000 lds r25,USB_HostState - 272 0004 2DB7 in r18,__SP_L__ - 273 0006 3EB7 in r19,__SP_H__ - 274 0008 2850 subi r18,lo8(-(-8)) - 275 000a 3040 sbci r19,hi8(-(-8)) - 276 000c 0FB6 in __tmp_reg__,__SREG__ - 277 000e F894 cli - 278 0010 3EBF out __SP_H__,r19 - 279 0012 0FBE out __SREG__,__tmp_reg__ - 280 0014 2DBF out __SP_L__,r18 - 281 0016 EDB7 in r30,__SP_L__ - 282 0018 FEB7 in r31,__SP_H__ - 283 001a 3196 adiw r30,1 - 284 001c 20E0 ldi r18,lo8(__c.3917) - 285 001e 30E0 ldi r19,hi8(__c.3917) - 286 0020 ADB7 in r26,__SP_L__ - 287 0022 BEB7 in r27,__SP_H__ - 288 0024 1296 adiw r26,1+1 - 289 0026 3C93 st X,r19 - 290 0028 2E93 st -X,r18 - 291 002a 1197 sbiw r26,1 - 292 002c 8283 std Z+2,r24 - 293 002e 1382 std Z+3,__zero_reg__ - 294 0030 6483 std Z+4,r22 - 295 0032 1582 std Z+5,__zero_reg__ - 296 0034 9683 std Z+6,r25 - 297 0036 1782 std Z+7,__zero_reg__ - 298 0038 0E94 0000 call printf_P - 299 .LVL7: - 300 .LSM37: - 301 003c 2DB7 in r18,__SP_L__ - 302 003e 3EB7 in r19,__SP_H__ - 303 0040 285F subi r18,lo8(-(8)) - 304 0042 3F4F sbci r19,hi8(-(8)) - 305 0044 0FB6 in __tmp_reg__,__SREG__ - 306 0046 F894 cli - 307 0048 3EBF out __SP_H__,r19 - 308 004a 0FBE out __SREG__,__tmp_reg__ - 309 004c 2DBF out __SP_L__,r18 - 310 004e 80E9 ldi r24,lo8(-112) - 311 0050 0E94 0000 call LEDs_SetAllLEDs - 312 /* epilogue start */ - 313 .LSM38: - 314 0054 0895 ret - 315 .LFE137: - 317 .section .text.Audio_Task,"ax",@progbits - 318 .global Audio_Task - 320 Audio_Task: - 321 .LFB138: - 322 .LSM39: - 323 0000 1F93 push r17 - 324 0002 DF93 push r29 - 325 0004 CF93 push r28 - 326 0006 00D0 rcall . - 327 0008 0F92 push __tmp_reg__ - 328 000a CDB7 in r28,__SP_L__ - 329 000c DEB7 in r29,__SP_H__ - 330 /* prologue: function */ - 331 /* frame size = 3 */ - 332 /* stack size = 6 */ - 333 .L__stack_usage = 6 - 334 .LSM40: - 335 000e 8091 0000 lds r24,USB_HostState - 336 0012 8B30 cpi r24,lo8(11) - 337 0014 01F0 breq .+2 - 338 0016 00C0 rjmp .L9 - 339 .LBB47: - 340 .LSM41: - 341 0018 80E0 ldi r24,lo8(__c.3924) - 342 001a 90E0 ldi r25,hi8(__c.3924) - 343 001c 0E94 0000 call puts_P - 344 .LSM42: - 345 0020 0E94 0000 call ProcessConfigurationDescriptor - 346 0024 182F mov r17,r24 - 347 .LVL8: - 348 0026 8823 tst r24 - 349 0028 01F0 breq .L12 - 350 .LSM43: - 351 002a 8130 cpi r24,lo8(1) - 352 002c 01F4 brne .L13 - 353 .LSM44: - 354 002e 80E0 ldi r24,lo8(__c.3926) - 355 0030 90E0 ldi r25,hi8(__c.3926) - 356 .LVL9: - 357 0032 00C0 rjmp .L20 - 358 .L13: - 359 .LSM45: - 360 0034 80E0 ldi r24,lo8(__c.3928) - 361 0036 90E0 ldi r25,hi8(__c.3928) - 362 .L20: - 363 0038 0E94 0000 call puts_P - 364 .LSM46: - 365 003c 00D0 rcall . - 366 003e 00D0 rcall . - 367 0040 EDB7 in r30,__SP_L__ - 368 0042 FEB7 in r31,__SP_H__ - 369 0044 3196 adiw r30,1 - 370 0046 20E0 ldi r18,lo8(__c.3930) - 371 0048 30E0 ldi r19,hi8(__c.3930) - 372 004a ADB7 in r26,__SP_L__ - 373 004c BEB7 in r27,__SP_H__ - 374 004e 1296 adiw r26,1+1 - 375 0050 3C93 st X,r19 - 376 0052 2E93 st -X,r18 - 377 0054 1197 sbiw r26,1 - 378 0056 1283 std Z+2,r17 - 379 .LVL10: - 380 .L22: - 381 0058 1382 std Z+3,__zero_reg__ - 382 005a 0E94 0000 call printf_P - 383 .LSM47: - 384 005e 0F90 pop __tmp_reg__ - 385 0060 0F90 pop __tmp_reg__ - 386 0062 0F90 pop __tmp_reg__ - 387 0064 0F90 pop __tmp_reg__ - 388 0066 00C0 rjmp .L21 - 389 .LVL11: - 390 .L12: - 391 .LSM48: - 392 0068 81E0 ldi r24,lo8(1) - 393 006a 0E94 0000 call USB_Host_SetDeviceConfiguration - 394 .LVL12: - 395 006e 8823 tst r24 - 396 0070 01F0 breq .L15 - 397 .LSM49: - 398 0072 00D0 rcall . - 399 0074 00D0 rcall . - 400 0076 EDB7 in r30,__SP_L__ - 401 0078 FEB7 in r31,__SP_H__ - 402 007a 3196 adiw r30,1 - 403 007c 20E0 ldi r18,lo8(__c.3933) - 404 007e 30E0 ldi r19,hi8(__c.3933) - 405 0080 00C0 rjmp .L23 - 406 .L15: - 407 .LSM50: - 408 0082 8091 0000 lds r24,StreamingInterfaceIndex - 409 .LVL13: - 410 0086 6091 0000 lds r22,StreamingInterfaceAltSetting - 411 008a 0E94 0000 call USB_Host_SetInterfaceAltSetting - 412 .LVL14: - 413 008e 8823 tst r24 - 414 0090 01F0 breq .L16 - 415 .LSM51: - 416 0092 00D0 rcall . - 417 0094 00D0 rcall . - 418 0096 EDB7 in r30,__SP_L__ - 419 0098 FEB7 in r31,__SP_H__ - 420 009a 3196 adiw r30,1 - 421 009c 20E0 ldi r18,lo8(__c.3935) - 422 009e 30E0 ldi r19,hi8(__c.3935) - 423 .L23: - 424 00a0 ADB7 in r26,__SP_L__ - 425 00a2 BEB7 in r27,__SP_H__ - 426 00a4 1296 adiw r26,1+1 - 427 00a6 3C93 st X,r19 - 428 00a8 2E93 st -X,r18 - 429 00aa 1197 sbiw r26,1 - 430 00ac 8283 std Z+2,r24 - 431 00ae 00C0 rjmp .L22 - 432 .L16: - 433 .LSM52: - 434 00b0 2091 0000 lds r18,StreamingEndpointAddress - 435 00b4 82E2 ldi r24,lo8(34) - 436 .LVL15: - 437 00b6 8093 0000 sts USB_ControlRequest,r24 - 438 00ba 81E0 ldi r24,lo8(1) - 439 00bc 8093 0000 sts USB_ControlRequest+1,r24 - 440 00c0 80E0 ldi r24,lo8(256) - 441 00c2 91E0 ldi r25,hi8(256) - 442 00c4 9093 0000 sts USB_ControlRequest+2+1,r25 - 443 00c8 8093 0000 sts USB_ControlRequest+2,r24 - 444 00cc 2093 0000 sts USB_ControlRequest+4,r18 - 445 00d0 1092 0000 sts USB_ControlRequest+5,__zero_reg__ - 446 00d4 83E0 ldi r24,lo8(3) - 447 00d6 90E0 ldi r25,hi8(3) - 448 00d8 9093 0000 sts USB_ControlRequest+6+1,r25 - 449 00dc 8093 0000 sts USB_ControlRequest+6,r24 - 450 .LSM53: - 451 00e0 DE01 movw r26,r28 - 452 00e2 1196 adiw r26,1 - 453 00e4 E0E0 ldi r30,lo8(C.5.5024) - 454 00e6 F0E0 ldi r31,hi8(C.5.5024) - 455 00e8 83E0 ldi r24,lo8(3) - 456 .L17: - 457 00ea 0190 ld r0,Z+ - 458 00ec 0D92 st X+,r0 - 459 00ee 8150 subi r24,lo8(-(-1)) - 460 00f0 01F4 brne .L17 - 461 .LVL16: - 462 .LBB48: - 463 .LBB49: - 464 .LSM54: - 465 00f2 1092 A700 sts 167,__zero_reg__ - 466 .LBE49: - 467 .LBE48: - 468 .LSM55: - 469 00f6 CE01 movw r24,r28 - 470 00f8 0196 adiw r24,1 - 471 00fa 0E94 0000 call USB_Host_SendControlRequest - 472 .LVL17: - 473 00fe 8823 tst r24 - 474 0100 01F0 breq .L18 - 475 .LVL18: - 476 .L21: - 477 .LSM56: - 478 0102 80E9 ldi r24,lo8(-112) - 479 0104 0E94 0000 call LEDs_SetAllLEDs - 480 .LSM57: - 481 0108 1092 0000 sts USB_HostState,__zero_reg__ - 482 .LSM58: - 483 010c 00C0 rjmp .L9 - 484 .LVL19: - 485 .L18: - 486 .LSM59: - 487 010e 82E0 ldi r24,lo8(2) - 488 .LVL20: - 489 0110 8093 6E00 sts 110,r24 - 490 .LSM60: - 491 0114 9CE7 ldi r25,lo8(124) - 492 0116 97BD out 71-32,r25 - 493 .LSM61: - 494 0118 84BD out 68-32,r24 - 495 .LSM62: - 496 011a 85BD out 69-32,r24 - 497 .LSM63: - 498 011c 3E9A sbi 39-32,6 - 499 .LSM64: - 500 011e 81EF ldi r24,lo8(-15) - 501 0120 8093 9000 sts 144,r24 - 502 .LSM65: - 503 0124 89E0 ldi r24,lo8(9) - 504 0126 8093 9100 sts 145,r24 - 505 .LSM66: - 506 012a 80E0 ldi r24,lo8(__c.3939) - 507 012c 90E0 ldi r25,hi8(__c.3939) - 508 012e 0E94 0000 call puts_P - 509 .LSM67: - 510 0132 8CE0 ldi r24,lo8(12) - 511 0134 8093 0000 sts USB_HostState,r24 - 512 .LVL21: - 513 .L9: - 514 /* epilogue start */ - 515 .LBE47: - 516 .LSM68: - 517 0138 0F90 pop __tmp_reg__ - 518 013a 0F90 pop __tmp_reg__ - 519 013c 0F90 pop __tmp_reg__ - 520 013e CF91 pop r28 - 521 0140 DF91 pop r29 - 522 0142 1F91 pop r17 - 523 0144 0895 ret - 524 .LFE138: - 526 .section .text.main,"ax",@progbits - 527 .global main - 529 main: - 530 .LFB131: - 531 .LSM69: - 532 /* prologue: function */ - 533 /* frame size = 0 */ - 534 /* stack size = 0 */ - 535 .L__stack_usage = 0 - 536 .LSM70: - 537 0000 0E94 0000 call SetupHardware - 538 .LSM71: - 539 0004 80E0 ldi r24,lo8(__c.3888) - 540 0006 90E0 ldi r25,hi8(__c.3888) - 541 0008 0E94 0000 call puts_P - 542 .LSM72: - 543 000c 80E1 ldi r24,lo8(16) - 544 000e 0E94 0000 call LEDs_SetAllLEDs - 545 .LSM73: - 546 /* #APP */ - 547 ; 49 "AudioInputHost.c" 1 - 548 0012 7894 sei - 549 ; 0 "" 2 - 550 /* #NOAPP */ - 551 .L25: - 552 .LSM74: - 553 0014 0E94 0000 call Audio_Task - 554 .LSM75: - 555 0018 0E94 0000 call USB_USBTask - 556 001c 00C0 rjmp .L25 - 557 .LFE131: - 559 .section .text.__vector_21,"ax",@progbits - 560 .global __vector_21 - 562 __vector_21: - 563 .LFB139: - 564 .LSM76: - 565 0000 1F92 push __zero_reg__ - 566 0002 0F92 push r0 - 567 0004 0FB6 in r0,__SREG__ - 568 0006 0F92 push r0 - 569 0008 0BB6 in r0,91-32 - 570 000a 0F92 push r0 - 571 000c 1124 clr __zero_reg__ - 572 000e 1F93 push r17 - 573 0010 2F93 push r18 - 574 0012 3F93 push r19 - 575 0014 4F93 push r20 - 576 0016 5F93 push r21 - 577 0018 6F93 push r22 - 578 001a 7F93 push r23 - 579 001c 8F93 push r24 - 580 001e 9F93 push r25 - 581 0020 AF93 push r26 - 582 0022 BF93 push r27 - 583 0024 EF93 push r30 - 584 0026 FF93 push r31 - 585 /* prologue: Signal */ - 586 /* frame size = 0 */ - 587 /* stack size = 17 */ - 588 .L__stack_usage = 17 - 589 .LBB50: - 590 .LBB51: - 591 .LSM77: - 592 0028 1091 A700 lds r17,167 - 593 002c 1770 andi r17,lo8(7) - 594 .LVL22: - 595 .LBE51: - 596 .LBE50: - 597 .LBB52: - 598 .LBB53: - 599 .LSM78: - 600 002e 81E0 ldi r24,lo8(1) - 601 0030 8093 A700 sts 167,r24 - 602 .LBE53: - 603 .LBE52: - 604 .LBB54: - 605 .LBB55: - 606 .LSM79: - 607 0034 8091 A900 lds r24,169 - 608 0038 8F7B andi r24,lo8(-65) - 609 003a 8093 A900 sts 169,r24 - 610 .LBE55: - 611 .LBE54: - 612 .LBB56: - 613 .LBB57: - 614 .LSM80: - 615 003e 8091 A600 lds r24,166 - 616 .LBE57: - 617 .LBE56: - 618 .LSM81: - 619 0042 80FF sbrs r24,0 - 620 0044 00C0 rjmp .L27 - 621 .LBB58: - 622 .LBB59: - 623 .LBB60: - 624 .LSM82: - 625 0046 8091 AF00 lds r24,175 - 626 .LSM83: - 627 004a 4091 AF00 lds r20,175 - 628 .LVL23: - 629 .LBE60: - 630 .LBE59: - 631 .LBB61: - 632 .LBB62: - 633 .LSM84: - 634 004e 8091 A600 lds r24,166 - 635 .LBE62: - 636 .LBE61: - 637 .LSM85: - 638 0052 85FD sbrc r24,5 - 639 0054 00C0 rjmp .L28 - 640 .LBB63: - 641 .LBB64: - 642 .LSM86: - 643 0056 8091 A600 lds r24,166 - 644 005a 8E77 andi r24,lo8(126) - 645 005c 8093 A600 sts 166,r24 - 646 .L28: - 647 .LBE64: - 648 .LBE63: - 649 .LSM87: - 650 0060 842F mov r24,r20 - 651 0062 9927 clr r25 - 652 0064 87FD sbrc r24,7 - 653 0066 9095 com r25 - 654 0068 20E8 ldi r18,lo8(128) - 655 006a 30E0 ldi r19,hi8(128) - 656 006c 8227 eor r24,r18 - 657 006e 9327 eor r25,r19 - 658 0070 9093 9900 sts 152+1,r25 - 659 0074 8093 9800 sts 152,r24 - 660 .LVL24: - 661 .LSM88: - 662 0078 4131 cpi r20,lo8(17) - 663 007a 04F4 brge .L30 - 664 .LSM89: - 665 007c 4930 cpi r20,lo8(9) - 666 007e 04F4 brge .L31 - 667 .LSM90: - 668 0080 4530 cpi r20,lo8(5) - 669 0082 04F4 brge .L32 - 670 .LSM91: - 671 0084 4330 cpi r20,lo8(3) - 672 0086 04F4 brge .L33 - 673 .LSM92: - 674 0088 80E0 ldi r24,lo8(0) - 675 008a 00C0 rjmp .L29 - 676 .L30: - 677 .LSM93: - 678 008c 80EF ldi r24,lo8(-16) - 679 008e 00C0 rjmp .L29 - 680 .L31: - 681 .LSM94: - 682 0090 80EB ldi r24,lo8(-80) - 683 0092 00C0 rjmp .L29 - 684 .L32: - 685 .LSM95: - 686 0094 80E3 ldi r24,lo8(48) - 687 0096 00C0 rjmp .L29 - 688 .L33: - 689 .LSM96: - 690 0098 80E1 ldi r24,lo8(16) - 691 .L29: - 692 .LVL25: - 693 .LSM97: - 694 009a 0E94 0000 call LEDs_SetAllLEDs - 695 .LVL26: - 696 .L27: - 697 .LBE58: - 698 .LBB65: - 699 .LBB66: - 700 .LSM98: - 701 009e 8091 A900 lds r24,169 - 702 00a2 8064 ori r24,lo8(64) - 703 00a4 8093 A900 sts 169,r24 - 704 .LVL27: - 705 .LBE66: - 706 .LBE65: - 707 .LBB67: - 708 .LBB68: - 709 .LSM99: - 710 00a8 1093 A700 sts 167,r17 - 711 /* epilogue start */ - 712 .LBE68: - 713 .LBE67: - 714 .LSM100: - 715 00ac FF91 pop r31 - 716 00ae EF91 pop r30 - 717 00b0 BF91 pop r27 - 718 00b2 AF91 pop r26 - 719 00b4 9F91 pop r25 - 720 00b6 8F91 pop r24 - 721 00b8 7F91 pop r23 - 722 00ba 6F91 pop r22 - 723 00bc 5F91 pop r21 - 724 00be 4F91 pop r20 - 725 00c0 3F91 pop r19 - 726 00c2 2F91 pop r18 - 727 00c4 1F91 pop r17 - 728 .LVL28: - 729 00c6 0F90 pop r0 - 730 00c8 0BBE out 91-32,r0 - 731 00ca 0F90 pop r0 - 732 00cc 0FBE out __SREG__,r0 - 733 00ce 0F90 pop r0 - 734 00d0 1F90 pop __zero_reg__ - 735 00d2 1895 reti - 736 .LFE139: - 738 .section .progmem.data,"a",@progbits - 741 __c.3939: - 742 0000 4D69 6372 .string "Microphone Enumerated.\r\n" - 742 6F70 686F - 742 6E65 2045 - 742 6E75 6D65 - 742 7261 7465 - 745 __c.3935: - 746 0019 1B5B 3331 .ascii "\033[31mCould not set alt" - 746 6D43 6F75 - 746 6C64 206E - 746 6F74 2073 - 746 6574 2061 - 747 002f 6572 6E61 .string "ernative streaming interface setting.\r\n -- Error Code: %d\r\n\033[37m" - 747 7469 7665 - 747 2073 7472 - 747 6561 6D69 - 747 6E67 2069 - 750 __c.3933: - 751 0070 1B5B .ascii "\033[" - 752 0072 3331 6D43 .string "31mControl Error (Set Configuration).\r\n -- Error Code: %d\r\n\033[37m" - 752 6F6E 7472 - 752 6F6C 2045 - 752 7272 6F72 - 752 2028 5365 - 755 __c.3930: - 756 00b3 202D 2D20 .string " -- Error Code: %d\r\n\033[37m" - 756 4572 726F - 756 7220 436F - 756 6465 3A20 - 756 2564 0D0A - 759 __c.3928: - 760 00cd 1B5B 3331 .string "\033[31mInvalid Device.\r\n" - 760 6D49 6E76 - 760 616C 6964 - 760 2044 6576 - 760 6963 652E - 763 __c.3926: - 764 00e4 1B5B 3331 .string "\033[31mControl Error (Get Configuration).\r\n" - 764 6D43 6F6E - 764 7472 6F6C - 764 2045 7272 - 764 6F72 2028 - 767 __c.3924: - 768 010e 4765 7474 .string "Getting Config Data.\r\n" - 768 696E 6720 - 768 436F 6E66 - 768 6967 2044 - 768 6174 612E - 769 .data - 772 C.5.5024: - 773 0000 80 .byte -128 - 774 0001 BB .byte -69 - 775 0002 00 .byte 0 - 776 .section .progmem.data - 779 __c.3917: - 780 0125 1B5B 3331 .ascii "\033[31mDev Enum Error\r\n" - 780 6D44 6576 - 780 2045 6E75 - 780 6D20 4572 - 780 726F 720D - 781 013a 202D 2D20 .string " -- Error Code %d\r\n -- Sub Error Code %d\r\n -- In State %d\r\n\033[37m" - 781 4572 726F - 781 7220 436F - 781 6465 2025 - 781 640D 0A20 - 784 __c.3910: - 785 017b 1B5B 3331 .string "\033[31mHost Mode Error\r\n -- Error Code %d\r\n\033[37m" - 785 6D48 6F73 - 785 7420 4D6F - 785 6465 2045 - 785 7272 6F72 - 788 __c.3902: - 789 01aa 1B5B 3332 .string "\033[32mDevice Unattached.\r\n\033[37m" - 789 6D44 6576 - 789 6963 6520 - 789 556E 6174 - 789 7461 6368 - 792 __c.3897: - 793 01c9 1B5B 3332 .string "\033[32mDevice Attached.\r\n\033[37m" - 793 6D44 6576 - 793 6963 6520 - 793 4174 7461 - 793 6368 6564 - 796 __c.3888: - 797 01e6 1B5B 3336 .string "\033[36mAudio Host Demo running.\r\n\033[37m" - 797 6D41 7564 - 797 696F 2048 - 797 6F73 7420 - 797 4465 6D6F - 894 .Letext0: -DEFINED SYMBOLS - *ABS*:00000000 AudioInputHost.c -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:2 *ABS*:0000003f __SREG__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:3 *ABS*:0000003e __SP_H__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:4 *ABS*:0000003d __SP_L__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:5 *ABS*:00000034 __CCP__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:6 *ABS*:00000000 __tmp_reg__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:7 *ABS*:00000001 __zero_reg__ -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:18 .text.LEDs_SetAllLEDs:00000000 LEDs_SetAllLEDs -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:39 .text.SetupHardware:00000000 SetupHardware -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:151 .text.EVENT_USB_Host_DeviceAttached:00000000 EVENT_USB_Host_DeviceAttached -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:792 .progmem.data:000001c9 __c.3897 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:173 .text.EVENT_USB_Host_DeviceUnattached:00000000 EVENT_USB_Host_DeviceUnattached -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:788 .progmem.data:000001aa __c.3902 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:195 .text.EVENT_USB_Host_DeviceEnumerationComplete:00000000 EVENT_USB_Host_DeviceEnumerationComplete -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:213 .text.EVENT_USB_Host_HostError:00000000 EVENT_USB_Host_HostError -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:784 .progmem.data:0000017b __c.3910 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:262 .text.EVENT_USB_Host_DeviceEnumerationFailed:00000000 EVENT_USB_Host_DeviceEnumerationFailed -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:779 .progmem.data:00000125 __c.3917 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:320 .text.Audio_Task:00000000 Audio_Task -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:767 .progmem.data:0000010e __c.3924 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:763 .progmem.data:000000e4 __c.3926 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:759 .progmem.data:000000cd __c.3928 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:755 .progmem.data:000000b3 __c.3930 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:750 .progmem.data:00000070 __c.3933 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:745 .progmem.data:00000019 __c.3935 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:772 .data:00000000 C.5.5024 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:741 .progmem.data:00000000 __c.3939 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:529 .text.main:00000000 main -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:796 .progmem.data:000001e6 __c.3888 -C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:562 .text.__vector_21:00000000 __vector_21 - -UNDEFINED SYMBOLS -USB_Init -USARTSerialStream -__iob -Serial_putchar -Serial_getchar -puts_P -USB_Disable -printf_P -USB_HostState -ProcessConfigurationDescriptor -USB_Host_SetDeviceConfiguration -StreamingInterfaceIndex -StreamingInterfaceAltSetting -USB_Host_SetInterfaceAltSetting -StreamingEndpointAddress -USB_ControlRequest -USB_Host_SendControlRequest -USB_USBTask -__do_copy_data diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map deleted file mode 100644 index 189341a7d4..0000000000 --- a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map +++ /dev/null @@ -1,1169 +0,0 @@ -Archive member included because of file (symbol) - -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) - 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) -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) - AudioInputHost.o (__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(_clear_bss.o) - ConfigDescriptor.o (__do_clear_bss) -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) - AudioInputHost.o (__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(printf_p.o) - AudioInputHost.o (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(puts_p.o) - AudioInputHost.o (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(vfprintf_std.o) - 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) -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) - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__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(eeupd_byte_at90usb1287.o) - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__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(strnlen_P.o) - 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) -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) - 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) -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) - 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) -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) - 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) - -Allocating common symbols -Common symbol size file - -USB_IsInitialized 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o -USARTSerialStream 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -USB_ControlRequest 0x8 ../../../../LUFA/Drivers/USB/Core/USBTask.o -USB_HostState 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o -__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) - -Discarded input sections - - .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 - .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 - .text 0x00000000 0x0 AudioInputHost.o - .bss 0x00000000 0x0 AudioInputHost.o - .text 0x00000000 0x0 ConfigDescriptor.o - .data 0x00000000 0x0 ConfigDescriptor.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .text.USB_Host_GetDeviceDescriptor - 0x00000000 0x1c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .text.USB_Host_GetDeviceStringDescriptor - 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .text.USB_Host_ClearPipeStall - 0x00000000 0x32 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .text.Pipe_IsEndpointBound - 0x00000000 0x5c ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .text.Pipe_WaitUntilReady - 0x00000000 0x5e ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Discard_Stream - 0x00000000 0x9a ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Null_Stream - 0x00000000 0x9e ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_Stream_LE - 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_Stream_BE - 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Read_Stream_LE - 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Read_Stream_BE - 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_PStream_LE - 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_PStream_BE - 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_EStream_LE - 0x00000000 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Write_EStream_BE - 0x00000000 0xbc ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Read_EStream_LE - 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text.Pipe_Read_EStream_BE - 0x00000000 0xbe ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .text.USB_GetNextDescriptorOfType - 0x00000000 0x4c ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .text.USB_GetNextDescriptorOfTypeBefore - 0x00000000 0x56 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .text.USB_GetNextDescriptorOfTypeAfter - 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .text.USB_ProcessHIDReport - 0x00000000 0x766 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .text.USB_GetHIDReportItemInfo - 0x00000000 0xb6 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .text.USB_SetHIDReportItemInfo - 0x00000000 0xc2 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .text.USB_GetHIDReportSize - 0x00000000 0x58 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .text 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .data 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .bss 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .text.Serial_getchar_Blocking - 0x00000000 0x20 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .text.Serial_SendString_P - 0x00000000 0x1a ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .text.Serial_SendString - 0x00000000 0x1c ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .text.Serial_SendData - 0x00000000 0x1e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .text.avr-libc - 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) - .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) - .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) - .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) - .text.avr-libc - 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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - .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) - -Memory Configuration - -Name Origin Length Attributes -text 0x00000000 0x00020000 xr -data 0x00800100 0x0000ff00 rw !x -eeprom 0x00810000 0x00010000 rw !x -fuse 0x00820000 0x00000400 rw !x -lock 0x00830000 0x00000400 rw !x -signature 0x00840000 0x00000400 rw !x -*default* 0x00000000 0xffffffff - -Linker script and memory map - -Address of section .data set to 0x800100 -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 -LOAD AudioInputHost.o -LOAD ConfigDescriptor.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -LOAD ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o -LOAD ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o -LOAD ../../../../LUFA/Drivers/USB/Core/Events.o -LOAD ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o -LOAD ../../../../LUFA/Drivers/USB/Core/USBTask.o -LOAD ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -LOAD ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -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 -LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a -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 -LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a - -.hash - *(.hash) - -.dynsym - *(.dynsym) - -.dynstr - *(.dynstr) - -.gnu.version - *(.gnu.version) - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r - *(.gnu.version_r) - -.rel.init - *(.rel.init) - -.rela.init - *(.rela.init) - -.rel.text - *(.rel.text) - *(.rel.text.*) - *(.rel.gnu.linkonce.t*) - -.rela.text - *(.rela.text) - *(.rela.text.*) - *(.rela.gnu.linkonce.t*) - -.rel.fini - *(.rel.fini) - -.rela.fini - *(.rela.fini) - -.rel.rodata - *(.rel.rodata) - *(.rel.rodata.*) - *(.rel.gnu.linkonce.r*) - -.rela.rodata - *(.rela.rodata) - *(.rela.rodata.*) - *(.rela.gnu.linkonce.r*) - -.rel.data - *(.rel.data) - *(.rel.data.*) - *(.rel.gnu.linkonce.d*) - -.rela.data - *(.rela.data) - *(.rela.data.*) - *(.rela.gnu.linkonce.d*) - -.rel.ctors - *(.rel.ctors) - -.rela.ctors - *(.rela.ctors) - -.rel.dtors - *(.rel.dtors) - -.rela.dtors - *(.rela.dtors) - -.rel.got - *(.rel.got) - -.rela.got - *(.rela.got) - -.rel.bss - *(.rel.bss) - -.rela.bss - *(.rela.bss) - -.rel.plt - *(.rel.plt) - -.rela.plt - *(.rela.plt) - -.text 0x00000000 0x18fa - *(.vectors) - .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 - 0x00000000 __vector_default - 0x00000000 __vectors - *(.vectors) - *(.progmem.gcc*) - *(.progmem*) - .progmem.data 0x00000098 0x20b AudioInputHost.o - 0x000002a4 . = ALIGN (0x2) - *fill* 0x000002a3 0x1 00 - 0x000002a4 __trampolines_start = . - *(.trampolines) - .trampolines 0x000002a4 0x0 linker stubs - *(.trampolines*) - 0x000002a4 __trampolines_end = . - *(.jumptables) - *(.jumptables*) - *(.lowtext) - *(.lowtext*) - 0x000002a4 __ctors_start = . - *(.ctors) - 0x000002a4 __ctors_end = . - 0x000002a4 __dtors_start = . - *(.dtors) - 0x000002a4 __dtors_end = . - SORT(*)(.ctors) - SORT(*)(.dtors) - *(.init0) - .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 - 0x000002a4 __init - *(.init0) - *(.init1) - *(.init1) - *(.init2) - .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 - *(.init2) - *(.init3) - *(.init3) - *(.init4) - .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) - 0x000002b0 __do_copy_data - .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) - 0x000002ca __do_clear_bss - *(.init4) - *(.init5) - *(.init5) - *(.init6) - *(.init6) - *(.init7) - *(.init7) - *(.init8) - *(.init8) - *(.init9) - .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 - *(.init9) - *(.text) - .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 - 0x000002e0 __vector_22 - 0x000002e0 __vector_28 - 0x000002e0 __vector_1 - 0x000002e0 __vector_32 - 0x000002e0 __vector_34 - 0x000002e0 __vector_24 - 0x000002e0 __vector_12 - 0x000002e0 __bad_interrupt - 0x000002e0 __vector_6 - 0x000002e0 __vector_31 - 0x000002e0 __vector_35 - 0x000002e0 __vector_3 - 0x000002e0 __vector_23 - 0x000002e0 __vector_30 - 0x000002e0 __vector_25 - 0x000002e0 __vector_11 - 0x000002e0 __vector_13 - 0x000002e0 __vector_17 - 0x000002e0 __vector_19 - 0x000002e0 __vector_7 - 0x000002e0 __vector_27 - 0x000002e0 __vector_5 - 0x000002e0 __vector_33 - 0x000002e0 __vector_37 - 0x000002e0 __vector_4 - 0x000002e0 __vector_9 - 0x000002e0 __vector_2 - 0x000002e0 __vector_15 - 0x000002e0 __vector_36 - 0x000002e0 __vector_29 - 0x000002e0 __vector_8 - 0x000002e0 __vector_26 - 0x000002e0 __vector_14 - 0x000002e0 __vector_16 - 0x000002e0 __vector_18 - 0x000002e0 __vector_20 - 0x000002e2 . = ALIGN (0x2) - *(.text.*) - .text.LEDs_SetAllLEDs - 0x000002e2 0xa AudioInputHost.o - .text.SetupHardware - 0x000002ec 0x92 AudioInputHost.o - 0x000002ec SetupHardware - .text.EVENT_USB_Host_DeviceAttached - 0x0000037e 0xa AudioInputHost.o - 0x0000037e EVENT_USB_Host_DeviceAttached - .text.EVENT_USB_Host_DeviceUnattached - 0x00000388 0xa AudioInputHost.o - 0x00000388 EVENT_USB_Host_DeviceUnattached - .text.EVENT_USB_Host_DeviceEnumerationComplete - 0x00000392 0x4 AudioInputHost.o - 0x00000392 EVENT_USB_Host_DeviceEnumerationComplete - .text.EVENT_USB_Host_HostError - 0x00000396 0x3e AudioInputHost.o - 0x00000396 EVENT_USB_Host_HostError - .text.EVENT_USB_Host_DeviceEnumerationFailed - 0x000003d4 0x50 AudioInputHost.o - 0x000003d4 EVENT_USB_Host_DeviceEnumerationFailed - .text.Audio_Task - 0x00000424 0x134 AudioInputHost.o - 0x00000424 Audio_Task - .text.main 0x00000558 0x14 AudioInputHost.o - 0x00000558 main - .text.__vector_21 - 0x0000056c 0xd2 AudioInputHost.o - 0x0000056c __vector_21 - .text.DComp_NextAudioControlInterface - 0x0000063e 0x22 ConfigDescriptor.o - 0x0000063e DComp_NextAudioControlInterface - .text.DComp_NextAudioStreamInterface - 0x00000660 0x22 ConfigDescriptor.o - 0x00000660 DComp_NextAudioStreamInterface - .text.DComp_NextAudioInterfaceDataEndpoint - 0x00000682 0x22 ConfigDescriptor.o - 0x00000682 DComp_NextAudioInterfaceDataEndpoint - .text.ProcessConfigurationDescriptor - 0x000006a4 0x132 ConfigDescriptor.o - 0x000006a4 ProcessConfigurationDescriptor - .text.USB_Host_ResetDevice - 0x000007d6 0xa8 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .text.USB_Host_WaitMS - 0x0000087e 0xaa ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0x0000087e USB_Host_WaitMS - .text.USB_Host_ProcessNextHostState - 0x00000928 0x264 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0x00000928 USB_Host_ProcessNextHostState - .text.USB_Host_SetDeviceConfiguration - 0x00000b8c 0x2c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0x00000b8c USB_Host_SetDeviceConfiguration - .text.USB_Host_SetInterfaceAltSetting - 0x00000bb8 0x2e ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0x00000bb8 USB_Host_SetInterfaceAltSetting - .text.Pipe_ConfigurePipe - 0x00000be6 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - 0x00000be6 Pipe_ConfigurePipe - .text.Pipe_ClearPipes - 0x00000cb4 0x28 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - 0x00000cb4 Pipe_ClearPipes - .text.USB_Disable - 0x00000cdc 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x00000cdc USB_Disable - .text.USB_ResetInterface - 0x00000d0c 0x9c ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x00000d0c USB_ResetInterface - .text.USB_Init - 0x00000da8 0x12 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x00000da8 USB_Init - .text.USB_INT_DisableAllInterrupts - 0x00000dba 0x10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x00000dba USB_INT_DisableAllInterrupts - .text.USB_INT_ClearAllInterrupts - 0x00000dca 0xa ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x00000dca USB_INT_ClearAllInterrupts - .text.__vector_10 - 0x00000dd4 0x126 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x00000dd4 __vector_10 - .text.USB_Host_GetDeviceConfigDescriptor - 0x00000efa 0xae ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - 0x00000efa USB_Host_GetDeviceConfigDescriptor - .text.USB_GetNextDescriptorComp - 0x00000fa8 0x86 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - 0x00000fa8 USB_GetNextDescriptorComp - .text.USB_Event_Stub - 0x0000102e 0x2 ../../../../LUFA/Drivers/USB/Core/Events.o - 0x0000102e EVENT_USB_Host_StartOfFrame - 0x0000102e USB_Event_Stub - .text.USB_Host_WaitForIOS - 0x00001030 0x52 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .text.USB_Host_SendControlRequest - 0x00001082 0x22c ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - 0x00001082 USB_Host_SendControlRequest - .text.USB_USBTask - 0x000012ae 0x1c ../../../../LUFA/Drivers/USB/Core/USBTask.o - 0x000012ae USB_USBTask - .text.Serial_putchar - 0x000012ca 0x12 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - 0x000012ca Serial_putchar - .text.Serial_getchar - 0x000012dc 0x26 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - 0x000012dc Serial_getchar - .text.avr-libc - 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) - 0x00001302 printf_P - .text.avr-libc - 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) - 0x00001340 puts_P - .text.avr-libc - 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) - 0x000013b0 vfprintf - .text.avr-libc - 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) - 0x000017b6 strnlen_P - .text.avr-libc - 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) - 0x000017cc strnlen - .text.avr-libc - 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) - 0x000017e2 fputc - .text.avr-libc - 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) - 0x0000183a __ultoa_invert - 0x000018f6 . = ALIGN (0x2) - *(.fini9) - .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) - 0x000018f6 _exit - 0x000018f6 exit - *(.fini9) - *(.fini8) - *(.fini8) - *(.fini7) - *(.fini7) - *(.fini6) - *(.fini6) - *(.fini5) - *(.fini5) - *(.fini4) - *(.fini4) - *(.fini3) - *(.fini3) - *(.fini2) - *(.fini2) - *(.fini1) - *(.fini1) - *(.fini0) - .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) - *(.fini0) - 0x000018fa _etext = . - -.data 0x00800100 0x1c load address 0x000018fa - 0x00800100 PROVIDE (__data_start, .) - *(.data) - .data 0x00800100 0x3 AudioInputHost.o - .data 0x00800103 0x18 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .data 0x0080011b 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - 0x0080011b USB_ControlPipeSize - *(.data*) - *(.rodata) - *(.rodata*) - *(.gnu.linkonce.d*) - 0x0080011c . = ALIGN (0x2) - 0x0080011c _edata = . - 0x0080011c PROVIDE (__data_end, .) - -.bss 0x0080011c 0x24 - 0x0080011c PROVIDE (__bss_start, .) - *(.bss) - .bss 0x0080011c 0x3 ConfigDescriptor.o - 0x0080011c StreamingInterfaceIndex - 0x0080011d StreamingInterfaceAltSetting - 0x0080011e StreamingEndpointAddress - .bss 0x0080011f 0x3 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - *(.bss*) - *(COMMON) - COMMON 0x00800122 0xa ../../../../LUFA/Drivers/USB/Core/USBTask.o - 0x00800122 USB_IsInitialized - 0x00800123 USB_ControlRequest - 0x0080012b USB_HostState - COMMON 0x0080012c 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - 0x0080012c USARTSerialStream - 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) - 0x0080013a __iob - 0x00800140 PROVIDE (__bss_end, .) - 0x000018fa __data_load_start = LOADADDR (.data) - 0x00001916 __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x00800140 0x0 - 0x00800140 PROVIDE (__noinit_start, .) - *(.noinit*) - 0x00800140 PROVIDE (__noinit_end, .) - 0x00800140 _end = . - 0x00800140 PROVIDE (__heap_start, .) - -.eeprom 0x00810000 0x0 - *(.eeprom*) - 0x00810000 __eeprom_end = . - -.fuse - *(.fuse) - *(.lfuse) - *(.hfuse) - *(.efuse) - -.lock - *(.lock*) - -.signature - *(.signature*) - -.stab 0x00000000 0xe28 - *(.stab) - .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 - .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) - 0x9c (size before relaxing) - .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) - 0x120 (size before relaxing) - .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) - 0xa8 (size before relaxing) - .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) - 0xa8 (size before relaxing) - .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) - 0x48c (size before relaxing) - -.stabstr 0x00000000 0x26b - *(.stabstr) - .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 - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment - *(.comment) - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x00000000 0x3b0 - *(.debug_aranges) - .debug_aranges - 0x00000000 0x68 AudioInputHost.o - .debug_aranges - 0x00000068 0x38 ConfigDescriptor.o - .debug_aranges - 0x000000a0 0x58 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_aranges - 0x000000f8 0x38 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_aranges - 0x00000130 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_aranges - 0x00000160 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_aranges - 0x00000190 0x78 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_aranges - 0x00000208 0x40 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_aranges - 0x00000248 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_aranges - 0x00000268 0x28 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_aranges - 0x00000290 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_aranges - 0x000002b0 0x38 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_aranges - 0x000002e8 0x48 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .debug_aranges - 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) - .debug_aranges - 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) - .debug_aranges - 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) - .debug_aranges - 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) - -.debug_pubnames - 0x00000000 0x89a - *(.debug_pubnames) - .debug_pubnames - 0x00000000 0x107 AudioInputHost.o - .debug_pubnames - 0x00000107 0xff ConfigDescriptor.o - .debug_pubnames - 0x00000206 0xf4 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_pubnames - 0x000002fa 0x86 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_pubnames - 0x00000380 0x46 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_pubnames - 0x000003c6 0x62 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_pubnames - 0x00000428 0x13b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_pubnames - 0x00000563 0xc2 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_pubnames - 0x00000625 0x25 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_pubnames - 0x0000064a 0x32 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_pubnames - 0x0000067c 0x61 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_pubnames - 0x000006dd 0x7e ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_pubnames - 0x0000075b 0xac ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .debug_pubnames - 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) - .debug_pubnames - 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) - .debug_pubnames - 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) - .debug_pubnames - 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) - .debug_pubnames - 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) - -.debug_info 0x00000000 0x56c7 - *(.debug_info) - .debug_info 0x00000000 0x81f AudioInputHost.o - .debug_info 0x0000081f 0x5dd ConfigDescriptor.o - .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_info 0x00000dfc 0xc19 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_info 0x00001a15 0x5b1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_info 0x00001fc6 0x409 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_info 0x000023cf 0x495 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_info 0x00002864 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_info 0x00002864 0xac6 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_info 0x0000332a 0x642 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_info 0x0000396c 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_info 0x0000396c 0x85 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_info 0x000039f1 0x62a ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_info 0x0000401b 0x1e8 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_info 0x00004203 0x6f9 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_info 0x000048fc 0x413 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - .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) - *(.gnu.linkonce.wi.*) - -.debug_abbrev 0x00000000 0x1b65 - *(.debug_abbrev) - .debug_abbrev 0x00000000 0x334 AudioInputHost.o - .debug_abbrev 0x00000334 0x185 ConfigDescriptor.o - .debug_abbrev 0x000004b9 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_abbrev 0x000004ba 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_abbrev 0x000004bb 0x2f6 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_abbrev 0x000007b1 0x1d9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_abbrev 0x0000098a 0x14d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_abbrev 0x00000ad7 0x12a ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_abbrev 0x00000c01 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_abbrev 0x00000c02 0x164 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_abbrev 0x00000d66 0x1ca ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_abbrev 0x00000f30 0x1 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_abbrev 0x00000f31 0x41 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_abbrev 0x00000f72 0x1ea ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_abbrev 0x0000115c 0x11a ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_abbrev 0x00001276 0x1ec ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_abbrev 0x00001462 0x1d1 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - .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) - -.debug_line 0x00000000 0x53bf - *(.debug_line) - .debug_line 0x00000000 0x725 AudioInputHost.o - .debug_line 0x00000725 0x3df ConfigDescriptor.o - .debug_line 0x00000b04 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_line 0x00000b28 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_line 0x00000b4c 0xa69 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_line 0x000015b5 0x5f9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_line 0x00001bae 0x3f1 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_line 0x00001f9f 0x464 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_line 0x00002403 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_line 0x00002427 0xcf7 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_line 0x0000311e 0x3e3 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_line 0x00003501 0x24 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_line 0x00003525 0x86 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_line 0x000035ab 0x5f5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_line 0x00003ba0 0x1e4 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_line 0x00003d84 0x7b0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_line 0x00004534 0x326 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - .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) - -.debug_frame 0x00000000 0x540 - *(.debug_frame) - .debug_frame 0x00000000 0xb0 AudioInputHost.o - .debug_frame 0x000000b0 0x50 ConfigDescriptor.o - .debug_frame 0x00000100 0x90 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_frame 0x00000190 0x50 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_frame 0x000001e0 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_frame 0x00000220 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_frame 0x00000260 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_frame 0x00000330 0x60 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_frame 0x00000390 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_frame 0x000003b0 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_frame 0x000003e0 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_frame 0x00000400 0x50 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_frame 0x00000450 0x70 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - -.debug_str 0x00000000 0x26bf - *(.debug_str) - .debug_str 0x00000000 0x830 AudioInputHost.o - 0x8aa (size before relaxing) - .debug_str 0x00000830 0x53e ConfigDescriptor.o - 0x7d0 (size before relaxing) - .debug_str 0x00000d6e 0x6cc ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0xbc8 (size before relaxing) - .debug_str 0x0000143a 0x269 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - 0x5b7 (size before relaxing) - .debug_str 0x000016a3 0x16d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x516 (size before relaxing) - .debug_str 0x00001810 0xaf ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x4f5 (size before relaxing) - .debug_str 0x000018bf 0x260 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - 0x3a4 (size before relaxing) - .debug_str 0x00001b1f 0x234 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - 0x81e (size before relaxing) - .debug_str 0x00001d53 0x3a ../../../../LUFA/Drivers/USB/Core/Events.o - 0x11f (size before relaxing) - .debug_str 0x00001d8d 0x15b ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - 0x519 (size before relaxing) - .debug_str 0x00001ee8 0x45 ../../../../LUFA/Drivers/USB/Core/USBTask.o - 0x1ee (size before relaxing) - .debug_str 0x00001f2d 0x487 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - 0x60d (size before relaxing) - .debug_str 0x000023b4 0xfd ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - 0x26d (size before relaxing) - .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) - 0xef (size before relaxing) - .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) - 0x126 (size before relaxing) - .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) - 0x120 (size before relaxing) - .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) - 0x174 (size before relaxing) - .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) - 0xf8 (size before relaxing) - -.debug_loc 0x00000000 0x3422 - *(.debug_loc) - .debug_loc 0x00000000 0xff AudioInputHost.o - .debug_loc 0x000000ff 0x280 ConfigDescriptor.o - .debug_loc 0x0000037f 0x3de ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_loc 0x0000075d 0x400 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_loc 0x00000b5d 0x13 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_loc 0x00000b70 0x118 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_loc 0x00000c88 0xfe0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_loc 0x00001c68 0x365 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_loc 0x00001fcd 0x2c5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_loc 0x00002292 0x1f ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_loc 0x000022b1 0x832 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_loc 0x00002ae3 0x15e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - -.debug_macinfo - *(.debug_macinfo) -OUTPUT(AudioInputHost.elf elf32-avr) -LOAD linker stubs - -.debug_pubtypes - 0x00000000 0xa86 - .debug_pubtypes - 0x00000000 0x117 AudioInputHost.o - .debug_pubtypes - 0x00000117 0x179 ConfigDescriptor.o - .debug_pubtypes - 0x00000290 0x146 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_pubtypes - 0x000003d6 0x66 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_pubtypes - 0x0000043c 0x59 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_pubtypes - 0x00000495 0x88 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_pubtypes - 0x0000051d 0x4b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_pubtypes - 0x00000568 0x17e ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_pubtypes - 0x000006e6 0x12 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_pubtypes - 0x000006f8 0xa0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_pubtypes - 0x00000798 0x44 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_pubtypes - 0x000007dc 0x145 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_pubtypes - 0x00000921 0x42 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .debug_pubtypes - 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) - .debug_pubtypes - 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) - .debug_pubtypes - 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) - .debug_pubtypes - 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) - .debug_pubtypes - 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) - -.debug_ranges 0x00000000 0x490 - .debug_ranges 0x00000000 0x58 AudioInputHost.o - .debug_ranges 0x00000058 0x58 ConfigDescriptor.o - .debug_ranges 0x000000b0 0x60 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_ranges 0x00000110 0xb0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_ranges 0x000001c0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_ranges 0x000001e0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_ranges 0x00000200 0x68 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_ranges 0x00000268 0x30 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - .debug_ranges 0x00000298 0x10 ../../../../LUFA/Drivers/USB/Core/Events.o - .debug_ranges 0x000002a8 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_ranges 0x000002d8 0x10 ../../../../LUFA/Drivers/USB/Core/USBTask.o - .debug_ranges 0x000002e8 0x100 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_ranges 0x000003e8 0x50 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - .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) - .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) - .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) - .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) - -Cross Reference Table - -Symbol File -Audio_Task AudioInputHost.o -CALLBACK_HIDParser_FilterHIDReportItem ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -DComp_NextAudioControlInterface ConfigDescriptor.o -DComp_NextAudioInterfaceDataEndpoint ConfigDescriptor.o -DComp_NextAudioStreamInterface ConfigDescriptor.o -EVENT_USB_Host_DeviceAttached AudioInputHost.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o -EVENT_USB_Host_DeviceEnumerationComplete AudioInputHost.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -EVENT_USB_Host_DeviceEnumerationFailed AudioInputHost.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -EVENT_USB_Host_DeviceUnattached AudioInputHost.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -EVENT_USB_Host_HostError AudioInputHost.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o -EVENT_USB_Host_StartOfFrame ../../../../LUFA/Drivers/USB/Core/Events.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o -Pipe_ClearPipes ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -Pipe_ConfigurePipe ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - ConfigDescriptor.o -Pipe_Discard_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_IsEndpointBound ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o -Pipe_Null_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Read_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Read_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Read_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Read_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_WaitUntilReady ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_PStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_PStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -Pipe_Write_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -ProcessConfigurationDescriptor ConfigDescriptor.o - AudioInputHost.o -Serial_SendData ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -Serial_SendString ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -Serial_SendString_P ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -Serial_getchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - AudioInputHost.o -Serial_getchar_Blocking ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o -Serial_putchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - AudioInputHost.o -SetupHardware AudioInputHost.o -StreamingEndpointAddress ConfigDescriptor.o - AudioInputHost.o -StreamingInterfaceAltSetting ConfigDescriptor.o - AudioInputHost.o -StreamingInterfaceIndex ConfigDescriptor.o - AudioInputHost.o -USARTSerialStream ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - AudioInputHost.o -USB_ControlPipeSize ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -USB_ControlRequest ../../../../LUFA/Drivers/USB/Core/USBTask.o - ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -USB_Disable ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - AudioInputHost.o -USB_Event_Stub ../../../../LUFA/Drivers/USB/Core/Events.o -USB_GetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -USB_GetHIDReportSize ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -USB_GetNextDescriptorComp ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - ConfigDescriptor.o -USB_GetNextDescriptorOfType ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o -USB_GetNextDescriptorOfTypeAfter ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o -USB_GetNextDescriptorOfTypeBefore ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o -USB_HostState ../../../../LUFA/Drivers/USB/Core/USBTask.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -USB_Host_ClearPipeStall ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -USB_Host_GetDeviceConfigDescriptor ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - ConfigDescriptor.o -USB_Host_GetDeviceDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -USB_Host_GetDeviceStringDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -USB_Host_ProcessNextHostState ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - ../../../../LUFA/Drivers/USB/Core/USBTask.o -USB_Host_SendControlRequest ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o - ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -USB_Host_SetDeviceConfiguration ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -USB_Host_SetInterfaceAltSetting ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -USB_Host_WaitMS ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o -USB_INT_ClearAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o -USB_INT_DisableAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o -USB_Init ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - AudioInputHost.o -USB_IsInitialized ../../../../LUFA/Drivers/USB/Core/USBTask.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o -USB_ProcessHIDReport ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -USB_ResetInterface ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o -USB_SetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o -USB_USBTask ../../../../LUFA/Drivers/USB/Core/USBTask.o - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - AudioInputHost.o -__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 -__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) -__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) -__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) -__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) -__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) -__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) - 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) - ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o - ../../../../LUFA/Drivers/USB/Core/USBTask.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - ConfigDescriptor.o -__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) - ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - AudioInputHost.o -__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) - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -__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) - ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o -__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) -__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 -__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 -__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) - 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) - 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) - AudioInputHost.o -__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 -__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) - 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) -__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 -__vector_10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__vector_21 AudioInputHost.o - 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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -__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 -_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) -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) - 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 -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) - 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) -main AudioInputHost.o - 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 -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) - AudioInputHost.o -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) - AudioInputHost.o -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) - 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 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) - 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) -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) - 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) diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym deleted file mode 100644 index 498ebbca4b..0000000000 --- a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym +++ /dev/null @@ -1,267 +0,0 @@ - U CALLBACK_HIDParser_FilterHIDReportItem -00000000 W __heap_end -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 a __tmp_reg__ -00000000 W __vector_default -00000000 T __vectors -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000001 a __zero_reg__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -00000034 a __CCP__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003d a __SP_L__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003e a __SP_H__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -0000003f a __SREG__ -00000098 t __c.3939 -000000b1 t __c.3935 -00000108 t __c.3933 -0000014b t __c.3930 -00000165 t __c.3928 -0000017c t __c.3926 -000001a6 t __c.3924 -000001bd t __c.3917 -00000213 t __c.3910 -00000242 t __c.3902 -00000261 t __c.3897 -0000027e t __c.3888 -000002a4 T __ctors_end -000002a4 T __ctors_start -000002a4 T __dtors_end -000002a4 T __dtors_start -000002a4 W __init -000002a4 T __trampolines_end -000002a4 T __trampolines_start -000002b0 T __do_copy_data -000002ca T __do_clear_bss -000002d2 t .do_clear_bss_loop -000002d4 t .do_clear_bss_start -000002e0 T __bad_interrupt -000002e0 W __vector_1 -000002e0 W __vector_11 -000002e0 W __vector_12 -000002e0 W __vector_13 -000002e0 W __vector_14 -000002e0 W __vector_15 -000002e0 W __vector_16 -000002e0 W __vector_17 -000002e0 W __vector_18 -000002e0 W __vector_19 -000002e0 W __vector_2 -000002e0 W __vector_20 -000002e0 W __vector_22 -000002e0 W __vector_23 -000002e0 W __vector_24 -000002e0 W __vector_25 -000002e0 W __vector_26 -000002e0 W __vector_27 -000002e0 W __vector_28 -000002e0 W __vector_29 -000002e0 W __vector_3 -000002e0 W __vector_30 -000002e0 W __vector_31 -000002e0 W __vector_32 -000002e0 W __vector_33 -000002e0 W __vector_34 -000002e0 W __vector_35 -000002e0 W __vector_36 -000002e0 W __vector_37 -000002e0 W __vector_4 -000002e0 W __vector_5 -000002e0 W __vector_6 -000002e0 W __vector_7 -000002e0 W __vector_8 -000002e0 W __vector_9 -000002e2 t LEDs_SetAllLEDs -000002ec T SetupHardware -0000037e T EVENT_USB_Host_DeviceAttached -00000388 T EVENT_USB_Host_DeviceUnattached -00000392 T EVENT_USB_Host_DeviceEnumerationComplete -00000396 T EVENT_USB_Host_HostError -000003d4 T EVENT_USB_Host_DeviceEnumerationFailed -00000424 T Audio_Task -00000558 T main -0000056c T __vector_21 -0000063e T DComp_NextAudioControlInterface -00000660 T DComp_NextAudioStreamInterface -00000682 T DComp_NextAudioInterfaceDataEndpoint -000006a4 T ProcessConfigurationDescriptor -000007d6 t USB_Host_ResetDevice -0000087e T USB_Host_WaitMS -00000928 T USB_Host_ProcessNextHostState -00000b8c T USB_Host_SetDeviceConfiguration -00000bb8 T USB_Host_SetInterfaceAltSetting -00000be6 T Pipe_ConfigurePipe -00000cb4 T Pipe_ClearPipes -00000cdc T USB_Disable -00000d0c T USB_ResetInterface -00000da8 T USB_Init -00000dba T USB_INT_DisableAllInterrupts -00000dca T USB_INT_ClearAllInterrupts -00000dd4 T __vector_10 -00000efa T USB_Host_GetDeviceConfigDescriptor -00000fa8 T USB_GetNextDescriptorComp -0000102e W EVENT_USB_Host_StartOfFrame -0000102e T USB_Event_Stub -00001030 t USB_Host_WaitForIOS -00001082 T USB_Host_SendControlRequest -000012ae T USB_USBTask -000012ca T Serial_putchar -000012dc T Serial_getchar -00001302 T printf_P -00001340 T puts_P -000013b0 T vfprintf -000017b6 T strnlen_P -000017cc T strnlen -000017e2 T fputc -0000183a T __ultoa_invert -000018f6 T _exit -000018f6 W exit -000018f8 t __stop_program -000018fa A __data_load_start -000018fa T _etext -00001916 A __data_load_end -000020ff W __stack -00800100 d C.5.5024 -00800100 D __data_start -00800103 d C.0.3420 -0080010b d C.10.3637 -00800113 d C.7.3627 -0080011b D USB_ControlPipeSize -0080011c B StreamingInterfaceIndex -0080011c B __bss_start -0080011c D __data_end -0080011c D _edata -0080011d B StreamingInterfaceAltSetting -0080011e B StreamingEndpointAddress -0080011f b PostWaitState.2492 -00800120 b WaitMSRemaining.2491 -00800122 B USB_IsInitialized -00800123 B USB_ControlRequest -0080012b B USB_HostState -0080012c B USARTSerialStream -0080013a B __iob -00800140 B __bss_end -00800140 N _end -00810000 N __eeprom_end diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c index d0ca91a08d..5dcd602acf 100644 --- a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c +++ b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c @@ -37,10 +37,24 @@ #include "ConfigDescriptor.h" +/** Index of the currently used Audio Streaming Interface within the device. */ uint8_t StreamingInterfaceIndex = 0; + +/** Alternative Setting of the currently used Audio Streaming Interface within the device. */ uint8_t StreamingInterfaceAltSetting = 0; + +/** Address of the streaming audio endpoint currently in use within the device. */ uint8_t StreamingEndpointAddress = 0; + +/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This + * routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate + * with compatible devices. + * + * This routine searches for a Streaming Audio interface descriptor containing a valid Isochronous audio endpoint. + * + * \return An error code from the \ref RNDISHost_GetConfigDescriptorDataCodes_t enum. + */ uint8_t ProcessConfigurationDescriptor(void) { uint8_t ConfigDescriptorData[512]; @@ -66,12 +80,17 @@ uint8_t ProcessConfigurationDescriptor(void) while (!(DataINEndpoint)) { + /* See if we've found a likely compatible interface, and if there is an endpoint within that interface */ if (!(AudioControlInterface) || USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found) { - if (!(AudioControlInterface)) + /* Check if we haven't found an Audio Control interface yet, or if we have run out of related Audio Streaming interfaces */ + if (!(AudioControlInterface) || + USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, + DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found) { + /* Find a new Audio Control interface if the current one doesn't contain a compatible streaming interface */ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found) { @@ -81,20 +100,14 @@ uint8_t ProcessConfigurationDescriptor(void) /* Save the interface in case we need to refer back to it later */ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); - } - - if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found) - { + + /* Find the next Audio Streaming interface within that Audio Control interface */ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found) + DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found) { /* Descriptor not found, error out */ return NoCompatibleInterfaceFound; } - - /* Save the interface in case we need to refer back to it later */ - AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t); } /* Save the interface in case we need to refer back to it later */ @@ -124,6 +137,14 @@ uint8_t ProcessConfigurationDescriptor(void) return SuccessfulConfigRead; } +/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's + * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration + * descriptor processing if an incompatible descriptor configuration is found. + * + * This comparator searches for the next Interface descriptor of the correct Audio Control Class, Subclass and Protocol values. + * + * \return A value from the DSEARCH_Return_ErrorCodes_t enum + */ uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor) { USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); @@ -143,6 +164,14 @@ uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor) return DESCRIPTOR_SEARCH_NotFound; } +/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's + * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration + * descriptor processing if an incompatible descriptor configuration is found. + * + * This comparator searches for the next Interface descriptor of the correct Audio Streaming Class, Subclass and Protocol values. + * + * \return A value from the DSEARCH_Return_ErrorCodes_t enum + */ uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor) { USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); @@ -162,6 +191,15 @@ uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor) return DESCRIPTOR_SEARCH_NotFound; } +/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's + * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration + * descriptor processing if an incompatible descriptor configuration is found. + * + * This comparator searches for the next Isochronous Endpoint descriptor within the current interface, aborting the + * search if another interface descriptor is found before the next endpoint. + * + * \return A value from the DSEARCH_Return_ErrorCodes_t enum + */ uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor) { USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t); @@ -180,4 +218,3 @@ uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor) return DESCRIPTOR_SEARCH_NotFound; } - diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst deleted file mode 100644 index 9a63786294..0000000000 --- a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst +++ /dev/null @@ -1,400 +0,0 @@ - 1 .file "ConfigDescriptor.c" - 2 __SREG__ = 0x3f - 3 __SP_H__ = 0x3e - 4 __SP_L__ = 0x3d - 5 __CCP__ = 0x34 - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 15 .Ltext0: - 16 .section .text.DComp_NextAudioControlInterface,"ax",@progbits - 17 .global DComp_NextAudioControlInterface - 19 DComp_NextAudioControlInterface: - 20 .LFB132: - 21 .LSM0: - 22 .LVL0: - 23 /* prologue: function */ - 24 /* frame size = 0 */ - 25 /* stack size = 0 */ - 26 .L__stack_usage = 0 - 27 0000 FC01 movw r30,r24 - 28 .LVL1: - 29 .LSM1: - 30 0002 8181 ldd r24,Z+1 - 31 .LVL2: - 32 0004 8430 cpi r24,lo8(4) - 33 0006 01F4 brne .L5 - 34 .LVL3: - 35 .LBB2: - 36 .LSM2: - 37 0008 8581 ldd r24,Z+5 - 38 000a 8130 cpi r24,lo8(1) - 39 000c 01F4 brne .L5 - 40 .LSM3: - 41 000e 8681 ldd r24,Z+6 - 42 0010 8130 cpi r24,lo8(1) - 43 0012 01F4 brne .L5 - 44 .LSM4: - 45 0014 8781 ldd r24,Z+7 - 46 0016 8823 tst r24 - 47 0018 01F0 breq .L6 - 48 .LVL4: - 49 .L5: - 50 .LSM5: - 51 001a 82E0 ldi r24,lo8(2) - 52 001c 0895 ret - 53 .LVL5: - 54 .L6: - 55 .LSM6: - 56 001e 80E0 ldi r24,lo8(0) - 57 .LBE2: - 58 .LSM7: - 59 0020 0895 ret - 60 .LFE132: - 62 .section .text.DComp_NextAudioStreamInterface,"ax",@progbits - 63 .global DComp_NextAudioStreamInterface - 65 DComp_NextAudioStreamInterface: - 66 .LFB133: - 67 .LSM8: - 68 .LVL6: - 69 /* prologue: function */ - 70 /* frame size = 0 */ - 71 /* stack size = 0 */ - 72 .L__stack_usage = 0 - 73 0000 FC01 movw r30,r24 - 74 .LVL7: - 75 .LSM9: - 76 0002 8181 ldd r24,Z+1 - 77 .LVL8: - 78 0004 8430 cpi r24,lo8(4) - 79 0006 01F4 brne .L11 - 80 .LVL9: - 81 .LBB3: - 82 .LSM10: - 83 0008 8581 ldd r24,Z+5 - 84 000a 8130 cpi r24,lo8(1) - 85 000c 01F4 brne .L11 - 86 .LSM11: - 87 000e 8681 ldd r24,Z+6 - 88 0010 8230 cpi r24,lo8(2) - 89 0012 01F4 brne .L11 - 90 .LSM12: - 91 0014 8781 ldd r24,Z+7 - 92 0016 8823 tst r24 - 93 0018 01F0 breq .L12 - 94 .LVL10: - 95 .L11: - 96 .LSM13: - 97 001a 82E0 ldi r24,lo8(2) - 98 001c 0895 ret - 99 .LVL11: - 100 .L12: - 101 .LSM14: - 102 001e 80E0 ldi r24,lo8(0) - 103 .LBE3: - 104 .LSM15: - 105 0020 0895 ret - 106 .LFE133: - 108 .section .text.DComp_NextAudioInterfaceDataEndpoint,"ax",@progbits - 109 .global DComp_NextAudioInterfaceDataEndpoint - 111 DComp_NextAudioInterfaceDataEndpoint: - 112 .LFB134: - 113 .LSM16: - 114 .LVL12: - 115 /* prologue: function */ - 116 /* frame size = 0 */ - 117 /* stack size = 0 */ - 118 .L__stack_usage = 0 - 119 0000 FC01 movw r30,r24 - 120 .LVL13: - 121 .LSM17: - 122 0002 8181 ldd r24,Z+1 - 123 .LVL14: - 124 0004 8530 cpi r24,lo8(5) - 125 0006 01F4 brne .L14 - 126 .LVL15: - 127 .LBB4: - 128 .LSM18: - 129 0008 8381 ldd r24,Z+3 - 130 000a 8370 andi r24,lo8(3) - 131 000c 8130 cpi r24,lo8(1) - 132 000e 01F4 brne .L18 - 133 0010 00C0 rjmp .L16 - 134 .LVL16: - 135 .L14: - 136 .LBE4: - 137 .LSM19: - 138 0012 8430 cpi r24,lo8(4) - 139 0014 01F0 breq .L17 - 140 .L18: - 141 .LSM20: - 142 0016 82E0 ldi r24,lo8(2) - 143 0018 0895 ret - 144 .LVL17: - 145 .L16: - 146 .LBB5: - 147 .LSM21: - 148 001a 80E0 ldi r24,lo8(0) - 149 001c 0895 ret - 150 .LVL18: - 151 .L17: - 152 .LBE5: - 153 .LSM22: - 154 001e 81E0 ldi r24,lo8(1) - 155 .LSM23: - 156 0020 0895 ret - 157 .LFE134: - 159 .section .text.ProcessConfigurationDescriptor,"ax",@progbits - 160 .global ProcessConfigurationDescriptor - 162 ProcessConfigurationDescriptor: - 163 .LFB131: - 164 .LSM24: - 165 0000 AF92 push r10 - 166 0002 BF92 push r11 - 167 0004 CF92 push r12 - 168 0006 DF92 push r13 - 169 0008 EF92 push r14 - 170 000a FF92 push r15 - 171 000c 0F93 push r16 - 172 000e 1F93 push r17 - 173 0010 DF93 push r29 - 174 0012 CF93 push r28 - 175 0014 CDB7 in r28,__SP_L__ - 176 0016 DEB7 in r29,__SP_H__ - 177 0018 C450 subi r28,lo8(-(-516)) - 178 001a D240 sbci r29,hi8(-(-516)) - 179 001c 0FB6 in __tmp_reg__,__SREG__ - 180 001e F894 cli - 181 0020 DEBF out __SP_H__,r29 - 182 0022 0FBE out __SREG__,__tmp_reg__ - 183 0024 CDBF out __SP_L__,r28 - 184 /* prologue: function */ - 185 /* frame size = 516 */ - 186 /* stack size = 526 */ - 187 .L__stack_usage = 526 - 188 .LSM25: - 189 0026 AE01 movw r20,r28 - 190 0028 4B5F subi r20,lo8(-(5)) - 191 002a 5F4F sbci r21,hi8(-(5)) - 192 002c 5A83 std Y+2,r21 - 193 002e 4983 std Y+1,r20 - 194 .LVL19: - 195 .LSM26: - 196 0030 23E0 ldi r18,lo8(3) - 197 0032 E22E mov r14,r18 - 198 0034 F12C mov r15,__zero_reg__ - 199 0036 EC0E add r14,r28 - 200 0038 FD1E adc r15,r29 - 201 003a 81E0 ldi r24,lo8(1) - 202 003c B701 movw r22,r14 - 203 003e 20E0 ldi r18,lo8(512) - 204 0040 32E0 ldi r19,hi8(512) - 205 0042 0E94 0000 call USB_Host_GetDeviceConfigDescriptor - 206 0046 8530 cpi r24,lo8(5) - 207 0048 01F4 brne .+2 - 208 004a 00C0 rjmp .L31 - 209 004c 8630 cpi r24,lo8(6) - 210 004e 01F0 breq .L23 - 211 0050 8823 tst r24 - 212 0052 01F4 brne .L34 - 213 0054 00E0 ldi r16,lo8(0) - 214 0056 10E0 ldi r17,hi8(0) - 215 0058 CC24 clr r12 - 216 005a DD24 clr r13 - 217 005c 5701 movw r10,r14 - 218 005e 7E01 movw r14,r28 - 219 0060 0894 sec - 220 0062 E11C adc r14,__zero_reg__ - 221 0064 F11C adc r15,__zero_reg__ - 222 0066 00C0 rjmp .L24 - 223 .L23: - 224 .LSM27: - 225 0068 83E0 ldi r24,lo8(3) - 226 006a 00C0 rjmp .L22 - 227 .L34: - 228 .LSM28: - 229 006c 81E0 ldi r24,lo8(1) - 230 006e 00C0 rjmp .L22 - 231 .LVL20: - 232 .L30: - 233 .LSM29: - 234 0070 9C01 movw r18,r24 - 235 0072 032F mov r16,r19 - 236 0074 182F mov r17,r24 - 237 .LVL21: - 238 .L24: - 239 .LBB6: - 240 .LSM30: - 241 0076 C114 cp r12,__zero_reg__ - 242 0078 D104 cpc r13,__zero_reg__ - 243 007a 01F0 breq .L25 - 244 .LSM31: - 245 007c C501 movw r24,r10 - 246 007e B701 movw r22,r14 - 247 0080 40E0 ldi r20,lo8(gs(DComp_NextAudioInterfaceDataEndpoint)) - 248 0082 50E0 ldi r21,hi8(gs(DComp_NextAudioInterfaceDataEndpoint)) - 249 0084 0E94 0000 call USB_GetNextDescriptorComp - 250 .LSM32: - 251 0088 8823 tst r24 - 252 008a 01F4 brne .L26 - 253 008c 00C0 rjmp .L36 - 254 .L25: - 255 .LSM33: - 256 008e C501 movw r24,r10 - 257 0090 B701 movw r22,r14 - 258 0092 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface)) - 259 0094 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface)) - 260 0096 0E94 0000 call USB_GetNextDescriptorComp - 261 009a 8823 tst r24 - 262 009c 01F4 brne .L33 - 263 .LSM34: - 264 009e C980 ldd r12,Y+1 - 265 00a0 DA80 ldd r13,Y+2 - 266 .LVL22: - 267 .L26: - 268 .LSM35: - 269 00a2 C501 movw r24,r10 - 270 00a4 B701 movw r22,r14 - 271 00a6 40E0 ldi r20,lo8(gs(DComp_NextAudioStreamInterface)) - 272 00a8 50E0 ldi r21,hi8(gs(DComp_NextAudioStreamInterface)) - 273 00aa 0E94 0000 call USB_GetNextDescriptorComp - 274 00ae 8823 tst r24 - 275 00b0 01F0 breq .L28 - 276 .LSM36: - 277 00b2 C501 movw r24,r10 - 278 00b4 B701 movw r22,r14 - 279 00b6 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface)) - 280 00b8 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface)) - 281 00ba 0E94 0000 call USB_GetNextDescriptorComp - 282 00be 8823 tst r24 - 283 00c0 01F4 brne .L33 - 284 .LSM37: - 285 00c2 C980 ldd r12,Y+1 - 286 00c4 DA80 ldd r13,Y+2 - 287 .LVL23: - 288 .L28: - 289 .LSM38: - 290 00c6 0981 ldd r16,Y+1 - 291 00c8 1A81 ldd r17,Y+2 - 292 .LVL24: - 293 .LSM39: - 294 00ca 00C0 rjmp .L29 - 295 .LVL25: - 296 .L36: - 297 .LSM40: - 298 00cc E981 ldd r30,Y+1 - 299 00ce FA81 ldd r31,Y+2 - 300 .LVL26: - 301 .LSM41: - 302 00d0 8281 ldd r24,Z+2 - 303 00d2 87FF sbrs r24,7 - 304 00d4 00C0 rjmp .L29 - 305 .LSM42: - 306 00d6 902F mov r25,r16 - 307 00d8 812F mov r24,r17 - 308 .LVL27: - 309 .LBE6: - 310 .LSM43: - 311 00da 3097 sbiw r30,0 - 312 00dc 01F0 breq .L30 - 313 .LSM44: - 314 00de D801 movw r26,r16 - 315 00e0 1296 adiw r26,2 - 316 00e2 8C91 ld r24,X - 317 00e4 1297 sbiw r26,2 - 318 00e6 8093 0000 sts StreamingInterfaceIndex,r24 - 319 .LSM45: - 320 00ea 1396 adiw r26,3 - 321 00ec 8C91 ld r24,X - 322 00ee 8093 0000 sts StreamingInterfaceAltSetting,r24 - 323 .LSM46: - 324 00f2 2281 ldd r18,Z+2 - 325 00f4 2093 0000 sts StreamingEndpointAddress,r18 - 326 .LSM47: - 327 00f8 0481 ldd r16,Z+4 - 328 00fa 1581 ldd r17,Z+5 - 329 .LVL28: - 330 00fc 81E0 ldi r24,lo8(1) - 331 00fe 61E0 ldi r22,lo8(1) - 332 0100 40E1 ldi r20,lo8(16) - 333 0102 94E0 ldi r25,lo8(4) - 334 0104 E92E mov r14,r25 - 335 .LVL29: - 336 0106 0E94 0000 call Pipe_ConfigurePipe - 337 .LVL30: - 338 .LSM48: - 339 010a 80E0 ldi r24,lo8(0) - 340 010c 00C0 rjmp .L22 - 341 .LVL31: - 342 .L31: - 343 .LSM49: - 344 010e 82E0 ldi r24,lo8(2) - 345 0110 00C0 rjmp .L22 - 346 .LVL32: - 347 .L33: - 348 .LBB7: - 349 .LSM50: - 350 0112 84E0 ldi r24,lo8(4) - 351 .L22: - 352 /* epilogue start */ - 353 .LBE7: - 354 .LSM51: - 355 0114 CC5F subi r28,lo8(-(516)) - 356 0116 DD4F sbci r29,hi8(-(516)) - 357 0118 0FB6 in __tmp_reg__,__SREG__ - 358 011a F894 cli - 359 011c DEBF out __SP_H__,r29 - 360 011e 0FBE out __SREG__,__tmp_reg__ - 361 0120 CDBF out __SP_L__,r28 - 362 0122 CF91 pop r28 - 363 0124 DF91 pop r29 - 364 0126 1F91 pop r17 - 365 0128 0F91 pop r16 - 366 012a FF90 pop r15 - 367 012c EF90 pop r14 - 368 012e DF90 pop r13 - 369 0130 CF90 pop r12 - 370 0132 BF90 pop r11 - 371 0134 AF90 pop r10 - 372 0136 0895 ret - 373 .L29: - 374 .LVL33: - 375 .LSM52: - 376 0138 902F mov r25,r16 - 377 013a 812F mov r24,r17 - 378 013c 00C0 rjmp .L30 - 379 .LFE131: - 381 .global StreamingInterfaceIndex - 382 .global StreamingInterfaceIndex - 383 .section .bss - 386 StreamingInterfaceIndex: - 387 0000 00 .skip 1,0 - 388 .global StreamingInterfaceAltSetting - 389 .global StreamingInterfaceAltSetting - 392 StreamingInterfaceAltSetting: - 393 0001 00 .skip 1,0 - 394 .global StreamingEndpointAddress - 395 .global StreamingEndpointAddress - 398 StreamingEndpointAddress: - 399 0002 00 .skip 1,0 - 448 .Letext0: -DEFINED SYMBOLS - *ABS*:00000000 ConfigDescriptor.c -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:2 *ABS*:0000003f __SREG__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:3 *ABS*:0000003e __SP_H__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:4 *ABS*:0000003d __SP_L__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:5 *ABS*:00000034 __CCP__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:6 *ABS*:00000000 __tmp_reg__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:7 *ABS*:00000001 __zero_reg__ -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:19 .text.DComp_NextAudioControlInterface:00000000 DComp_NextAudioControlInterface -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:65 .text.DComp_NextAudioStreamInterface:00000000 DComp_NextAudioStreamInterface -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:111 .text.DComp_NextAudioInterfaceDataEndpoint:00000000 DComp_NextAudioInterfaceDataEndpoint -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:162 .text.ProcessConfigurationDescriptor:00000000 ProcessConfigurationDescriptor -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:386 .bss:00000000 StreamingInterfaceIndex -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:392 .bss:00000001 StreamingInterfaceAltSetting -C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:398 .bss:00000002 StreamingEndpointAddress - -UNDEFINED SYMBOLS -USB_Host_GetDeviceConfigDescriptor -USB_GetNextDescriptorComp -Pipe_ConfigurePipe -__do_clear_bss diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o deleted file mode 100644 index 8c4ba0511b322f80d90efb38f013d7765d1f2096..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13752 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