]> jspc29.x-matter.uni-frankfurt.de Git - coral.git/commitdiff
started modifying the code for the coral table
authorMichael Wiebusch <m.wiebusch@gsi.de>
Thu, 11 Dec 2014 09:28:43 +0000 (10:28 +0100)
committerMichael Wiebusch <m.wiebusch@gsi.de>
Thu, 11 Dec 2014 09:28:43 +0000 (10:28 +0100)
23 files changed:
.gitignore [new file with mode: 0644]
firmware/Descriptors.d [deleted file]
firmware/Descriptors.o [deleted file]
firmware/TM1001A.c
firmware/TM1001A.c~ [deleted file]
firmware/USBtoSerial.c
firmware/USBtoSerial.c~ [deleted file]
firmware/USBtoSerial.d [deleted file]
firmware/USBtoSerial.eep [deleted file]
firmware/USBtoSerial.elf [deleted file]
firmware/USBtoSerial.hex [deleted file]
firmware/USBtoSerial.lss [deleted file]
firmware/USBtoSerial.map [deleted file]
firmware/USBtoSerial.o [deleted file]
firmware/USBtoSerial.sym [deleted file]
firmware/leds.c
firmware/leds.c~ [deleted file]
firmware/makefile
firmware/makefile~ [deleted file]
firmware/pins.h
firmware/pins.h~ [deleted file]
firmware/rfm70.c [deleted file]
firmware/rfm70.h [deleted file]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..280e909
--- /dev/null
@@ -0,0 +1,10 @@
+*.eep
+*.elf
+*.hex
+*.sym
+*.a
+*.map
+*.lss
+*.o
+*~
+*.d
diff --git a/firmware/Descriptors.d b/firmware/Descriptors.d
deleted file mode 100644 (file)
index 6168db3..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-Descriptors.o: Descriptors.c Descriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/USB.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Architectures.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/BoardTypes.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/ArchitectureSpecific.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/CompilerSpecific.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Attributes.h \
- Config/LUFAConfig.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Endianness.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/USBInterrupt_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Device.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Endpoint_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Device_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdRequestType.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../EndpointStream.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/EndpointStream_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdRequestType.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/ConfigDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/HostStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Device.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/EndpointStream.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/AndroidAccessoryClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/../Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/AudioClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/AudioClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../../USB.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/CDCClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/CDCClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/HIDClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/HIDClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDParser.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDReportData.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/MassStorageClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MassStorageClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/MIDIClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MIDIClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/PrinterClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/RNDISClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/RNDISClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/StillImageClass.h
-
-Descriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/USB.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Architectures.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/BoardTypes.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/ArchitectureSpecific.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/CompilerSpecific.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Attributes.h:
-
-Config/LUFAConfig.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Endianness.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/USBInterrupt_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Device.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Endpoint_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Device_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdRequestType.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../EndpointStream.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/EndpointStream_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdRequestType.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/ConfigDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/HostStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Device.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/EndpointStream.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/AndroidAccessoryClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/../Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/AudioClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/AudioClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../../USB.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/CDCClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/CDCClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/HIDClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/HIDClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDParser.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDReportData.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/MassStorageClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MassStorageClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/MIDIClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MIDIClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/PrinterClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/RNDISClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/RNDISClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/StillImageClass.h:
diff --git a/firmware/Descriptors.o b/firmware/Descriptors.o
deleted file mode 100644 (file)
index c3235c8..0000000
Binary files a/firmware/Descriptors.o and /dev/null differ
index f3819a7b4b1a84a8ba0848ba084defa3a530601d..7250b69645be8e83400dab5a59b05f0382cf4893 100644 (file)
 
 // define here the port and the pin where you cave connected
 // the ADB (I/O) line from your TM1001A touchpad
-#define ADB_BIT (1<<0)
-#define ADB_PIN PIND
-#define ADB_POUT PORTD
-#define ADB_PDIR DDRD
+#define ADB_BIT (1<<1)
+#define ADB_PIN PINB
+#define ADB_POUT PORTB
+#define ADB_PDIR DDRB
 
 // when touchpad is in keypad mode the next two defines set the number
 // of rows and columns of the
diff --git a/firmware/TM1001A.c~ b/firmware/TM1001A.c~
deleted file mode 100644 (file)
index 504e1f2..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-// This code is based on the work of Frank H. (franky1969) from the
-// Mikrocontroller.net forum.
-// I modified the code thusly that it runs on an ATMega8 with more than 8 MHz
-// (make use of the counter 0 overflow interrupt to count to numbers greater
-// than 255) and added a set of functions that make your life easy,
-// i.e. spare you the work of crawling through the ADB register documentation yourself.
-//
-// You cannot use counter 0 for any other thing when using the touchpad!
-//
-// Have fun! - Michael W. (acidbourbon)
-//
-// acidbourbon.wordpress.com
-// June 2013
-
-
-// define here the port and the pin where you cave connected
-// the ADB (I/O) line from your TM1001A touchpad
-#define ADB_BIT (1<<0)
-#define ADB_PIN PINB
-#define ADB_POUT PORTB
-#define ADB_PDIR DDRB
-
-// when touchpad is in keypad mode the next two defines set the number
-// of rows and columns of the
-#define PAD_ROWS 2
-#define PAD_COLS 3
-
-
-
-
-
-
-
-
-
-
-
-#define TAKT F_CPU
-
-//Bits Makro
-#define BITS(H,L)  (0b##H ##L)
-
-#define MIN_ABS_X 150
-#define MAX_ABS_X 1450
-#define MIN_ABS_Y 210
-#define MAX_ABS_Y 1130
-
-#define PAD_WIDTH (MAX_ABS_X-MIN_ABS_X)
-#define PAD_HEIGHT (MAX_ABS_Y-MIN_ABS_Y)
-#define PAD_COL_WIDTH (PAD_WIDTH/PAD_COLS)
-#define PAD_ROW_HEIGHT (PAD_HEIGHT/PAD_ROWS)
-
-//Vorteiler Timer 0 und 1 bei 2313, 8515, Mega8 (nicht Timer 2)
-#define TIMER_VT_1_B BITS(0000,0001)  
-#define TIMER_VT_8_B BITS(0000,0010)  
-#define TIMER_VT_64_B BITS(0000,0011)
-#define TIMER_VT_256_B BITS(0000,0100)
-#define TIMER_VT_1024_B BITS(0000,0101)
-
-#define TIMER_VT_1 1  
-#define TIMER_VT_8 8  
-#define TIMER_VT_64 64
-#define TIMER_VT_256 256
-#define TIMER_VT_1024 1024
-
-
-
-typedef unsigned char u08;
-typedef unsigned short int u16;
-
-#define COM_TALK0 BITS(0011,1100) //Adresse 3, Talk, Register0
-#define COM_TALK1 BITS(0011,1101) //Adresse 3, Talk, Register1
-#define COM_LISTEN1 BITS(0011,1001) //Adresse 3, Listen, Register1
-#define COM_TALK2 BITS(0011,1110) //Adresse 3, Talk, Register2
-#define COM_TALK3 BITS(0011,1111) //Adresse 3, Talk, Register3
-#define COM_LISTEN3 BITS(0011,1011) //Adresse 3, Listen, Register3
-#define MAX_ADB 9
-u08 adb_werte[MAX_ADB];
-u08 t0ovfcount;
-volatile u08 adb_data_length;
-
-
-ISR( TIMER0_OVF_vect) {
-       t0ovfcount++;
-}
-
-uint16_t t0ext(void) {
-       return (t0ovfcount * 256 + (u16) TCNT0); // return current counter value
-       // plus number of already passed counter cycles times 256
-}
-
-void t0rst(void) {
-       TCNT0 = 0; // set counter to zero
-       t0ovfcount = 0; // set overflow counter to zero
-
-}
-
-
-
-// ADB Register auslesen / schreiben 
-// Rückgabe Anzahl der Empfangenen Daten 
-// Befehl in adb_werte[0]. Empfangene bzw. zu sendende Daten in adb_werte[1 bis 8]
-
-
-
-
-u08 adb(void) {
-       u08 bitpos;
-       u08 z_byte;
-       u08 anzahl_out;
-       //Teilerwerte TC0
-#define ADB_VORTEILER_A TIMER_VT_64
-#define ADB_VORTEILER_A_BIT TIMER_VT_64_B
-#define ADB_VORTEILER_B TIMER_VT_8
-#define ADB_VORTEILER_B_BIT TIMER_VT_8_B
-#define ADB_IMPULS_LANG TAKT/ADB_VORTEILER_B*65/1000000 //97
-#define ADB_IMPULS_KURZ TAKT/ADB_VORTEILER_B*35/1000000        //52
-#define ADB_IMPULS_ATT TAKT/ADB_VORTEILER_A*570/1000000 // 106
-       //#define ADB_IMPULS_SYNC TAKT/ADB_VORTEILER_B*70/1000000
-#define ADB_IMPULS_TLT TAKT/ADB_VORTEILER_B*250/1000000 // !!! 375 mach das mit anderem prescaler
-//     #define ADB_IMPULS_TLT TAKT/ADB_VORTEILER_A*31/1000000 // modified
-       //#define ADB_IMPULS_PAUSE TAKT/ADB_VORTEILER_B*200/1000000
-
-       //Attention Signal
-       TCCR0B = ADB_VORTEILER_A_BIT;
-       t0rst(); //  TCNT0 = 0; // Zähler auf null setzen
-       ADB_PDIR |= ADB_BIT; // Ausgang 0
-       ADB_POUT &= ~ADB_BIT;
-       while (t0ext() < ADB_IMPULS_ATT)
-               ; // Warteschleife
-
-       TCCR0B = ADB_VORTEILER_B_BIT; // ab hier alles im schnellen modus
-
-       anzahl_out = 1; // Mindestens Befehl übertragen
-       z_byte = 0;
-       do {
-               // START BIT (1)
-               t0rst(); //  TCNT0 = 0;
-               ADB_PDIR |= ADB_BIT; // Ausgang 0
-               ADB_POUT &= ~ADB_BIT;
-               while (t0ext() < ADB_IMPULS_KURZ)
-                       ;
-               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-               ADB_POUT |= ADB_BIT;
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               for (; z_byte < anzahl_out; z_byte++) {
-                       for (bitpos = 128; bitpos; bitpos >>= 1) { //Daten ausgeben
-                               t0rst(); //  TCNT0 = 0;
-                               ADB_PDIR |= ADB_BIT; // Ausgang 0
-                               ADB_POUT &= ~ADB_BIT;
-                               if (adb_werte[z_byte] & bitpos)
-                                       while (t0ext() < ADB_IMPULS_KURZ)
-                                               ;
-                               else
-                                       while (t0ext() < ADB_IMPULS_LANG)
-                                               ;
-                               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-                               ADB_POUT |= ADB_BIT;
-                               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                                       ;
-                       }
-               }
-               // STOP BIT (0)
-               t0rst(); //  TCNT0 = 0;
-               ADB_PDIR |= ADB_BIT; // Ausgang 0
-               ADB_POUT &= ~ADB_BIT;
-               while (t0ext() < ADB_IMPULS_LANG)
-                       ;
-               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-               ADB_POUT |= ADB_BIT;
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               // Entscheidung, ob noch weitere Daten übertragen werden
-               if (adb_werte[0] == COM_LISTEN3)
-                       anzahl_out = 2 + 1;
-               else if (adb_werte[0] == COM_LISTEN1)
-                       anzahl_out = 8 + 1;
-               else
-                       z_byte = 8;
-       } while (z_byte < 2);
-
-       // Warten auf Rückgabewerte sonst Abbruch
-       // TCCR0 = ADB_VORTEILER_A_BIT; // micha modifikation
-       t0rst(); //  TCNT0 = 0;
-
-       do {
-               if (t0ext() > ADB_IMPULS_TLT) {
-                       return (0);
-               }
-       } while (ADB_PIN & ADB_BIT);
-       while (!(ADB_PIN & ADB_BIT))
-               ; // Start Bit
-
-       z_byte = 1;
-       while (z_byte < MAX_ADB) {
-               adb_werte[z_byte] = 0;
-               for (bitpos = 128; bitpos; bitpos >>= 1) { //Bits einlesen
-                       //TCCR0 = ADB_VORTEILER_B_BIT; //micha modifikation
-                       t0rst(); //  TCNT0 = 0;
-                       // Abbruch wenn keine weiteren Bytes übertragen werden.
-                       do {
-                               if (t0ext() > ADB_IMPULS_KURZ + ADB_IMPULS_LANG) {
-                                       return (z_byte - 1);
-                               }
-                       } while (ADB_PIN & ADB_BIT);
-                       t0rst(); //  TCNT0 = 0;
-                       while (!(ADB_PIN & ADB_BIT))
-                               ;
-                       if (t0ext() < (ADB_IMPULS_KURZ + ADB_IMPULS_LANG) / 2)
-                               adb_werte[z_byte] += bitpos;
-               }
-               z_byte++;
-       }
-       return (z_byte - 1);
-}
-
-void touchpad_init(void) {
-       // Eingänge
-       ADB_PDIR &= ~ADB_BIT;
-
-       // Pull Up einschalten
-       ADB_POUT |= ADB_BIT;
-
-       //enable timer0 interrupt
-       TIMSK0 |= (1 << TOIE0);
-}
-
-uint8_t touchpad_read(void) {
-       adb_werte[0] = COM_TALK0;
-       adb_data_length = adb();
-       return adb_data_length;
-}
-
-void touchpad_set_abs_mode(void) {
-       // Auf Absolutmodus umschalten
-       adb_werte[0] = COM_LISTEN3;
-       adb_werte[1] = BITS(0110,0011);
-       adb_werte[2] = 4; //CDM Modus
-       adb();
-
-       adb_werte[0] = COM_TALK1;
-       adb(); // Werte holen
-
-       adb_werte[0] = COM_LISTEN1;
-       adb_werte[7] = 0x00; //Absolutmodus
-       adb();
-  _delay_ms(100);
-}
-
-void touchpad_set_rel_mode_100dpi(void) {
-       // Auf Relativmodus umschalten
-       adb_werte[0] = COM_LISTEN3;
-       adb_werte[1] = BITS(0110,0011);
-       adb_werte[2] = 1; //default modus: 100 dpi mouse
-       adb();
-  _delay_ms(100);
-
-}
-
-void touchpad_set_rel_mode_200dpi(void) {
-       // Auf Relativmodus umschalten
-       adb_werte[0] = COM_LISTEN3;
-       adb_werte[1] = BITS(0110,0011);
-       adb_werte[2] = 2; //200 dpi mouse
-       adb();
-  _delay_ms(100);
-
-}
-
-uint8_t z_pressure(void) {
-       return ((adb_werte[5] & 0b01110000) >> 1) | (adb_werte[5] & 0b00000111);
-}
-
-uint16_t x_abs(void) {
-       return ((adb_werte[4] & 0b111) << 10) | ((adb_werte[3] & 0b111) << 7)
-                       | (adb_werte[2] & 0b01111111);
-}
-
-uint16_t y_abs(void) {
-       return ((adb_werte[4] & 0b01110000) << 6)
-                       | ((adb_werte[3] & 0b01110000) << 3) | (adb_werte[1] & 0b01111111);
-}
-
-int8_t delta_y(void) {
-       if(adb_data_length ==0) {
-               return 0;
-       }
-       if (adb_werte[1] & 0b01000000) {
-               return -((128 - adb_werte[1]) & 0b00111111);
-       } else {
-               return adb_werte[1] & 0b00111111;
-       }
-}
-
-int8_t delta_x(void) {
-       if(adb_data_length ==0) {
-               return 0;
-       }
-       if (adb_werte[2] & 0b01000000) {
-               return -((128 - adb_werte[2]) & 0b00111111);
-       } else {
-               return adb_werte[2] & 0b00111111;
-       }
-}
-/*
-uint8_t touchpad_button_pressed(void){
-       static uint8_t button_status=0;
-
-       if(adb_data_length ==0) {
-               return button_status;
-       }
-       if(adb_werte[1]&0b10000000){
-               button_status=1;
-               return 1;
-       }else{
-               button_status=0;
-               return 0;
-       }
-
-}
-*/
-
-uint8_t decode_field(void) {
-       static uint8_t last_pressure = 0;
-       uint8_t pressure, i, j;
-       uint8_t return_val = 0;
-       static uint16_t x_mem, y_mem;
-       uint16_t x, y;
-
-       pressure = z_pressure();
-       x = x_abs();
-       y = y_abs();
-
-       if (x) {
-               x_mem = x;
-       } else {
-               x = x_mem;
-       }
-
-       if (y) {
-               y_mem = y;
-       } else {
-               y = y_mem;
-       }
-
-       if ((pressure == 0) && (last_pressure > 0)) {
-
-               i = (y - MIN_ABS_Y) / PAD_ROW_HEIGHT;
-               j = (x - MIN_ABS_X) / PAD_COL_WIDTH;
-
-               return_val = i * PAD_COLS + j + 1;
-
-       }
-
-       last_pressure = pressure;
-       return return_val;
-}
index 51d27200df625796c2f8711937477a9af9d9b7db..a334ba076c9e6214e2c3550e54b404251d824391 100644 (file)
@@ -402,7 +402,8 @@ uint32_t times_ten_pow(uint8_t exponent) {
   return val;\r
 }\r
 \r
-#define PHASE_DELAY_MS 10\r
+// #define PHASE_DELAY_MS 1\r
+#define PHASE_DELAY_US 0\r
 \r
 uint8_t move_plate(int16_t dx, int16_t dy){\r
   static int16_t todo_x,todo_y = 0;\r
@@ -424,7 +425,7 @@ uint8_t move_plate(int16_t dx, int16_t dy){
   }\r
   motor_step(Y,signum);\r
   todo_y -= signum;\r
-  _delay_ms(PHASE_DELAY_MS);\r
+  _delay_us(PHASE_DELAY_US);\r
   \r
   return returnval; // busy\r
   \r
@@ -625,8 +626,8 @@ int main(void)
 {\r
  \r
   init_motors();\r
-  init_leds();\r
-  init_sw();\r
+//   init_leds();\r
+//   init_sw();\r
 \r
   \r
   char dummy;\r
@@ -661,9 +662,9 @@ int main(void)
 \r
   while (1) {\r
     \r
-    set_led0(sw0_state());\r
-    set_led1(sw1_state());\r
-    set_led2(sw2_state());\r
+//     set_led0(sw0_state());\r
+//     set_led1(sw1_state());\r
+//     set_led2(sw2_state());\r
 \r
     Usb2SerialTask();\r
 //     loopcounter++;\r
@@ -672,10 +673,17 @@ int main(void)
 //     }\r
 //     loopcounter=0;\r
     parse_command(); // read data from virtual comport\r
-    touchpad_read(); // read data from touchpad\r
-\r
-    dx = -delta_x();// returns the amount your finger has moved in x direction since last readout\r
-    dy = -delta_y();// returns the amount your finger has moved in y direction since last readout\r
+   touchpad_read(); // read data from touchpad\r
+//     if(sw0_state()){ // if left switch is active\r
+      dx = -4*delta_x();// returns the amount your finger has moved in x direction since last readout\r
+//     } else {\r
+//       dx = 0;\r
+//     }\r
+//     if(sw1_state()){ // if middle switch is active\r
+      dy = -4*delta_y();// returns the amount your finger has moved in y direction since last readout\r
+//     } else {\r
+//       dy = 0;\r
+//     }\r
 \r
     // increment/decrement some dummy variables with the\r
 \r
diff --git a/firmware/USBtoSerial.c~ b/firmware/USBtoSerial.c~
deleted file mode 100644 (file)
index 13062d8..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2013.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2013  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaims all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Main source file for the USBtoSerial project. This file contains the main tasks of\r
- *  the project and is responsible for the initial application hardware configuration.\r
- */\r
-#define F_CPU 16e6\r
-\r
-#include <avr/io.h> \r
-#include <stdlib.h>\r
-#include "USBtoSerial.h"\r
-#include <util/delay.h>\r
-#include "TM1001A.c"\r
-// #include "rfm70.c"\r
-#include "pins.h"\r
-#include "leds.c"\r
-\r
-int16_t plate_pos_x = 0,plate_pos_y = 0;\r
-char stringbuffer[16];\r
-\r
-/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */\r
-static RingBuffer_t USBtoUSART_Buffer;\r
-\r
-/** Underlying data buffer for \ref USBtoUSART_Buffer, where the stored bytes are located. */\r
-static uint8_t      USBtoUSART_Buffer_Data[128];\r
-\r
-/** Circular buffer to hold data from the serial port before it is sent to the host. */\r
-static RingBuffer_t USARTtoUSB_Buffer;\r
-\r
-/** Underlying data buffer for \ref USARTtoUSB_Buffer, where the stored bytes are located. */\r
-static uint8_t      USARTtoUSB_Buffer_Data[128];\r
-\r
-/** LUFA CDC Class driver interface configuration and state information. This structure is\r
- *  passed to all CDC Class driver functions, so that multiple instances of the same class\r
- *  within a device can be differentiated from one another.\r
- */\r
-USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =\r
-       {\r
-               .Config =\r
-                       {\r
-                               .ControlInterfaceNumber         = 0,\r
-                               .DataINEndpoint                 =\r
-                                       {\r
-                                               .Address                = CDC_TX_EPADDR,\r
-                                               .Size                   = CDC_TXRX_EPSIZE,\r
-                                               .Banks                  = 1,\r
-                                       },\r
-                               .DataOUTEndpoint                =\r
-                                       {\r
-                                               .Address                = CDC_RX_EPADDR,\r
-                                               .Size                   = CDC_TXRX_EPSIZE,\r
-                                               .Banks                  = 1,\r
-                                       },\r
-                               .NotificationEndpoint           =\r
-                                       {\r
-                                               .Address                = CDC_NOTIFICATION_EPADDR,\r
-                                               .Size                   = CDC_NOTIFICATION_EPSIZE,\r
-                                               .Banks                  = 1,\r
-                                       },\r
-                       },\r
-       };\r
-\r
-\r
-\r
-\r
-\r
-void Usb2SerialTask(void) {\r
-  \r
-    /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */\r
-    if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))\r
-    {\r
-      int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);\r
-\r
-      /* Read bytes from the USB OUT endpoint into the USART transmit buffer */\r
-      if (!(ReceivedByte < 0))\r
-        RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);\r
-    }\r
-\r
-    /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */\r
-    uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);\r
-    if (BufferCount)\r
-    {\r
-      Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address);\r
-\r
-      /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data\r
-       * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */\r
-      if (Endpoint_IsINReady())\r
-      {\r
-        /* Never send more than one bank size less one byte to the host at a time, so that we don't block\r
-         * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */\r
-        uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));\r
-\r
-        /* Read bytes from the USART receive buffer into the USB IN endpoint */\r
-        while (BytesToSend--)\r
-        {\r
-          /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */\r
-          if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface,\r
-                      RingBuffer_Peek(&USARTtoUSB_Buffer)) != ENDPOINT_READYWAIT_NoError)\r
-          {\r
-            break;\r
-          }\r
-\r
-          /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */\r
-          RingBuffer_Remove(&USARTtoUSB_Buffer);\r
-        }\r
-      }\r
-    }\r
-\r
-    /* Load the next byte from the USART transmit buffer into the USART */\r
-//     if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
-//       Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));\r
-//      dummy = RingBuffer_Remove(&USBtoUSART_Buffer);\r
-//      sendPayload(&dummy,1,0);\r
-//     }\r
-    CDC_Device_USBTask(&VirtualSerial_CDC_Interface);\r
-    USB_USBTask();\r
-  \r
-}\r
-\r
-\r
-\r
-/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
-void SetupHardware(void)\r
-{\r
-       /* Disable watchdog if enabled by bootloader/fuses */\r
-       MCUSR &= ~(1 << WDRF);\r
-       wdt_disable();\r
-\r
-       /* Disable clock division */\r
-       clock_prescale_set(clock_div_1);\r
-\r
-       /* Hardware Initialization */\r
-//     LEDs_Init();\r
-       USB_Init();\r
-}\r
-\r
-/** Event handler for the library USB Connection event. */\r
-void EVENT_USB_Device_Connect(void)\r
-{\r
-//     LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
-}\r
-\r
-/** Event handler for the library USB Disconnection event. */\r
-void EVENT_USB_Device_Disconnect(void)\r
-{\r
-//     LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
-}\r
-\r
-/** Event handler for the library USB Configuration Changed event. */\r
-void EVENT_USB_Device_ConfigurationChanged(void)\r
-{\r
-       bool ConfigSuccess = true;\r
-\r
-       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);\r
-\r
-//     LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);\r
-}\r
-\r
-/** Event handler for the library USB Control Request reception event. */\r
-void EVENT_USB_Device_ControlRequest(void)\r
-{\r
-       CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);\r
-}\r
-\r
-/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer\r
- *  for later transmission to the host.\r
- */\r
-ISR(USART1_RX_vect, ISR_BLOCK)\r
-{\r
-       uint8_t ReceivedByte = UDR1;\r
-\r
-       if (USB_DeviceState == DEVICE_STATE_Configured)\r
-         RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);\r
-}\r
-\r
-/** Event handler for the CDC Class driver Line Encoding Changed event.\r
- *\r
- *  \param[in] CDCInterfaceInfo  Pointer to the CDC class interface configuration structure being referenced\r
- */\r
-void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)\r
-{\r
-       uint8_t ConfigMask = 0;\r
-\r
-       switch (CDCInterfaceInfo->State.LineEncoding.ParityType)\r
-       {\r
-               case CDC_PARITY_Odd:\r
-                       ConfigMask = ((1 << UPM11) | (1 << UPM10));\r
-                       break;\r
-               case CDC_PARITY_Even:\r
-                       ConfigMask = (1 << UPM11);\r
-                       break;\r
-       }\r
-\r
-       if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)\r
-         ConfigMask |= (1 << USBS1);\r
-\r
-       switch (CDCInterfaceInfo->State.LineEncoding.DataBits)\r
-       {\r
-               case 6:\r
-                       ConfigMask |= (1 << UCSZ10);\r
-                       break;\r
-               case 7:\r
-                       ConfigMask |= (1 << UCSZ11);\r
-                       break;\r
-               case 8:\r
-                       ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));\r
-                       break;\r
-       }\r
-\r
-       /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */\r
-       UCSR1B = 0;\r
-       UCSR1A = 0;\r
-       UCSR1C = 0;\r
-\r
-       /* Set the new baud rate before configuring the USART */\r
-       UBRR1  = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);\r
-\r
-       /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */\r
-       UCSR1C = ConfigMask;\r
-       UCSR1A = (1 << U2X1);\r
-       UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));\r
-}\r
-\r
-\r
-\r
-\r
-void uart_putc(unsigned char data)\r
-{\r
-\r
-      if (USB_DeviceState == DEVICE_STATE_Configured){\r
-        RingBuffer_Insert(&USARTtoUSB_Buffer, data);\r
-      }\r
-  \r
-}\r
-\r
-void uart_puts(const char *s )\r
-{\r
-    while (*s) \r
-      uart_putc(*s++);\r
-\r
-}/* uart_puts */\r
-\r
-\r
-// convert an unsigned integer to string\r
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {\r
-  int8_t i; // schleifenzähler\r
-\r
-  string[no_digits] = '\0'; // String Terminator\r
-  for (i = (no_digits - 1); i >= 0; i--) {\r
-    if (zahl == 0 && i < (no_digits - 1)) {\r
-      string[i] = leading_char;\r
-    } else {\r
-      string[i] = (zahl % 10) + '0';\r
-    } // Modulo rechnen, dann den ASCII-Code von '0' addieren\r
-    zahl /= 10;\r
-  }\r
-\r
-}\r
-\r
-int8_t sign(int16_t x) {\r
-  return (x > 0) - (x < 0);\r
-}\r
-\r
-\r
-void uart_print_number(uint32_t zahl, uint8_t no_digits) {\r
-  my_uitoa(abs(zahl),stringbuffer,no_digits,' ');\r
-  uart_puts(stringbuffer);\r
-}\r
-\r
-\r
-void uart_print_number_wlzeros(uint32_t zahl, uint8_t no_digits) {\r
-  my_uitoa(abs(zahl),stringbuffer,no_digits,'0');\r
-  uart_puts(stringbuffer);\r
-}\r
-\r
-void uart_print_signed_number(uint32_t zahl, uint8_t no_digits) {\r
-  my_uitoa(abs(zahl),stringbuffer,no_digits,' ');\r
-  if (sign(zahl) < 0) {\r
-    uart_putc('-');\r
-  } else {\r
-    uart_putc('+');\r
-  }\r
-  uart_puts(stringbuffer);\r
-  \r
-}\r
-\r
-\r
-/** Main program entry point. This routine contains the overall program flow, including initial\r
- *  setup of all components and the main program loop.\r
- */\r
-\r
-/* motor stuff */\r
-\r
-uint8_t phase_pattern[4] = { 0b00001010, 0b00001001, 0b00000101, 0b00000110};\r
-    \r
-    \r
-void set_x(uint8_t byte) {\r
-  PORTX0 &= ~(1<<X0);\r
-  PORTX1 &= ~(1<<X1);\r
-  PORTX2 &= ~(1<<X2);\r
-  PORTX3 &= ~(1<<X3);\r
-\r
-  PORTX0 |= ((byte & (1<<0))>>0)<<X0;\r
-  PORTX1 |= ((byte & (1<<1))>>1)<<X1;\r
-  PORTX2 |= ((byte & (1<<2))>>2)<<X2;\r
-  PORTX3 |= ((byte & (1<<3))>>3)<<X3;\r
-}\r
-\r
-void set_y(uint8_t byte) {\r
-  PORTY0 &= ~(1<<Y0);\r
-  PORTY1 &= ~(1<<Y1);\r
-  PORTY2 &= ~(1<<Y2);\r
-  PORTY3 &= ~(1<<Y3);\r
-\r
-  PORTY0 |= ((byte & (1<<0))>>0)<<Y0;\r
-  PORTY1 |= ((byte & (1<<1))>>1)<<Y1;\r
-  PORTY2 |= ((byte & (1<<2))>>2)<<Y2;\r
-  PORTY3 |= ((byte & (1<<3))>>3)<<Y3;\r
-}\r
-\r
-void init_motors(void){\r
-  set_x(0);\r
-  set_y(0);\r
-  DDRX0 |= (1<<X0);\r
-  DDRX1 |= (1<<X1);\r
-  DDRX2 |= (1<<X2);\r
-  DDRX3 |= (1<<X3);\r
-  DDRY0 |= (1<<Y0);\r
-  DDRY1 |= (1<<Y1);\r
-  DDRY2 |= (1<<Y2);\r
-  DDRY3 |= (1<<Y3);\r
-}\r
-\r
-\r
-\r
-uint8_t motor_step(uint8_t motor, int8_t direction) { // motor: M1 or M2, direction +1 or -1, 0 for coil deactivation\r
-\r
-  uint8_t next_pattern, next_phase;\r
-  static uint8_t phase_memory[2] = { 0, 0 };\r
-  void (*setport)(uint8_t);\r
-  setport = &set_x;\r
-  \r
-  switch(motor) {\r
-    case X:\r
-      setport = &set_x;\r
-      break;\r
-    case Y:\r
-      setport = &set_y;\r
-      break;\r
-  }\r
-\r
-  next_phase = (phase_memory[motor] + 4 + direction) % 4;\r
-  phase_memory[motor] = next_phase;\r
-  \r
-\r
-  next_pattern = phase_pattern[next_phase];\r
-  if (direction != 0) {\r
-      (*setport)(next_pattern);\r
-  } else {\r
-      (*setport)(0);\r
-  }\r
-\r
-  return next_pattern;\r
-\r
-}\r
-\r
-\r
-uint32_t times_ten_pow(uint8_t exponent) {\r
-  uint32_t val = 1;\r
-  for (uint8_t i = 1; i <= exponent; i++) {\r
-    val *= 10;\r
-  }\r
-  return val;\r
-}\r
-\r
-#define PHASE_DELAY_MS 10\r
-\r
-uint8_t move_plate(int16_t dx, int16_t dy){\r
-  static int16_t todo_x,todo_y = 0;\r
-  int8_t signum;\r
-  uint8_t returnval = 0;\r
-  todo_x += dx;\r
-  todo_y += dy;\r
-  \r
-  signum = sign(todo_x);\r
-  if(signum != 0) {\r
-    returnval++;\r
-  }\r
-  motor_step(X,signum);\r
-  todo_x -= signum;\r
-  \r
-  signum = sign(todo_y);\r
-  if(signum != 0) {\r
-    returnval++;\r
-  }\r
-  motor_step(Y,signum);\r
-  todo_y -= signum;\r
-  _delay_ms(PHASE_DELAY_MS);\r
-  \r
-  return returnval; // busy\r
-  \r
-}\r
-  \r
-  \r
-void print_steps_in_mm(int16_t steps) {\r
-  int16_t predot,postdot;\r
-  \r
-  predot = steps/24;\r
-  postdot = ((abs(steps)%24)*417)/10;\r
-  uart_print_signed_number(predot,3);\r
-  uart_putc('.');\r
-  uart_print_number_wlzeros(postdot,3);\r
-  \r
-}\r
-  \r
-void pos_report(void){ \r
-    uart_puts("x_pos: ");\r
-//     uart_print_signed_number(plate_pos_x,6);\r
-    print_steps_in_mm(plate_pos_x);\r
-//     my_uitoa(plate_pos_x, stringbuffer, 6);\r
-//     uart_puts(stringbuffer);\r
-    uart_puts("  y_pos: ");\r
-//     uart_print_signed_number(plate_pos_y,6);\r
-    print_steps_in_mm(plate_pos_y);\r
-    uart_puts("\r");\r
-}\r
-\r
-#define POSITION 0\r
-#define GOTO 1\r
-#define MOVEREL 2\r
-#define SETZERO 3\r
-\r
-void parse_command(void){\r
-  \r
-  \r
-  static char cmdbuffer[32];\r
-  static char numbuffer[16];\r
-  static uint16_t predot = 0,postdot = 0;\r
-  static uint8_t cmdPos, curCmdLen, num_start = 0, nums_found = 0;\r
-  uint8_t action=0,axis=0;\r
-  int8_t num_sign = 1;\r
-  char byte;\r
-  \r
-  /* Load the next byte from the USART transmit buffer into the USART */\r
-  if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {\r
-    byte = RingBuffer_Remove(&USBtoUSART_Buffer);\r
-    \r
-    if (byte == '\r' || byte == '\n') {// end of command, evaluate cemmand!\r
-      uart_puts("\r\n");\r
-      cmdbuffer[cmdPos] = '\0'; // terminate new command string\r
-      curCmdLen = cmdPos;\r
-      cmdPos = 0;\r
-      \r
-      \r
-      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command\r
-        action = GOTO;\r
-      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {\r
-        action = MOVEREL;\r
-      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {\r
-        action = SETZERO;\r
-      } else {\r
-        action = POSITION;\r
-      }\r
-      \r
-      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {\r
-        axis = X;\r
-      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {\r
-        axis = Y;\r
-      }\r
-      \r
-      // if you expect coordinate, parse number!\r
-      if (action == GOTO || action == MOVEREL){\r
-\r
-        predot = 0;\r
-        postdot = 0;\r
-        num_sign = 1;\r
-        num_start = 0;\r
-        nums_found = 0;\r
-        \r
-        for (uint8_t i=2; i<=curCmdLen; i++) {\r
-           if ( num_start == 0 && cmdbuffer[i] == '-' ) { // if you find a minus before\r
-            // you find a digit, it's a negative number\r
-             num_sign = -1;\r
-           }\r
-           \r
-           if ( cmdbuffer[i] >= 48 && cmdbuffer[i] <= 57 ){ // is it a number?\r
-             if ( num_start == 0) { // this is the first digit in the string\r
-               num_start = i;\r
-             }\r
-           } else { // no digit!\r
-             if ( num_start != 0) { // digits have been found before\r
-                strncpy(numbuffer,cmdbuffer+num_start,i-num_start); // copy number found to\r
-                // numbuffer\r
-                numbuffer[i-num_start] = '\0'; // make sure it's always a terminated string\r
-                nums_found++;\r
-                if(nums_found == 1) { // its the predot digits\r
-                  predot = atoi(numbuffer);\r
-                } else { // its the postdot digits\r
-                  uint8_t postdotlen = i-num_start;\r
-                  if (postdotlen < 3){ // if too small ,fill with zeros\r
-                    for( uint8_t j = postdotlen; j <=2; j++) {\r
-                      numbuffer[j] = '0';\r
-                    }\r
-                  }\r
-                  // crop the number to three post dot digits\r
-                  numbuffer[3] = '\0';\r
-                  \r
-                  postdot = atoi(numbuffer);\r
-                }\r
-                num_start = 0;\r
-             }\r
-           }\r
-        }\r
-        \r
-      }\r
-      \r
-      int16_t steps = 0,dest=0;\r
-      \r
-      switch (action) {\r
-        case GOTO:\r
-          uart_puts("GOTO ");\r
-          uart_putc(88+axis);// x or y\r
-          uart_putc(' ');\r
-          uart_print_signed_number(predot*num_sign,3);\r
-          uart_putc('.');\r
-          uart_print_number_wlzeros(postdot,3);\r
-          uart_puts("\r\n"); \r
-          \r
-          dest = num_sign *( predot*24 +(postdot*10)/416);\r
-          \r
-          if (axis == X) {\r
-            steps = dest - plate_pos_x; // experimental correction!\r
-            move_plate(steps,0);\r
-            plate_pos_x += steps;\r
-          } else if (axis == Y) {\r
-            steps = dest - plate_pos_y;\r
-            move_plate(0,steps);\r
-            plate_pos_y += steps;\r
-          }\r
-          pos_report();\r
-          \r
-          break;\r
-        case MOVEREL:\r
-          uart_puts("MOVE ");\r
-          uart_putc(88+axis);// x or y\r
-          uart_putc(' ');\r
-          uart_print_signed_number(predot*num_sign,3);\r
-          uart_putc('.');\r
-          uart_print_number_wlzeros(postdot,3);\r
-          uart_puts("\r\n"); \r
-          \r
-          steps = num_sign *( predot*24 +(postdot*10)/416);\r
-          \r
-          if (axis == X) {\r
-            move_plate(steps,0);\r
-            plate_pos_x += steps;\r
-          } else if (axis == Y) {\r
-            move_plate(0,steps);\r
-            plate_pos_y += steps;\r
-          }\r
-          pos_report();\r
-          break;\r
-          \r
-        case SETZERO:\r
-          plate_pos_x = 0;\r
-          plate_pos_y = 0;\r
-          pos_report();\r
-          break;\r
-          \r
-        case POSITION:\r
-          pos_report();\r
-          break;\r
-        \r
-      }\r
-      \r
-      \r
-      \r
-    } else { // queue command\r
-      if( cmdPos == 0 ){\r
-        uart_puts("\r\n$ ");\r
-      }\r
-      \r
-      if( byte == 8 ){ // backspace\r
-        cmdPos--;\r
-      } else {\r
-        cmdbuffer[cmdPos++] = byte;\r
-      }\r
-      uart_putc(byte);\r
-      \r
-\r
-    }\r
-  }\r
-}\r
-\r
-int main(void)\r
-{\r
\r
-  init_motors();\r
-//   init_leds();\r
-\r
-  \r
-  char dummy;\r
-  uint8_t field_val = 0;\r
-  SetupHardware();\r
-\r
-\r
-\r
-  RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data));\r
-  RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data));\r
-\r
-//   LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
-  GlobalInterruptEnable();\r
-\r
-  touchpad_init(); // you need to call this to setup the I/O pin!\r
-  _delay_ms(500);\r
-  sei();\r
-\r
-\r
-\r
-  \r
-  uint16_t loopcounter=0;\r
-\r
-\r
-\r
-//   uart_puts("you selected the relative position demo modus:\n\r");\r
-  touchpad_set_rel_mode_100dpi();// use touchpad in relative mode\r
-//  touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution\r
-  int16_t x, y = 0;\r
-  int8_t dx, dy = 0;\r
-  uint8_t busy = 0, last_busy = 0;\r
-\r
-  while (1) {\r
-    \r
-    set_led0(sw0_state());\r
-    set_led1(sw1_state());\r
-    set_led2(sw2_state());\r
-\r
-    Usb2SerialTask();\r
-//     loopcounter++;\r
-//     if(loopcounter<2000) {\r
-//       continue;\r
-//     }\r
-//     loopcounter=0;\r
-    parse_command(); // read data from virtual comport\r
-    touchpad_read(); // read data from touchpad\r
-\r
-    dx = -delta_x();// returns the amount your finger has moved in x direction since last readout\r
-    dy = -delta_y();// returns the amount your finger has moved in y direction since last readout\r
-\r
-    // increment/decrement some dummy variables with the\r
-\r
-    plate_pos_x += dx;\r
-    plate_pos_y += dy;\r
-    \r
-    \r
-    last_busy = busy;\r
-    busy = move_plate(dx,dy);\r
-    \r
-    \r
-    if (last_busy && !(busy)){\r
-      pos_report();\r
-    }\r
-    \r
-\r
-  }\r
-  // end of relative mode demo block\r
-\r
-// #endif\r
-    \r
-  \r
-  \r
-  \r
-\r
-\r
-} // end of main
\ No newline at end of file
diff --git a/firmware/USBtoSerial.d b/firmware/USBtoSerial.d
deleted file mode 100644 (file)
index c71da10..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-USBtoSerial.o: USBtoSerial.c USBtoSerial.h Descriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/USB.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Architectures.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/BoardTypes.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/ArchitectureSpecific.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/CompilerSpecific.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Attributes.h \
- Config/LUFAConfig.h \
- ../../LUFA/../LUFA/Drivers/USB/../../Common/Endianness.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/USBInterrupt_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Device.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Endpoint_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Device_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdRequestType.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../EndpointStream.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/EndpointStream_AVR8.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdRequestType.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Events.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/ConfigDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/HostStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBController.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/USBInterrupt.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Device.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/Endpoint.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h \
- ../../LUFA/../LUFA/Drivers/USB/Core/EndpointStream.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/AndroidAccessoryClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/../Core/USBMode.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/AudioClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/AudioClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../../USB.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../Core/StdDescriptors.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/CDCClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/CDCClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/HIDClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/HIDClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDParser.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDReportData.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/MassStorageClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MassStorageClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/MIDIClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MIDIClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/PrinterClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/RNDISClass.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/RNDISClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h \
- ../../LUFA/../LUFA/Drivers/USB/Class/StillImageClass.h \
- ../../LUFA/../LUFA/Drivers/Board/LEDs.h \
- ../../LUFA/../LUFA/Drivers/Board/../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h \
- ../../LUFA/../LUFA/Drivers/Board/AVR8/USBKEY/../../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/Peripheral/Serial.h \
- ../../LUFA/../LUFA/Drivers/Peripheral/../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h \
- ../../LUFA/../LUFA/Drivers/Peripheral/AVR8/../../../Common/Common.h \
- ../../LUFA/../LUFA/Drivers/Peripheral/AVR8/../../Misc/TerminalCodes.h \
- ../../LUFA/../LUFA/Drivers/Misc/RingBuffer.h \
- ../../LUFA/../LUFA/Drivers/Misc/../../Common/Common.h TM1001A.c pins.h \
- leds.c
-
-USBtoSerial.h:
-
-Descriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/USB.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Architectures.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/BoardTypes.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/ArchitectureSpecific.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/CompilerSpecific.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Attributes.h:
-
-Config/LUFAConfig.h:
-
-../../LUFA/../LUFA/Drivers/USB/../../Common/Endianness.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/USBInterrupt_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Device.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Endpoint_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/Device_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../StdRequestType.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBTask.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../EndpointStream.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/AVR8/../AVR8/EndpointStream_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdRequestType.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Events.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/ConfigDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/HostStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBController.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/USBInterrupt.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Device.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/Endpoint.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/DeviceStandardReq.h:
-
-../../LUFA/../LUFA/Drivers/USB/Core/EndpointStream.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/AndroidAccessoryClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/../Core/USBMode.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/AudioClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/AudioClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../../USB.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../Core/StdDescriptors.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/CDCClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/CDCClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/HIDClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/HIDClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDParser.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDReportData.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/HIDClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/MassStorageClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MassStorageClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/MIDIClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/MIDIClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/AudioClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/PrinterClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/RNDISClass.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/RNDISClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/Device/../Common/CDCClassCommon.h:
-
-../../LUFA/../LUFA/Drivers/USB/Class/StillImageClass.h:
-
-../../LUFA/../LUFA/Drivers/Board/LEDs.h:
-
-../../LUFA/../LUFA/Drivers/Board/../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h:
-
-../../LUFA/../LUFA/Drivers/Board/AVR8/USBKEY/../../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/Peripheral/Serial.h:
-
-../../LUFA/../LUFA/Drivers/Peripheral/../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h:
-
-../../LUFA/../LUFA/Drivers/Peripheral/AVR8/../../../Common/Common.h:
-
-../../LUFA/../LUFA/Drivers/Peripheral/AVR8/../../Misc/TerminalCodes.h:
-
-../../LUFA/../LUFA/Drivers/Misc/RingBuffer.h:
-
-../../LUFA/../LUFA/Drivers/Misc/../../Common/Common.h:
-
-TM1001A.c:
-
-pins.h:
-
-leds.c:
diff --git a/firmware/USBtoSerial.eep b/firmware/USBtoSerial.eep
deleted file mode 100644 (file)
index 1996e8f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-:00000001FF\r
diff --git a/firmware/USBtoSerial.elf b/firmware/USBtoSerial.elf
deleted file mode 100755 (executable)
index 1efaec7..0000000
Binary files a/firmware/USBtoSerial.elf and /dev/null differ
diff --git a/firmware/USBtoSerial.hex b/firmware/USBtoSerial.hex
deleted file mode 100644 (file)
index 1c1e020..0000000
+++ /dev/null
@@ -1,512 +0,0 @@
-:100000009AC00000B4C00000B2C00000B0C0000040\r
-:10001000AEC00000ACC00000AAC00000A8C0000034\r
-:10002000A6C00000A4C00000A2C000000C94B70944\r
-:100030000C945B0A9CC000009AC0000098C00000AD\r
-:1000400096C0000094C0000092C0000090C0000064\r
-:100050008EC000004BC100008AC0000069C30000D0\r
-:1000600086C0000084C0000082C0000080C0000084\r
-:100070007EC000007CC000007AC0000078C0000094\r
-:1000800076C0000074C0000072C0000070C00000A4\r
-:100090006EC000006CC000001201100102000008D8\r
-:1000A000EB034B2001000102DC0109023E000201CA\r
-:1000B00000C0320904000001020201000524001002\r
-:1000C0000104240206052406000107058203080036\r
-:1000D000FF09040100020A000000070504021000E5\r
-:1000E00005070583021000050403090418034400F2\r
-:1000F000650061006E002000430061006D00650036\r
-:100100007200610000002E034C00550046004100C3\r
-:1001100020005500530042002D00520053003200D1\r
-:100120003300320020004100640061007000740060\r
-:1001300065007200000011241FBECFEFD4E0DEBFC7\r
-:10014000CDBF11E0A0E0B1E0E4E9FFE102C005901D\r
-:100150000D92AE34B107D9F712E0AEE4B1E001C0C0\r
-:100160001D92A43DB107E1F7B3D60C94C80F48CF58\r
-:10017000FC01A081B1816C93808191810196918372\r
-:100180008083268137818217930721F484819581AA\r
-:10019000918380832FB7F894828593850196938706\r
-:1001A00082872FBF0895FC01A281B3818D91B38313\r
-:1001B000A28326813781A217B30721F424813581D8\r
-:1001C000338322839FB7F8942285338521503040B2\r
-:1001D000338722879FBF08952A982B982C982D98B3\r
-:1001E00045B190E09C0121703070220F331F220F27\r
-:1001F000331F422B45B945B19C01227030703595B3\r
-:10020000279573E0220F331F7A95E1F7422B45B90A\r
-:1002100045B19C012470307035952795359527950B\r
-:1002200054E0220F331F5A95E1F7422B45B925B10F\r
-:100230008870907043E0959587954A95E1F735E091\r
-:10024000880F991F3A95E1F7282B25B908952F9823\r
-:100250002E984798469845B190E09C013695322FEC\r
-:10026000222737952795422B45B945B19C0122702D\r
-:1002700030703595279576E0220F331F7A95E1F798\r
-:10028000422B45B948B19C012470307035952795B3\r
-:10029000359527953695322F222737952795422B6E\r
-:1002A00048B928B188709070B3E095958795BA9554\r
-:1002B000E1F7A6E0880F991FAA95E1F7282B28B946\r
-:1002C0000895FC012FB7F894718360837383628370\r
-:1002D0007583648360587F4F7783668380E890E0FE\r
-:1002E00091878087138612862FBF08951F920F92E1\r
-:1002F0000FB60F9211248F938091C6028F5F809367\r
-:10030000C6028F910F900FBE0F901F90189586B563\r
-:100310003091C60220E0280F311DC901089516BC96\r
-:100320001092C6020895DF92EF92FF920F931F93EF\r
-:10033000CF93DF9383E085BDF2DF509A5898E7DFD3\r
-:10034000BC0180E090E00E94810E20E030E84EE0A9\r
-:1003500053E40E94E90D87FDF2CF82E085BDDD24E4\r
-:10036000D39410E0DCDF509A5898D1DFBC0180E0D4\r
-:1003700090E00E94810E20E030E04CE852E40E94C0\r
-:10038000E90D87FDF2CF5098589AC1DFBC0180E09B\r
-:1003900090E00E94810E20E030E048E453E40E94A7\r
-:1003A000E90D87FDF2CF41C0C8E0D0E000E8E12EC2\r
-:1003B000FF248DEA92E0E80EF91EB1DF509A5898BA\r
-:1003C000F7018081802379F0A2DFBC0180E090E01A\r
-:1003D0000E94810E20E030E04CE852E40E94E90DDA\r
-:1003E00087FDF2CF0EC093DFBC0180E090E00E9459\r
-:1003F000810E20E030E042E053E40E94E90D87FDE9\r
-:10040000F2CF5098589A83DFBC0180E090E00E94C0\r
-:10041000810E20E030E048E453E40E94E90D87FDBE\r
-:10042000F2CF0695219749F61F5F1D1508F4BCCF42\r
-:1004300076DF509A58986BDFBC0180E090E00E9414\r
-:10044000810E20E030E042E053E40E94E90D87FD98\r
-:10045000F2CF5098589A5BDFBC0180E090E00E9498\r
-:10046000810E20E030E048E453E40E94E90D87FD6E\r
-:10047000F2CF8091AD028B3329F0893341F409E04A\r
-:10048000D02E02C0B3E0DB2E113009F46BCF47DF72\r
-:100490003EDFBC0180E090E00E94810E20E030E071\r
-:1004A0004AEF53E40E94330F18160CF442C04899E7\r
-:1004B000EFCF489BFECFCEEAD2E011E001C0182F6B\r
-:1004C0001882A8E0EA2EF12C00E829DF20DFBC0129\r
-:1004D00080E090E00E94810E20E030E048E453E4A8\r
-:1004E0000E94330F181614F4115024C04899EECF0F\r
-:1004F00016DF489BFECF0BDFBC0180E090E00E943E\r
-:10050000810E20E030E048EC52E40E94E90D87FFC4\r
-:1005100003C08881800F888306950894E108F1085C\r
-:10052000E114F10491F6812F8F5F2196893039F61D\r
-:1005300001C010E0812FDF91CF911F910F91FF90AB\r
-:10054000EF90DF9008955098589AEEE6F0E08081A1\r
-:100550008160808308958CE38093AD02E4DE809314\r
-:10056000C7028091C70208958BE38093AD0283E6B2\r
-:100570008093AE0281E08093AF02D5DE8FEF91EEE3\r
-:10058000A4E081509040A040E1F700C00000089531\r
-:100590008091C702882351F08091AE0286FF04C08B\r
-:1005A00081958F73819508958F73089580E00895E4\r
-:1005B0008091C702882351F08091AF0286FF04C06A\r
-:1005C00081958F73819508958F73089580E00895C4\r
-:1005D000219A209A569A0895299825B190E0817021\r
-:1005E0009070880F991F282B25B90895289895B1E8\r
-:1005F0008170892B85B908955E982BB190E0817048\r
-:100600009070F6E0880F991FFA95E1F7282B2BB927\r
-:10061000089554983D983C985C9A459A449A089558\r
-:1006200089B190E080719070A4E095958795AA9526\r
-:10063000E1F7089586B190E080729070B5E09595ED\r
-:100640008795BA95E1F7089586B190E08071907032\r
-:1006500024E0959587952A95E1F708951F938FB724\r
-:10066000F89420915C0130915D018FBF80915A0117\r
-:1006700090915B012817390751F088E291E00E94C0\r
-:10068000560DBC0197FD03C082E591E071DD2FB7E7\r
-:10069000F8948091E8019091E9012FBF009709F14A\r
-:1006A000209129012F702093E9002091E80020FF7C\r
-:1006B00018C08031910510F08FE090E0182F0FC026\r
-:1006C000E091E001F091E10188E291E060810E9417\r
-:1006D000E50C1150882329F48EED91E064DD11239F\r
-:1006E00079F788E291E00E943F0D0E94F90B1F917B\r
-:1006F000089584B7877F84BF88E10FB6F89480930C\r
-:100700006000109260000FBE90E080E80FB6F89491\r
-:1007100080936100909361000FBE1AC608950895FA\r
-:1007200088E291E00C94C10C88E291E00C94140CE6\r
-:100730001F920F920FB60F9211242F933F934F9356\r
-:100740005F936F937F938F939F93AF93BF93EF9339\r
-:10075000FF936091CE008EB3843019F48EED91E05A\r
-:1007600007DDFF91EF91BF91AF919F918F917F91A5\r
-:100770006F915F914F913F912F910F900FBE0F900E\r
-:100780001F9018958F929F92AF92BF92CF92DF9257\r
-:10079000EF92FF921F93FC01A18DA150A23028F48B\r
-:1007A000B0E0A95BBE4F1C9101C010E0808D82308B\r
-:1007B00009F41860828D873031F0883031F086304E\r
-:1007C00029F4126003C0146001C016601092C900C1\r
-:1007D0001092C8001092CA00C488D588E688F788AD\r
-:1007E000C701B60196958795779567950E94810E0A\r
-:1007F00020E034E244EF59E40E94850D4B015C0196\r
-:10080000C701B6010E94810E9B01AC01C501B40174\r
-:100810000E94ED0D20E030E040E85FE30E94840D8F\r
-:100820000E94550E7093CD006093CC001093CA00C7\r
-:1008300082E08093C80088E98093C9001F91FF90EF\r
-:10084000EF90DF90CF90BF90AF909F908F900895E2\r
-:10085000682F8EB3843019F48EED91E089CC089521\r
-:10086000EF92FF92CF93DF93E82EE7017E01F92EFE\r
-:10087000E70101C0EDDF89918823E1F7DF91CF9196\r
-:10088000FF90EF9008952F923F924F925F926F9258\r
-:100890007F928F929F92AF92BF92CF92DF92EF9210\r
-:1008A000FF920F931F93CF93DF936B017C01822FF5\r
-:1008B00090E0FA01E80FF91F1082122F1150412E1B\r
-:1008C000552447FC5094EA01C40DD51DAA24BB242D\r
-:1008D0004AE0642E712C812C912C1C010894210873\r
-:1008E000310822C0C114D104E104F10441F4C5016E\r
-:1008F000840D951D8215930514F4088308C0C70163\r
-:10090000B601A40193010E94700F605D6883C70166\r
-:10091000B601A40193010E94700F69017A01115080\r
-:1009200021970894A108B10817FFDCCFDF91CF9180\r
-:100930001F910F91FF90EF90DF90CF90BF90AF90FD\r
-:100940009F908F907F906F905F904F903F902F90EF\r
-:10095000089521E0181619060CF020E0892F881F51\r
-:100960008827881F281B822F08950F93242F77FF35\r
-:1009700003C0709561957F4F882777FD8095982FEC\r
-:1009800046EB52E000E37FDF86EB92E069DF0F91F8\r
-:100990000895FF920F931F93242FF62E172F77FFA2\r
-:1009A00003C0709561957F4F882777FD8095982FBC\r
-:1009B00046EB52E000E267DF8F2D912FCADF87FF01\r
-:1009C00002C08DE201C08BE243DF86EB92E048DF9C\r
-:1009D0001F910F91FF90089580E0FEDB80E037DCEF\r
-:1009E000229A239A249A259A279A269A3F9A3E9ADF\r
-:1009F00008950F931F93162F823050F4A82FB0E064\r
-:100A0000AA0FBB1FA75BBE4F2D913C91119702C04F\r
-:100A10002CEE30E0E82FF0E0812F992787FD9095AC\r
-:100A20000496EA55FD4F4081840F911D64E070E00B\r
-:100A30000E945D0F8083E82FF0E0ED5BFE4F0081A8\r
-:100A4000112311F0802F01C080E0F9010995802F5A\r
-:100A50001F910F9108950F931F932091A40230913D\r
-:100A6000A502280F391F3093A5022093A40280917C\r
-:100A7000A2029091A302860F971F9093A3028093E6\r
-:100A8000A202C90166DF082F11E0882309F410E0F3\r
-:100A900080E0602FAEDF602F772767FD7095209193\r
-:100AA000A4023091A502261B370B3093A502209398\r
-:100AB000A4028091A2029091A3024BDF082F811122\r
-:100AC0001F5F81E0602F95DF602F772767FD7095AE\r
-:100AD0002091A2023091A302261B370B3093A30270\r
-:100AE0002093A2028FE39CE90197F1F700C0000078\r
-:100AF000812F1F910F9108950F931F938C0168E12F\r
-:100B000070E00E945D0F882777FD8095982F43E065\r
-:100B100040DF8EE29DDEC80117FF03C090958195EE\r
-:100B20009F4F68E170E00E945D0F61EA71E00E94F2\r
-:100B3000370F6AE070E00E945D0F882777FD80958F\r
-:100B4000982F43E012DF1F910F91089580E091E00C\r
-:100B500087DE80914E0190914F01CEDF88E091E0D9\r
-:100B60007FDE8091500190915101C6DF82E191E0DA\r
-:100B700077CECF92DF92EF92FF920F931F93CF9396\r
-:100B8000DF932FB7F89480915C0190915D012FBFA6\r
-:100B9000009709F494C182E591E005DB182F8D30B0\r
-:100BA00019F08A3009F074C184E191E059DE809136\r
-:100BB0006D02E82FF0E0EE57FD4F108280936C023B\r
-:100BC00010926D0280918202873659F0873449F085\r
-:100BD0008D3649F08D3439F08A3739F08A3539F459\r
-:100BE00004C001E005C002E003C003E001C000E072\r
-:100BF00080918302883739F0883529F0893729F0C8\r
-:100C000011E0893519F010E001C011E0802F81500A\r
-:100C1000823008F06DC01092710210927002109232\r
-:100C20006F0210926E0210926B0210926A0272E0D2\r
-:100C3000F72EDD24D39460E3C62E54C0E0906B02FF\r
-:100C4000EE2049F4EF2DF0E0EE57FD4F80818D321C\r
-:100C500011F4DD24DA94CF2DD0E0FE01EE57FD4FE4\r
-:100C6000808180538A3028F4EE20D9F5F0926B020F\r
-:100C700038C0EE20B1F16E2D70E0C61BD70B6E5759\r
-:100C80007D4F82E792E0AE010E94AF0FCE58DD4F5C\r
-:100C9000188280916A028F5F80936A02813049F4E2\r
-:100CA00082E792E00E94920F90937102809370020B\r
-:100CB00016C08F2D8E19833040F4E82FF0E0EE58E7\r
-:100CC000FD4FC0828F5F8330C1F71092750282E7BB\r
-:100CD00092E00E94920F90936F0280936E021092A6\r
-:100CE0006B02F39480916C028F1508F0A7CF02C0BD\r
-:100CF000DD24D394023009F461C0033009F4BEC08E\r
-:100D0000013009F0C3C087E191E0AADD812F885A44\r
-:100D10009FDD80E29DDDCD2DDD27C7FDD095609163\r
-:100D2000700270917102CE010E94370FBC0180E009\r
-:100D300090E043E02EDE8EE28BDD60916E027091DA\r
-:100D40006F0280E090E043E010DE84E191E088DD16\r
-:100D500080916E0290916F026AE070E00E94370FFE\r
-:100D600060EA71E00E94490F9B01809170029091AE\r
-:100D7000710268E170E00E94370F280F391FCE0121\r
-:100D8000B9010E94370F112369F420914E0130916F\r
-:100D90004F01E82EE7017E01F92EE701C21BD30BBC\r
-:100DA000CE014FC02091500130915101E82EE70152\r
-:100DB0007E01F92EE701C21BD30B51C08DE191E0FA\r
-:100DC0004FDD812F885A44DD80E242DDCD2DDD27C5\r
-:100DD000C7FDD0956091700270917102CE010E94A2\r
-:100DE000370FBC0180E090E043E0D3DD8EE230DDE0\r
-:100DF00060916E0270916F0280E090E043E0B5DD9B\r
-:100E000084E191E02DDD80916E0290916F026AE0A5\r
-:100E100070E00E94370F60EA71E00E94490F9B0169\r
-:100E2000809170029091710268E170E00E94370F2A\r
-:100E3000280F391FCE01B9010E94370FEC01112391\r
-:100E400071F460E070E007DE80914E0190914F01F7\r
-:100E50008C0F9D1F90934F0180934E0117C080E02F\r
-:100E600090E0BE01F8DD80915001909151018C0F0E\r
-:100E70009D1F909351018093500108C010924F0123\r
-:100E800010924E0110925101109250015FDE17C076\r
-:100E900080916D02882319F483E291E0E1DC809176\r
-:100EA0006D02183011F4815006C0E82FF0E0EE57C3\r
-:100EB000FD4F10838F5F80936D02812FC9DCDF911E\r
-:100EC000CF911F910F91FF90EF90DF90CF900895F9\r
-:100ED0000F931F93DF93CF930F92CDB7DEB77CDDD7\r
-:100EE00077DB97DB06DC82E591E06EE571E0E9D91E\r
-:100EF0008EED91E06AEE71E0E4D9789424DB8FEF17\r
-:100F000099E6A8E181509040A040E1F700C00000C0\r
-:100F100078942ADB10E001C0182F82DB5DDB8ADBCE\r
-:100F200065DB92DB69DB9ADB24DE15DB41DB082F16\r
-:100F30002FDB0195402F552747FD509520914E01FD\r
-:100F400030914F01240F351F30934F0120934E01F4\r
-:100F50008195682F772767FD70958091500190915A\r
-:100F60005101860F971F9093510180935001CA0140\r
-:100F700072DD112389F2882379F68983E7DD89817F\r
-:100F8000CBCF923029F0933041F09130E9F417C083\r
-:100F90002EE330E0EAEAF0E01BC0813041F081301E\r
-:100FA00018F0823089F406C0E8EEF0E005C0ECEEFF\r
-:100FB000F0E002C0E6E0F1E0249130E009C022E177\r
-:100FC00030E0E8E9F0E004C020E030E0E0E0F0E00C\r
-:100FD000DA011196FC93EE93C9010895282F392F59\r
-:100FE000F9018091D2029091D3028617970718F4E5\r
-:100FF000BC0120E034C061157105D9F78091E8008B\r
-:101000008E778093E800F5CF8EB38823E9F18530A1\r
-:10101000B9F18091E80083FD35C08091E80082FD40\r
-:1010200029C08091E80080FF1AC08091F20090E012\r
-:1010300006C021912093F100615070400196611526\r
-:10104000710519F088309105A0F321E088309105F1\r
-:1010500009F020E08091E8008E778093E800611528\r
-:10106000710591F6222381F605C08EB3882361F0C5\r
-:10107000853061F08091E80082FFF7CF80E008952D\r
-:1010800083E0089581E0089582E0089583E0089563\r
-:10109000E82FF92F8091D2029091D30286179707FB\r
-:1010A00018F4BC0120E036C061157105D9F78091B4\r
-:1010B000E8008E778093E800F5CF8EB3882309F49B\r
-:1010C0003EC08530C1F18091E80083FD36C080913B\r
-:1010D000E80082FD2AC08091E80080FF1BC080915B\r
-:1010E000F20090E007C024912093F1003196615006\r
-:1010F000704001966115710519F08830910598F3DB\r
-:1011000021E08830910509F020E08091E8008E7799\r
-:101110008093E8006115710581F6222371F605C000\r
-:101120008EB3882361F0853061F08091E80082FF02\r
-:10113000F7CF80E0089583E0089581E0089582E08C\r
-:10114000089583E00895982F2CC0292F2F702093A5\r
-:10115000E900981739F07091EC002091ED00509162\r
-:10116000F00003C0242F762F50E021FF19C03091EA\r
-:10117000EB003E7F3093EB003091ED003D7F3093EC\r
-:10118000ED003091EB0031603093EB007093EC0098\r
-:101190002093ED005093F0002091EE0027FF08C04F\r
-:1011A0009F5F953090F28F708093E90081E0089501\r
-:1011B00080E00895EF92FF920F931F93CF93DF93F8\r
-:1011C000162FE82EE7017E01F92EE70100E02AC084\r
-:1011D0009881992329F16B81E981FA812C81892FEA\r
-:1011E0008F70853018F56295660F660F607C991FC9\r
-:1011F0009927991F692B223010F096E001C092E0E8\r
-:1012000028E030E040E003C04F5F220F331F2E176D\r
-:101210003F07D0F34295407F492B95DF882331F07B\r
-:101220000F5F25960117A0F281E001C080E0DF91F9\r
-:10123000CF911F910F91FF90EF9008958091CC0274\r
-:1012400087FF11C003C08EB38823B1F08091E800FE\r
-:1012500082FFF9CF8091E8008B778093E8000895B2\r
-:101260008EB3882349F08091E80080FFF9CF809108\r
-:10127000E8008E778093E80008958091E4009091D3\r
-:10128000E50044E62091EC0020FF25C02091E80015\r
-:1012900020FD15C02EB32223A1F02530A1F020910E\r
-:1012A000EB0025FD12C02091E4003091E5002817E5\r
-:1012B000390741F3442359F04150C901E3CF80E09D\r
-:1012C000089582E0089583E0089581E0089584E020\r
-:1012D000089580E008952091E80022FFDBCFF9CF48\r
-:1012E00040D042D08091D8008F778093D8008091F1\r
-:1012F000D80080688093D8008091D8008F7D80933B\r
-:10130000D80084E089BD86E089BD09B400FEFDCF28\r
-:101310001EBA1092C8021092CA021092C90280E04E\r
-:1013200060E042E010DF8091E1008E7F8093E10079\r
-:101330008091E20081608093E2008091E200886009\r
-:101340008093E2008091E0008E7F8093E00008951A\r
-:10135000E3E6F0E080818E7F808381E08093CB02A2\r
-:10136000BFCF1092E20008951092E10008951F92FD\r
-:101370000F920FB60F9211242F933F934F935F93C9\r
-:101380006F937F938F939F93AF93BF93EF93FF934D\r
-:101390008091E10082FF0AC08091E20082FF06C0D6\r
-:1013A0008091E1008B7F8093E10022D28091E10067\r
-:1013B00080FF16C08091E20080FF12C08091E200A1\r
-:1013C0008E7F8093E2008091E20080618093E20052\r
-:1013D0008091D80080628093D80019BC1EBA9FD932\r
-:1013E0008091E10084FF2CC08091E20084FF28C03E\r
-:1013F00084E089BD86E089BD09B400FEFDCF8091FF\r
-:10140000D8008F7D8093D8008091E1008F7E8093FB\r
-:10141000E1008091E2008F7E8093E2008091E20003\r
-:1014200081608093E2008091C802882321F480913A\r
-:10143000E30087FF02C084E001C081E08EBB6ED96B\r
-:101440008091E10083FF26C08091E20083FF22C0EB\r
-:101450008091E100877F8093E10082E08EBB109253\r
-:10146000C8028091E1008E7F8093E1008091E200CC\r
-:101470008E7F8093E2008091E20080618093E200A1\r
-:1014800080E060E042E05FDE8091F0008860809361\r
-:10149000F000AED1FF91EF91BF91AF919F918F91ED\r
-:1014A0007F916F915F914F913F912F910F900FBE60\r
-:1014B0000F901F9018951F920F920FB60F92112444\r
-:1014C0001F932F933F934F935F936F937F938F93CC\r
-:1014D0009F93AF93BF93EF93FF931091E9001F7019\r
-:1014E0008091EC001092E9008091F000877F80935A\r
-:1014F000F00078941BD01092E9008091F000886091\r
-:101500008093F0001093E900FF91EF91BF91AF91AC\r
-:101510009F918F917F916F915F914F913F912F910B\r
-:101520001F910F900FBE0F901F9018951F93DF9380\r
-:10153000CF93CDB7DEB7AC970FB6F894DEBF0FBE32\r
-:10154000CDBFECECF2E08091F100819322E0E43D2C\r
-:10155000F207C9F7E9D88091E80083FF31C1809193\r
-:10156000CC022091CD02253009F484C0263040F40D\r
-:101570002130A1F1213070F0233009F021C12EC0BB\r
-:10158000283009F4EFC0293009F4FEC0263009F0F4\r
-:1015900017C192C0803821F0823809F011C108C00B\r
-:1015A0008091C9029091CA02992371F082600CC0A7\r
-:1015B0008091D0028F708093E9009091EB0081E0E0\r
-:1015C00095FF80E01092E9009091E800977F90935A\r
-:1015D000E8008093F1001092F100CFC0882319F049\r
-:1015E000823009F0EDC090E08F719070009729F083\r
-:1015F0008230910509F0E4C00BC08091CE028130A9\r
-:1016000009F0DEC0233009F080E08093CA022CC0CC\r
-:101610008091CE02882341F52091D0022F7009F4E9\r
-:10162000CFC02093E9008091EB0080FF1DC0809126\r
-:10163000CD02833021F48091EB00806213C0809151\r
-:10164000EB0080618093EB0081E090E002C0880FA6\r
-:10165000991F2A95E2F78093EA001092EA008091A0\r
-:10166000EB0088608093EB001092E9008091E80025\r
-:10167000877F86C0882309F0A3C01091CE021F7710\r
-:101680008091E3008078812B8093E3008091E800D3\r
-:10169000877F8093E800D2DD8091E80080FFFCCF57\r
-:1016A0008091E30080688093E300112311F083E0D0\r
-:1016B00001C082E08EBB84C08058823008F080C0B8\r
-:1016C0008091CE029091CF0223E08C3D920791F55C\r
-:1016D00083E08C838AE28B835FB7F894DE011596F2\r
-:1016E00080E090E04EE061E2E42FF0E0609357008C\r
-:1016F000E49180FF03C0E295EF704F5FEF702E2FF3\r
-:1017000030E0EA3018F0295C3F4F02C0205D3F4FC7\r
-:101710002D933D9301968431910531F75FBF809100\r
-:10172000E800877F8093E800CE0103966AE270E0CC\r
-:1017300055DC12C06091D002AE014F5F5F4F21DCDB\r
-:10174000BC01009709F43CC08091E800877F80933A\r
-:10175000E80089819A819CDC8091E8008B778093F6\r
-:10176000E8002EC0803861F58091E800877F809383\r
-:10177000E8008091C8028093F1008091E8008E77A4\r
-:101780008093E8005BDD1CC08823D1F49091CE02E9\r
-:101790009230B0F48091E800877F8093E8009093C6\r
-:1017A000C8024CDD8091C802882321F48091E300B7\r
-:1017B00087FF02C084E001C081E08EBB0E949003DD\r
-:1017C0008091E80083FF0AC08091E800877F8093C2\r
-:1017D000E8008091EB0080628093EB00AC960FB63E\r
-:1017E000F894DEBF0FBECDBFCF91DF911F9108955A\r
-:1017F00008951F938EB38823A9F08091E9008F701C\r
-:101800009091EC0090FF02C010E801C010E0182B8E\r
-:101810001092E9008091E80083FF01C087DE1F700D\r
-:101820001093E9001F910895CF93DF93EC0180910D\r
-:10183000E80083FFA3C0888190E02091D00230911E\r
-:10184000D1022817390709F099C08091CD02813261\r
-:1018500069F0823220F4803209F090C03CC08232BC\r
-:1018600009F46BC0833209F089C07AC08091CC0240\r
-:10187000813A09F083C08091E800877F8093E80077\r
-:101880008091E80080FFFCCF8C899D89AE89BF895B\r
-:101890008093F100292F3A2F4B2F55272093F100E9\r
-:1018A0009D01442755272093F1008B2F9927AA27C4\r
-:1018B000BB278093F100888D8093F100898D809300\r
-:1018C000F1008A8D8093F1008091E8008E778093FB\r
-:1018D000E800B4DC53C08091CC02813209F04EC0E4\r
-:1018E0008091E800877F8093E80004C08EB388234E\r
-:1018F00009F444C08091E80082FFF8CF3091F100F4\r
-:101900002091F1009091F1008091F1003C8B2D8BA2\r
-:101910009E8B8F8B8091F100888F8091F100898F51\r
-:101920008091F1008A8F8091E8008B778093E800A6\r
-:1019300085DCCE010E94C20321C08091CC0281329D\r
-:10194000E9F48091E800877F8093E80077DC80915C\r
-:10195000CE029091CF02998B888BCE01D4D00EC04D\r
-:101960008091CC02813251F48091E800877F80938E\r
-:10197000E80064DCCE016091CE02C5D0DF91CF914A\r
-:101980000895CF93DF93EC014096FC018BE0DF01DB\r
-:101990001D928A95E9F782E08C83898783E08E87A0\r
-:1019A000CE01019661E006DC882359F0CE0106964F\r
-:1019B00061E000DC882329F0CE010B9661E0FADBC0\r
-:1019C00001C080E0DF91CF910895DF93CF930F9214\r
-:1019D000CDB7DEB7FC018EB38430F9F424893589A4\r
-:1019E000468957892115310541055105B1F081819D\r
-:1019F0008F708093E9008091E80085FD0AC0809196\r
-:101A0000E8008E778093E800698337DC698188235A\r
-:101A100029F46093F10080E001C082E00F90CF9143\r
-:101A2000DF910895FC018EB3843019F5248935893E\r
-:101A3000468957892115310541055105D1F081812C\r
-:101A40008F708093E9008091F2008823A1F090913B\r
-:101A5000E8008091E8008E778093E80095FD0DC046\r
-:101A60000CDC882359F49091E8009E779093E8006D\r
-:101A7000089582E0089580E0089580E008952EB3EF\r
-:101A8000243099F4FC012489358946895789211528\r
-:101A900031054105510549F021812F702093E9005E\r
-:101AA0002091E80020FF01C0BDCF0895FC018EB356\r
-:101AB000843029F5248935894689578921153105CE\r
-:101AC00041055105E1F086818F708093E900809196\r
-:101AD000E80082FF14C08091F200882321F0209159\r
-:101AE000F10030E002C02FEF3FEF8091F200882339\r
-:101AF00041F48091E8008B778093E80002C02FEFDB\r
-:101B00003FEFC901089508955058BB27AA270ED06A\r
-:101B100070C161D130F066D120F031F49F3F11F4F3\r
-:101B20001EF456C10EF4E095E7FB4CC1E92F72D1CB\r
-:101B300080F3BA17620773078407950718F071F4EA\r
-:101B40009EF58AC10EF4E0950B2EBA2FA02D0B0145\r
-:101B5000B90190010C01CA01A0011124FF27591BF2\r
-:101B600099F0593F50F4503E68F11A16F040A22FF8\r
-:101B7000232F342F4427585FF3CF46953795279569\r
-:101B8000A795F0405395C9F77EF41F16BA0B620B68\r
-:101B9000730B840BBAF09150A1F0FF0FBB1F661FAF\r
-:101BA000771F881FC2F70EC0BA0F621F731F841FF2\r
-:101BB00048F4879577956795B795F7959E3F08F018\r
-:101BC000B3CF9395880F08F09927EE0F97958795D7\r
-:101BD0000895D4D008F481E008950CD00AC102D150\r
-:101BE00040F0F9D030F021F45F3F19F0EBC0511113\r
-:101BF00034C1EEC00FD198F39923C9F35523B1F343\r
-:101C0000951B550BBB27AA2762177307840738F06B\r
-:101C10009F5F5F4F220F331F441FAA1FA9F333D0CA\r
-:101C20000E2E3AF0E0E830D091505040E695001C7E\r
-:101C3000CAF729D0FE2F27D0660F771F881FBB1F3A\r
-:101C4000261737074807AB07B0E809F0BB0B802D14\r
-:101C5000BF01FF2793585F4F2AF09E3F510568F060\r
-:101C6000B1C0FBC05F3FECF3983EDCF386957795FF\r
-:101C70006795B795F7959F5FC9F7880F911D969562\r
-:101C8000879597F90895E1E0660F771F881FBB1FBE\r
-:101C9000621773078407BA0720F0621B730B840B6B\r
-:101CA000BA0BEE1F88F7E0950895BCD088F09F57D7\r
-:101CB00090F0B92F9927B751A0F0D1F0660F771F98\r
-:101CC000881F991F1AF0BA95C9F712C0B13081F078\r
-:101CD000C3D0B1E00895C0C0672F782F8827B85FC0\r
-:101CE00039F0B93FCCF3869577956795B395D9F7D9\r
-:101CF0003EF490958095709561957F4F8F4F9F4FE3\r
-:101D00000895E89409C097FB3EF4909580957095EE\r
-:101D100061957F4F8F4F9F4F9923A9F0F92F96E937\r
-:101D2000BB279395F695879577956795B795F111AC\r
-:101D3000F8CFFAF4BB0F11F460FF1BC06F5F7F4F49\r
-:101D40008F4F9F4F16C0882311F096E911C077235B\r
-:101D500021F09EE8872F762F05C0662371F096E864\r
-:101D6000862F70E060E02AF09A95660F771F881F33\r
-:101D7000DAF7880F9695879597F90895990F0008D7\r
-:101D8000550FAA0BE0E8FEEF16161706E807F9074D\r
-:101D9000C0F012161306E407F50798F0621B730BE8\r
-:101DA000840B950B39F40A2661F0232B242B252B69\r
-:101DB00021F408950A2609F4A140A6958FEF811D0C\r
-:101DC000811D089597F99F6780E870E060E00895AD\r
-:101DD0009FEF80EC089500240A9416161706180643\r
-:101DE0000906089500240A9412161306140605061F\r
-:101DF0000895092E0394000C11F4882352F0BB0FB0\r
-:101E000040F4BF2B11F460FF04C06F5F7F4F8F4F12\r
-:101E10009F4F089557FD9058440F551F59F05F3F4D\r
-:101E200071F04795880F97FB991F61F09F3F79F0FC\r
-:101E300087950895121613061406551FF2CF46957E\r
-:101E4000F1DF08C0161617061806991FF1CF869500\r
-:101E50007105610508940895E894BB2766277727E4\r
-:101E6000CB0197F908958ADF08F48FEF089555277D\r
-:101E7000002480FF02C0060E571F660F771F6115F2\r
-:101E8000710521F096958795009799F7952F802DEC\r
-:101E90000895AA1BBB1B51E107C0AA1FBB1FA617B1\r
-:101EA000B70710F0A61BB70B881F991F5A95A9F703\r
-:101EB00080959095BC01CD01089597FB092E0726CA\r
-:101EC0000AD077FD04D0E5DF06D000201AF4709523\r
-:101ED00061957F4F0895F6F7909581959F4F0895EE\r
-:101EE000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F1E\r
-:101EF000EE1FFF1FA217B307E407F50720F0A21B90\r
-:101F0000B30BE40BF50B661F771F881F991F1A94FC\r
-:101F100069F760957095809590959B01AC01BD0126\r
-:101F2000CF010895FC0188279927E8942191203258\r
-:101F3000E9F3293010F02E30C8F32B3239F02D326E\r
-:101F400031F4689403C01AD0820F911D219120535F\r
-:101F50002A30C8F31EF4909581959F4F0895FB0198\r
-:101F6000DC014150504048F001900D920020C9F72B\r
-:101F700001C01D9241505040E0F70895BC01880F08\r
-:101F8000991F880F991F860F971F880F991F089513\r
-:041F9000F894FFCFF3\r
-:101F9400785F706F733A20002020795F706F733A16\r
-:101FA40020000D000D0A00474F544F20004D4F569E\r
-:101FB4004520000D0A2420000083100000010410B5\r
-:101FC4000000018208000001000000000000000081\r
-:0E1FD4000000000A0905063020EC002701007D\r
-:00000001FF\r
diff --git a/firmware/USBtoSerial.lss b/firmware/USBtoSerial.lss
deleted file mode 100644 (file)
index 531cab1..0000000
+++ /dev/null
@@ -1,7045 +0,0 @@
-
-USBtoSerial.elf:     file format elf32-avr
-
-Sections:
-Idx Name          Size      VMA       LMA       File off  Algn
-  0 .data         0000004e  00800100  00001f94  00002028  2**0
-                  CONTENTS, ALLOC, LOAD, DATA
-  1 .text         00001f94  00000000  00000000  00000094  2**1
-                  CONTENTS, ALLOC, LOAD, READONLY, CODE
-  2 .bss          00000186  0080014e  0080014e  00002076  2**0
-                  ALLOC
-  3 .stab         0000255c  00000000  00000000  00002078  2**2
-                  CONTENTS, READONLY, DEBUGGING
-  4 .stabstr      000004d5  00000000  00000000  000045d4  2**0
-                  CONTENTS, READONLY, DEBUGGING
-  5 .debug_aranges 000005e0  00000000  00000000  00004aa9  2**0
-                  CONTENTS, READONLY, DEBUGGING
-  6 .debug_pubnames 00000fa4  00000000  00000000  00005089  2**0
-                  CONTENTS, READONLY, DEBUGGING
-  7 .debug_info   00009390  00000000  00000000  0000602d  2**0
-                  CONTENTS, READONLY, DEBUGGING
-  8 .debug_abbrev 000021fc  00000000  00000000  0000f3bd  2**0
-                  CONTENTS, READONLY, DEBUGGING
-  9 .debug_line   00007d90  00000000  00000000  000115b9  2**0
-                  CONTENTS, READONLY, DEBUGGING
- 10 .debug_frame  00000980  00000000  00000000  0001934c  2**2
-                  CONTENTS, READONLY, DEBUGGING
- 11 .debug_str    00003dc5  00000000  00000000  00019ccc  2**0
-                  CONTENTS, READONLY, DEBUGGING
- 12 .debug_loc    00004b8d  00000000  00000000  0001da91  2**0
-                  CONTENTS, READONLY, DEBUGGING
- 13 .debug_pubtypes 00001111  00000000  00000000  0002261e  2**0
-                  CONTENTS, READONLY, DEBUGGING
- 14 .debug_ranges 00000868  00000000  00000000  0002372f  2**0
-                  CONTENTS, READONLY, DEBUGGING
-
-Disassembly of section .text:
-
-00000000 <__vectors>:
-                       BytesInTransfer++;
-               }
-       }
-
-       return ENDPOINT_RWSTREAM_NoError;
-}
-       0:      9a c0           rjmp    .+308           ; 0x136 <__ctors_end>
-       #if defined(USB_CAN_BE_BOTH)
-       USB_CurrentMode = USB_MODE_None;
-       #endif
-
-       USB_IsInitialized = false;
-}
-       2:      00 00           nop
-       4:      b4 c0           rjmp    .+360           ; 0x16e <__bad_interrupt>
-       6:      00 00           nop
-       8:      b2 c0           rjmp    .+356           ; 0x16e <__bad_interrupt>
-       a:      00 00           nop
-       c:      b0 c0           rjmp    .+352           ; 0x16e <__bad_interrupt>
-       e:      00 00           nop
-      10:      ae c0           rjmp    .+348           ; 0x16e <__bad_interrupt>
-      12:      00 00           nop
-      14:      ac c0           rjmp    .+344           ; 0x16e <__bad_interrupt>
-      16:      00 00           nop
-      18:      aa c0           rjmp    .+340           ; 0x16e <__bad_interrupt>
-      1a:      00 00           nop
-      1c:      a8 c0           rjmp    .+336           ; 0x16e <__bad_interrupt>
-      1e:      00 00           nop
-      20:      a6 c0           rjmp    .+332           ; 0x16e <__bad_interrupt>
-      22:      00 00           nop
-      24:      a4 c0           rjmp    .+328           ; 0x16e <__bad_interrupt>
-      26:      00 00           nop
-      28:      a2 c0           rjmp    .+324           ; 0x16e <__bad_interrupt>
-      2a:      00 00           nop
-      2c:      0c 94 b7 09     jmp     0x136e  ; 0x136e <__vector_11>
-      30:      0c 94 5b 0a     jmp     0x14b6  ; 0x14b6 <__vector_12>
-      34:      9c c0           rjmp    .+312           ; 0x16e <__bad_interrupt>
-      36:      00 00           nop
-      38:      9a c0           rjmp    .+308           ; 0x16e <__bad_interrupt>
-      3a:      00 00           nop
-      3c:      98 c0           rjmp    .+304           ; 0x16e <__bad_interrupt>
-      3e:      00 00           nop
-      40:      96 c0           rjmp    .+300           ; 0x16e <__bad_interrupt>
-      42:      00 00           nop
-      44:      94 c0           rjmp    .+296           ; 0x16e <__bad_interrupt>
-      46:      00 00           nop
-      48:      92 c0           rjmp    .+292           ; 0x16e <__bad_interrupt>
-      4a:      00 00           nop
-      4c:      90 c0           rjmp    .+288           ; 0x16e <__bad_interrupt>
-      4e:      00 00           nop
-      50:      8e c0           rjmp    .+284           ; 0x16e <__bad_interrupt>
-      52:      00 00           nop
-      54:      4b c1           rjmp    .+662           ; 0x2ec <__vector_21>
-      56:      00 00           nop
-      58:      8a c0           rjmp    .+276           ; 0x16e <__bad_interrupt>
-      5a:      00 00           nop
-      5c:      69 c3           rjmp    .+1746          ; 0x730 <__vector_23>
-      5e:      00 00           nop
-      60:      86 c0           rjmp    .+268           ; 0x16e <__bad_interrupt>
-      62:      00 00           nop
-      64:      84 c0           rjmp    .+264           ; 0x16e <__bad_interrupt>
-      66:      00 00           nop
-      68:      82 c0           rjmp    .+260           ; 0x16e <__bad_interrupt>
-      6a:      00 00           nop
-      6c:      80 c0           rjmp    .+256           ; 0x16e <__bad_interrupt>
-      6e:      00 00           nop
-      70:      7e c0           rjmp    .+252           ; 0x16e <__bad_interrupt>
-      72:      00 00           nop
-      74:      7c c0           rjmp    .+248           ; 0x16e <__bad_interrupt>
-      76:      00 00           nop
-      78:      7a c0           rjmp    .+244           ; 0x16e <__bad_interrupt>
-      7a:      00 00           nop
-      7c:      78 c0           rjmp    .+240           ; 0x16e <__bad_interrupt>
-      7e:      00 00           nop
-      80:      76 c0           rjmp    .+236           ; 0x16e <__bad_interrupt>
-      82:      00 00           nop
-      84:      74 c0           rjmp    .+232           ; 0x16e <__bad_interrupt>
-      86:      00 00           nop
-      88:      72 c0           rjmp    .+228           ; 0x16e <__bad_interrupt>
-      8a:      00 00           nop
-      8c:      70 c0           rjmp    .+224           ; 0x16e <__bad_interrupt>
-      8e:      00 00           nop
-      90:      6e c0           rjmp    .+220           ; 0x16e <__bad_interrupt>
-      92:      00 00           nop
-      94:      6c c0           rjmp    .+216           ; 0x16e <__bad_interrupt>
-      96:      00 00           nop
-
-00000098 <DeviceDescriptor>:
-      98:      12 01 10 01 02 00 00 08 eb 03 4b 20 01 00 01 02     ..........K ....
-      a8:      dc 01                                               ..
-
-000000aa <ConfigurationDescriptor>:
-      aa:      09 02 3e 00 02 01 00 c0 32 09 04 00 00 01 02 02     ..>.....2.......
-      ba:      01 00 05 24 00 10 01 04 24 02 06 05 24 06 00 01     ...$....$...$...
-      ca:      07 05 82 03 08 00 ff 09 04 01 00 02 0a 00 00 00     ................
-      da:      07 05 04 02 10 00 05 07 05 83 02 10 00 05           ..............
-
-000000e8 <LanguageString>:
-      e8:      04 03 09 04                                         ....
-
-000000ec <ManufacturerString>:
-      ec:      18 03 44 00 65 00 61 00 6e 00 20 00 43 00 61 00     ..D.e.a.n. .C.a.
-      fc:      6d 00 65 00 72 00 61 00 00 00                       m.e.r.a...
-
-00000106 <ProductString>:
-     106:      2e 03 4c 00 55 00 46 00 41 00 20 00 55 00 53 00     ..L.U.F.A. .U.S.
-     116:      42 00 2d 00 52 00 53 00 32 00 33 00 32 00 20 00     B.-.R.S.2.3.2. .
-     126:      41 00 64 00 61 00 70 00 74 00 65 00 72 00 00 00     A.d.a.p.t.e.r...
-
-00000136 <__ctors_end>:
-     136:      11 24           eor     r1, r1
-     138:      1f be           out     0x3f, r1        ; 63
-     13a:      cf ef           ldi     r28, 0xFF       ; 255
-     13c:      d4 e0           ldi     r29, 0x04       ; 4
-     13e:      de bf           out     0x3e, r29       ; 62
-     140:      cd bf           out     0x3d, r28       ; 61
-
-00000142 <__do_copy_data>:
-     142:      11 e0           ldi     r17, 0x01       ; 1
-     144:      a0 e0           ldi     r26, 0x00       ; 0
-     146:      b1 e0           ldi     r27, 0x01       ; 1
-     148:      e4 e9           ldi     r30, 0x94       ; 148
-     14a:      ff e1           ldi     r31, 0x1F       ; 31
-     14c:      02 c0           rjmp    .+4             ; 0x152 <__do_copy_data+0x10>
-     14e:      05 90           lpm     r0, Z+
-     150:      0d 92           st      X+, r0
-     152:      ae 34           cpi     r26, 0x4E       ; 78
-     154:      b1 07           cpc     r27, r17
-     156:      d9 f7           brne    .-10            ; 0x14e <__do_copy_data+0xc>
-
-00000158 <__do_clear_bss>:
-     158:      12 e0           ldi     r17, 0x02       ; 2
-     15a:      ae e4           ldi     r26, 0x4E       ; 78
-     15c:      b1 e0           ldi     r27, 0x01       ; 1
-     15e:      01 c0           rjmp    .+2             ; 0x162 <.do_clear_bss_start>
-
-00000160 <.do_clear_bss_loop>:
-     160:      1d 92           st      X+, r1
-
-00000162 <.do_clear_bss_start>:
-     162:      a4 3d           cpi     r26, 0xD4       ; 212
-     164:      b1 07           cpc     r27, r17
-     166:      e1 f7           brne    .-8             ; 0x160 <.do_clear_bss_loop>
-     168:      b3 d6           rcall   .+3430          ; 0xed0 <main>
-     16a:      0c 94 c8 0f     jmp     0x1f90  ; 0x1f90 <_exit>
-
-0000016e <__bad_interrupt>:
-     16e:      48 cf           rjmp    .-368           ; 0x0 <__vectors>
-
-00000170 <RingBuffer_Insert>:
-                *  \param[in]     Data    Data element to insert into the buffer.
-                */
-               static inline void RingBuffer_Insert(RingBuffer_t* Buffer, const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
-               static inline void RingBuffer_Insert(RingBuffer_t* Buffer, const uint8_t Data)
-               {
-                       GCC_FORCE_POINTER_ACCESS(Buffer);
-     170:      fc 01           movw    r30, r24
-
-                       *Buffer->In = Data;
-     172:      a0 81           ld      r26, Z
-     174:      b1 81           ldd     r27, Z+1        ; 0x01
-     176:      6c 93           st      X, r22
-
-                       if (++Buffer->In == Buffer->End)
-     178:      80 81           ld      r24, Z
-     17a:      91 81           ldd     r25, Z+1        ; 0x01
-     17c:      01 96           adiw    r24, 0x01       ; 1
-     17e:      91 83           std     Z+1, r25        ; 0x01
-     180:      80 83           st      Z, r24
-     182:      26 81           ldd     r18, Z+6        ; 0x06
-     184:      37 81           ldd     r19, Z+7        ; 0x07
-     186:      82 17           cp      r24, r18
-     188:      93 07           cpc     r25, r19
-     18a:      21 f4           brne    .+8             ; 0x194 <RingBuffer_Insert+0x24>
-                         Buffer->In = Buffer->Start;
-     18c:      84 81           ldd     r24, Z+4        ; 0x04
-     18e:      95 81           ldd     r25, Z+5        ; 0x05
-     190:      91 83           std     Z+1, r25        ; 0x01
-     192:      80 83           st      Z, r24
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     194:      2f b7           in      r18, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     196:      f8 94           cli
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Buffer->Count++;
-     198:      82 85           ldd     r24, Z+10       ; 0x0a
-     19a:      93 85           ldd     r25, Z+11       ; 0x0b
-     19c:      01 96           adiw    r24, 0x01       ; 1
-     19e:      93 87           std     Z+11, r25       ; 0x0b
-     1a0:      82 87           std     Z+10, r24       ; 0x0a
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     1a2:      2f bf           out     0x3f, r18       ; 63
-
-                       SetGlobalInterruptMask(CurrentGlobalInt);
-               }
-     1a4:      08 95           ret
-
-000001a6 <RingBuffer_Remove>:
-                *  \return Next data element stored in the buffer.
-                */
-               static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) ATTR_NON_NULL_PTR_ARG(1);
-               static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer)
-               {
-                       GCC_FORCE_POINTER_ACCESS(Buffer);
-     1a6:      fc 01           movw    r30, r24
-
-                       uint8_t Data = *Buffer->Out;
-     1a8:      a2 81           ldd     r26, Z+2        ; 0x02
-     1aa:      b3 81           ldd     r27, Z+3        ; 0x03
-     1ac:      8d 91           ld      r24, X+
-
-                       if (++Buffer->Out == Buffer->End)
-     1ae:      b3 83           std     Z+3, r27        ; 0x03
-     1b0:      a2 83           std     Z+2, r26        ; 0x02
-     1b2:      26 81           ldd     r18, Z+6        ; 0x06
-     1b4:      37 81           ldd     r19, Z+7        ; 0x07
-     1b6:      a2 17           cp      r26, r18
-     1b8:      b3 07           cpc     r27, r19
-     1ba:      21 f4           brne    .+8             ; 0x1c4 <RingBuffer_Remove+0x1e>
-                         Buffer->Out = Buffer->Start;
-     1bc:      24 81           ldd     r18, Z+4        ; 0x04
-     1be:      35 81           ldd     r19, Z+5        ; 0x05
-     1c0:      33 83           std     Z+3, r19        ; 0x03
-     1c2:      22 83           std     Z+2, r18        ; 0x02
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     1c4:      9f b7           in      r25, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     1c6:      f8 94           cli
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Buffer->Count--;
-     1c8:      22 85           ldd     r18, Z+10       ; 0x0a
-     1ca:      33 85           ldd     r19, Z+11       ; 0x0b
-     1cc:      21 50           subi    r18, 0x01       ; 1
-     1ce:      30 40           sbci    r19, 0x00       ; 0
-     1d0:      33 87           std     Z+11, r19       ; 0x0b
-     1d2:      22 87           std     Z+10, r18       ; 0x0a
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     1d4:      9f bf           out     0x3f, r25       ; 63
-
-                       SetGlobalInterruptMask(CurrentGlobalInt);
-
-                       return Data;
-               }
-     1d6:      08 95           ret
-
-000001d8 <set_x>:
-
-uint8_t phase_pattern[4] = { 0b00001010, 0b00001001, 0b00000101, 0b00000110};
-    
-    
-void set_x(uint8_t byte) {
-  PORTX0 &= ~(1<<X0);
-     1d8:      2a 98           cbi     0x05, 2 ; 5
-  PORTX1 &= ~(1<<X1);
-     1da:      2b 98           cbi     0x05, 3 ; 5
-  PORTX2 &= ~(1<<X2);
-     1dc:      2c 98           cbi     0x05, 4 ; 5
-  PORTX3 &= ~(1<<X3);
-     1de:      2d 98           cbi     0x05, 5 ; 5
-
-  PORTX0 |= ((byte & (1<<0))>>0)<<X0;
-     1e0:      45 b1           in      r20, 0x05       ; 5
-     1e2:      90 e0           ldi     r25, 0x00       ; 0
-     1e4:      9c 01           movw    r18, r24
-     1e6:      21 70           andi    r18, 0x01       ; 1
-     1e8:      30 70           andi    r19, 0x00       ; 0
-     1ea:      22 0f           add     r18, r18
-     1ec:      33 1f           adc     r19, r19
-     1ee:      22 0f           add     r18, r18
-     1f0:      33 1f           adc     r19, r19
-     1f2:      42 2b           or      r20, r18
-     1f4:      45 b9           out     0x05, r20       ; 5
-  PORTX1 |= ((byte & (1<<1))>>1)<<X1;
-     1f6:      45 b1           in      r20, 0x05       ; 5
-     1f8:      9c 01           movw    r18, r24
-     1fa:      22 70           andi    r18, 0x02       ; 2
-     1fc:      30 70           andi    r19, 0x00       ; 0
-     1fe:      35 95           asr     r19
-     200:      27 95           ror     r18
-     202:      73 e0           ldi     r23, 0x03       ; 3
-     204:      22 0f           add     r18, r18
-     206:      33 1f           adc     r19, r19
-     208:      7a 95           dec     r23
-     20a:      e1 f7           brne    .-8             ; 0x204 <set_x+0x2c>
-     20c:      42 2b           or      r20, r18
-     20e:      45 b9           out     0x05, r20       ; 5
-  PORTX2 |= ((byte & (1<<2))>>2)<<X2;
-     210:      45 b1           in      r20, 0x05       ; 5
-     212:      9c 01           movw    r18, r24
-     214:      24 70           andi    r18, 0x04       ; 4
-     216:      30 70           andi    r19, 0x00       ; 0
-     218:      35 95           asr     r19
-     21a:      27 95           ror     r18
-     21c:      35 95           asr     r19
-     21e:      27 95           ror     r18
-     220:      54 e0           ldi     r21, 0x04       ; 4
-     222:      22 0f           add     r18, r18
-     224:      33 1f           adc     r19, r19
-     226:      5a 95           dec     r21
-     228:      e1 f7           brne    .-8             ; 0x222 <set_x+0x4a>
-     22a:      42 2b           or      r20, r18
-     22c:      45 b9           out     0x05, r20       ; 5
-  PORTX3 |= ((byte & (1<<3))>>3)<<X3;
-     22e:      25 b1           in      r18, 0x05       ; 5
-     230:      88 70           andi    r24, 0x08       ; 8
-     232:      90 70           andi    r25, 0x00       ; 0
-     234:      43 e0           ldi     r20, 0x03       ; 3
-     236:      95 95           asr     r25
-     238:      87 95           ror     r24
-     23a:      4a 95           dec     r20
-     23c:      e1 f7           brne    .-8             ; 0x236 <set_x+0x5e>
-     23e:      35 e0           ldi     r19, 0x05       ; 5
-     240:      88 0f           add     r24, r24
-     242:      99 1f           adc     r25, r25
-     244:      3a 95           dec     r19
-     246:      e1 f7           brne    .-8             ; 0x240 <set_x+0x68>
-     248:      28 2b           or      r18, r24
-     24a:      25 b9           out     0x05, r18       ; 5
-}
-     24c:      08 95           ret
-
-0000024e <set_y>:
-
-void set_y(uint8_t byte) {
-  PORTY0 &= ~(1<<Y0);
-     24e:      2f 98           cbi     0x05, 7 ; 5
-  PORTY1 &= ~(1<<Y1);
-     250:      2e 98           cbi     0x05, 6 ; 5
-  PORTY2 &= ~(1<<Y2);
-     252:      47 98           cbi     0x08, 7 ; 8
-  PORTY3 &= ~(1<<Y3);
-     254:      46 98           cbi     0x08, 6 ; 8
-
-  PORTY0 |= ((byte & (1<<0))>>0)<<Y0;
-     256:      45 b1           in      r20, 0x05       ; 5
-     258:      90 e0           ldi     r25, 0x00       ; 0
-     25a:      9c 01           movw    r18, r24
-     25c:      36 95           lsr     r19
-     25e:      32 2f           mov     r19, r18
-     260:      22 27           eor     r18, r18
-     262:      37 95           ror     r19
-     264:      27 95           ror     r18
-     266:      42 2b           or      r20, r18
-     268:      45 b9           out     0x05, r20       ; 5
-  PORTY1 |= ((byte & (1<<1))>>1)<<Y1;
-     26a:      45 b1           in      r20, 0x05       ; 5
-     26c:      9c 01           movw    r18, r24
-     26e:      22 70           andi    r18, 0x02       ; 2
-     270:      30 70           andi    r19, 0x00       ; 0
-     272:      35 95           asr     r19
-     274:      27 95           ror     r18
-     276:      76 e0           ldi     r23, 0x06       ; 6
-     278:      22 0f           add     r18, r18
-     27a:      33 1f           adc     r19, r19
-     27c:      7a 95           dec     r23
-     27e:      e1 f7           brne    .-8             ; 0x278 <set_y+0x2a>
-     280:      42 2b           or      r20, r18
-     282:      45 b9           out     0x05, r20       ; 5
-  PORTY2 |= ((byte & (1<<2))>>2)<<Y2;
-     284:      48 b1           in      r20, 0x08       ; 8
-     286:      9c 01           movw    r18, r24
-     288:      24 70           andi    r18, 0x04       ; 4
-     28a:      30 70           andi    r19, 0x00       ; 0
-     28c:      35 95           asr     r19
-     28e:      27 95           ror     r18
-     290:      35 95           asr     r19
-     292:      27 95           ror     r18
-     294:      36 95           lsr     r19
-     296:      32 2f           mov     r19, r18
-     298:      22 27           eor     r18, r18
-     29a:      37 95           ror     r19
-     29c:      27 95           ror     r18
-     29e:      42 2b           or      r20, r18
-     2a0:      48 b9           out     0x08, r20       ; 8
-  PORTY3 |= ((byte & (1<<3))>>3)<<Y3;
-     2a2:      28 b1           in      r18, 0x08       ; 8
-     2a4:      88 70           andi    r24, 0x08       ; 8
-     2a6:      90 70           andi    r25, 0x00       ; 0
-     2a8:      b3 e0           ldi     r27, 0x03       ; 3
-     2aa:      95 95           asr     r25
-     2ac:      87 95           ror     r24
-     2ae:      ba 95           dec     r27
-     2b0:      e1 f7           brne    .-8             ; 0x2aa <set_y+0x5c>
-     2b2:      a6 e0           ldi     r26, 0x06       ; 6
-     2b4:      88 0f           add     r24, r24
-     2b6:      99 1f           adc     r25, r25
-     2b8:      aa 95           dec     r26
-     2ba:      e1 f7           brne    .-8             ; 0x2b4 <set_y+0x66>
-     2bc:      28 2b           or      r18, r24
-     2be:      28 b9           out     0x08, r18       ; 8
-}
-     2c0:      08 95           ret
-
-000002c2 <RingBuffer_InitBuffer.clone.0>:
-                                                        const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
-               static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer,
-                                                        uint8_t* const DataPtr,
-                                                        const uint16_t Size)
-               {
-                       GCC_FORCE_POINTER_ACCESS(Buffer);
-     2c2:      fc 01           movw    r30, r24
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     2c4:      2f b7           in      r18, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     2c6:      f8 94           cli
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Buffer->In     = DataPtr;
-     2c8:      71 83           std     Z+1, r23        ; 0x01
-     2ca:      60 83           st      Z, r22
-                       Buffer->Out    = DataPtr;
-     2cc:      73 83           std     Z+3, r23        ; 0x03
-     2ce:      62 83           std     Z+2, r22        ; 0x02
-                       Buffer->Start  = &DataPtr[0];
-     2d0:      75 83           std     Z+5, r23        ; 0x05
-     2d2:      64 83           std     Z+4, r22        ; 0x04
-                       Buffer->End    = &DataPtr[Size];
-     2d4:      60 58           subi    r22, 0x80       ; 128
-     2d6:      7f 4f           sbci    r23, 0xFF       ; 255
-     2d8:      77 83           std     Z+7, r23        ; 0x07
-     2da:      66 83           std     Z+6, r22        ; 0x06
-                       Buffer->Size   = Size;
-     2dc:      80 e8           ldi     r24, 0x80       ; 128
-     2de:      90 e0           ldi     r25, 0x00       ; 0
-     2e0:      91 87           std     Z+9, r25        ; 0x09
-     2e2:      80 87           std     Z+8, r24        ; 0x08
-                       Buffer->Count  = 0;
-     2e4:      13 86           std     Z+11, r1        ; 0x0b
-     2e6:      12 86           std     Z+10, r1        ; 0x0a
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     2e8:      2f bf           out     0x3f, r18       ; 63
-
-                       SetGlobalInterruptMask(CurrentGlobalInt);
-               }
-     2ea:      08 95           ret
-
-000002ec <__vector_21>:
-u08 adb_werte[MAX_ADB];
-u08 t0ovfcount;
-volatile u08 adb_data_length;
-
-
-ISR( TIMER0_OVF_vect) {
-     2ec:      1f 92           push    r1
-     2ee:      0f 92           push    r0
-     2f0:      0f b6           in      r0, 0x3f        ; 63
-     2f2:      0f 92           push    r0
-     2f4:      11 24           eor     r1, r1
-     2f6:      8f 93           push    r24
-       t0ovfcount++;
-     2f8:      80 91 c6 02     lds     r24, 0x02C6
-     2fc:      8f 5f           subi    r24, 0xFF       ; 255
-     2fe:      80 93 c6 02     sts     0x02C6, r24
-}
-     302:      8f 91           pop     r24
-     304:      0f 90           pop     r0
-     306:      0f be           out     0x3f, r0        ; 63
-     308:      0f 90           pop     r0
-     30a:      1f 90           pop     r1
-     30c:      18 95           reti
-
-0000030e <t0ext>:
-
-uint16_t t0ext(void) {
-       return (t0ovfcount * 256 + (u16) TCNT0); // return current counter value
-     30e:      86 b5           in      r24, 0x26       ; 38
-     310:      30 91 c6 02     lds     r19, 0x02C6
-     314:      20 e0           ldi     r18, 0x00       ; 0
-     316:      28 0f           add     r18, r24
-     318:      31 1d           adc     r19, r1
-       // plus number of already passed counter cycles times 256
-}
-     31a:      c9 01           movw    r24, r18
-     31c:      08 95           ret
-
-0000031e <t0rst>:
-
-void t0rst(void) {
-       TCNT0 = 0; // set counter to zero
-     31e:      16 bc           out     0x26, r1        ; 38
-       t0ovfcount = 0; // set overflow counter to zero
-     320:      10 92 c6 02     sts     0x02C6, r1
-
-}
-     324:      08 95           ret
-
-00000326 <adb>:
-// Befehl in adb_werte[0]. Empfangene bzw. zu sendende Daten in adb_werte[1 bis 8]
-
-
-
-
-u08 adb(void) {
-     326:      df 92           push    r13
-     328:      ef 92           push    r14
-     32a:      ff 92           push    r15
-     32c:      0f 93           push    r16
-     32e:      1f 93           push    r17
-     330:      cf 93           push    r28
-     332:      df 93           push    r29
-#define ADB_IMPULS_TLT TAKT/ADB_VORTEILER_B*250/1000000 // !!! 375 mach das mit anderem prescaler
-//     #define ADB_IMPULS_TLT TAKT/ADB_VORTEILER_A*31/1000000 // modified
-       //#define ADB_IMPULS_PAUSE TAKT/ADB_VORTEILER_B*200/1000000
-
-       //Attention Signal
-       TCCR0B = ADB_VORTEILER_A_BIT;
-     334:      83 e0           ldi     r24, 0x03       ; 3
-     336:      85 bd           out     0x25, r24       ; 37
-       t0rst(); //  TCNT0 = 0; // Zähler auf null setzen
-     338:      f2 df           rcall   .-28            ; 0x31e <t0rst>
-       ADB_PDIR |= ADB_BIT; // Ausgang 0
-     33a:      50 9a           sbi     0x0a, 0 ; 10
-       ADB_POUT &= ~ADB_BIT;
-     33c:      58 98           cbi     0x0b, 0 ; 11
-       while (t0ext() < ADB_IMPULS_ATT)
-     33e:      e7 df           rcall   .-50            ; 0x30e <t0ext>
-     340:      bc 01           movw    r22, r24
-     342:      80 e0           ldi     r24, 0x00       ; 0
-     344:      90 e0           ldi     r25, 0x00       ; 0
-     346:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     34a:      20 e0           ldi     r18, 0x00       ; 0
-     34c:      30 e8           ldi     r19, 0x80       ; 128
-     34e:      4e e0           ldi     r20, 0x0E       ; 14
-     350:      53 e4           ldi     r21, 0x43       ; 67
-     352:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     356:      87 fd           sbrc    r24, 7
-     358:      f2 cf           rjmp    .-28            ; 0x33e <adb+0x18>
-               ; // Warteschleife
-
-       TCCR0B = ADB_VORTEILER_B_BIT; // ab hier alles im schnellen modus
-     35a:      82 e0           ldi     r24, 0x02       ; 2
-     35c:      85 bd           out     0x25, r24       ; 37
-
-       anzahl_out = 1; // Mindestens Befehl übertragen
-     35e:      dd 24           eor     r13, r13
-     360:      d3 94           inc     r13
-       z_byte = 0;
-     362:      10 e0           ldi     r17, 0x00       ; 0
-       do {
-               // START BIT (1)
-               t0rst(); //  TCNT0 = 0;
-     364:      dc df           rcall   .-72            ; 0x31e <t0rst>
-               ADB_PDIR |= ADB_BIT; // Ausgang 0
-     366:      50 9a           sbi     0x0a, 0 ; 10
-               ADB_POUT &= ~ADB_BIT;
-     368:      58 98           cbi     0x0b, 0 ; 11
-               while (t0ext() < ADB_IMPULS_KURZ)
-     36a:      d1 df           rcall   .-94            ; 0x30e <t0ext>
-     36c:      bc 01           movw    r22, r24
-     36e:      80 e0           ldi     r24, 0x00       ; 0
-     370:      90 e0           ldi     r25, 0x00       ; 0
-     372:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     376:      20 e0           ldi     r18, 0x00       ; 0
-     378:      30 e0           ldi     r19, 0x00       ; 0
-     37a:      4c e8           ldi     r20, 0x8C       ; 140
-     37c:      52 e4           ldi     r21, 0x42       ; 66
-     37e:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     382:      87 fd           sbrc    r24, 7
-     384:      f2 cf           rjmp    .-28            ; 0x36a <adb+0x44>
-                       ;
-               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-     386:      50 98           cbi     0x0a, 0 ; 10
-               ADB_POUT |= ADB_BIT;
-     388:      58 9a           sbi     0x0b, 0 ; 11
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-     38a:      c1 df           rcall   .-126           ; 0x30e <t0ext>
-     38c:      bc 01           movw    r22, r24
-     38e:      80 e0           ldi     r24, 0x00       ; 0
-     390:      90 e0           ldi     r25, 0x00       ; 0
-     392:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     396:      20 e0           ldi     r18, 0x00       ; 0
-     398:      30 e0           ldi     r19, 0x00       ; 0
-     39a:      48 e4           ldi     r20, 0x48       ; 72
-     39c:      53 e4           ldi     r21, 0x43       ; 67
-     39e:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     3a2:      87 fd           sbrc    r24, 7
-     3a4:      f2 cf           rjmp    .-28            ; 0x38a <adb+0x64>
-     3a6:      41 c0           rjmp    .+130           ; 0x42a <adb+0x104>
-                       ;
-
-               for (; z_byte < anzahl_out; z_byte++) {
-     3a8:      c8 e0           ldi     r28, 0x08       ; 8
-     3aa:      d0 e0           ldi     r29, 0x00       ; 0
-     3ac:      00 e8           ldi     r16, 0x80       ; 128
-                       for (bitpos = 128; bitpos; bitpos >>= 1) { //Daten ausgeben
-                               t0rst(); //  TCNT0 = 0;
-                               ADB_PDIR |= ADB_BIT; // Ausgang 0
-                               ADB_POUT &= ~ADB_BIT;
-                               if (adb_werte[z_byte] & bitpos)
-     3ae:      e1 2e           mov     r14, r17
-     3b0:      ff 24           eor     r15, r15
-     3b2:      8d ea           ldi     r24, 0xAD       ; 173
-     3b4:      92 e0           ldi     r25, 0x02       ; 2
-     3b6:      e8 0e           add     r14, r24
-     3b8:      f9 1e           adc     r15, r25
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               for (; z_byte < anzahl_out; z_byte++) {
-                       for (bitpos = 128; bitpos; bitpos >>= 1) { //Daten ausgeben
-                               t0rst(); //  TCNT0 = 0;
-     3ba:      b1 df           rcall   .-158           ; 0x31e <t0rst>
-                               ADB_PDIR |= ADB_BIT; // Ausgang 0
-     3bc:      50 9a           sbi     0x0a, 0 ; 10
-                               ADB_POUT &= ~ADB_BIT;
-     3be:      58 98           cbi     0x0b, 0 ; 11
-                               if (adb_werte[z_byte] & bitpos)
-     3c0:      f7 01           movw    r30, r14
-     3c2:      80 81           ld      r24, Z
-     3c4:      80 23           and     r24, r16
-     3c6:      79 f0           breq    .+30            ; 0x3e6 <adb+0xc0>
-                                       while (t0ext() < ADB_IMPULS_KURZ)
-     3c8:      a2 df           rcall   .-188           ; 0x30e <t0ext>
-     3ca:      bc 01           movw    r22, r24
-     3cc:      80 e0           ldi     r24, 0x00       ; 0
-     3ce:      90 e0           ldi     r25, 0x00       ; 0
-     3d0:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     3d4:      20 e0           ldi     r18, 0x00       ; 0
-     3d6:      30 e0           ldi     r19, 0x00       ; 0
-     3d8:      4c e8           ldi     r20, 0x8C       ; 140
-     3da:      52 e4           ldi     r21, 0x42       ; 66
-     3dc:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     3e0:      87 fd           sbrc    r24, 7
-     3e2:      f2 cf           rjmp    .-28            ; 0x3c8 <adb+0xa2>
-     3e4:      0e c0           rjmp    .+28            ; 0x402 <adb+0xdc>
-                                               ;
-                               else
-                                       while (t0ext() < ADB_IMPULS_LANG)
-     3e6:      93 df           rcall   .-218           ; 0x30e <t0ext>
-     3e8:      bc 01           movw    r22, r24
-     3ea:      80 e0           ldi     r24, 0x00       ; 0
-     3ec:      90 e0           ldi     r25, 0x00       ; 0
-     3ee:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     3f2:      20 e0           ldi     r18, 0x00       ; 0
-     3f4:      30 e0           ldi     r19, 0x00       ; 0
-     3f6:      42 e0           ldi     r20, 0x02       ; 2
-     3f8:      53 e4           ldi     r21, 0x43       ; 67
-     3fa:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     3fe:      87 fd           sbrc    r24, 7
-     400:      f2 cf           rjmp    .-28            ; 0x3e6 <adb+0xc0>
-                                               ;
-                               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-     402:      50 98           cbi     0x0a, 0 ; 10
-                               ADB_POUT |= ADB_BIT;
-     404:      58 9a           sbi     0x0b, 0 ; 11
-                               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-     406:      83 df           rcall   .-250           ; 0x30e <t0ext>
-     408:      bc 01           movw    r22, r24
-     40a:      80 e0           ldi     r24, 0x00       ; 0
-     40c:      90 e0           ldi     r25, 0x00       ; 0
-     40e:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     412:      20 e0           ldi     r18, 0x00       ; 0
-     414:      30 e0           ldi     r19, 0x00       ; 0
-     416:      48 e4           ldi     r20, 0x48       ; 72
-     418:      53 e4           ldi     r21, 0x43       ; 67
-     41a:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     41e:      87 fd           sbrc    r24, 7
-     420:      f2 cf           rjmp    .-28            ; 0x406 <adb+0xe0>
-               ADB_POUT |= ADB_BIT;
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               for (; z_byte < anzahl_out; z_byte++) {
-                       for (bitpos = 128; bitpos; bitpos >>= 1) { //Daten ausgeben
-     422:      06 95           lsr     r16
-     424:      21 97           sbiw    r28, 0x01       ; 1
-     426:      49 f6           brne    .-110           ; 0x3ba <adb+0x94>
-               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-               ADB_POUT |= ADB_BIT;
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               for (; z_byte < anzahl_out; z_byte++) {
-     428:      1f 5f           subi    r17, 0xFF       ; 255
-     42a:      1d 15           cp      r17, r13
-     42c:      08 f4           brcc    .+2             ; 0x430 <adb+0x10a>
-     42e:      bc cf           rjmp    .-136           ; 0x3a8 <adb+0x82>
-                               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                                       ;
-                       }
-               }
-               // STOP BIT (0)
-               t0rst(); //  TCNT0 = 0;
-     430:      76 df           rcall   .-276           ; 0x31e <t0rst>
-               ADB_PDIR |= ADB_BIT; // Ausgang 0
-     432:      50 9a           sbi     0x0a, 0 ; 10
-               ADB_POUT &= ~ADB_BIT;
-     434:      58 98           cbi     0x0b, 0 ; 11
-               while (t0ext() < ADB_IMPULS_LANG)
-     436:      6b df           rcall   .-298           ; 0x30e <t0ext>
-     438:      bc 01           movw    r22, r24
-     43a:      80 e0           ldi     r24, 0x00       ; 0
-     43c:      90 e0           ldi     r25, 0x00       ; 0
-     43e:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     442:      20 e0           ldi     r18, 0x00       ; 0
-     444:      30 e0           ldi     r19, 0x00       ; 0
-     446:      42 e0           ldi     r20, 0x02       ; 2
-     448:      53 e4           ldi     r21, 0x43       ; 67
-     44a:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     44e:      87 fd           sbrc    r24, 7
-     450:      f2 cf           rjmp    .-28            ; 0x436 <adb+0x110>
-                       ;
-               ADB_PDIR &= ~ADB_BIT; // Eingang über Pullup
-     452:      50 98           cbi     0x0a, 0 ; 10
-               ADB_POUT |= ADB_BIT;
-     454:      58 9a           sbi     0x0b, 0 ; 11
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-     456:      5b df           rcall   .-330           ; 0x30e <t0ext>
-     458:      bc 01           movw    r22, r24
-     45a:      80 e0           ldi     r24, 0x00       ; 0
-     45c:      90 e0           ldi     r25, 0x00       ; 0
-     45e:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     462:      20 e0           ldi     r18, 0x00       ; 0
-     464:      30 e0           ldi     r19, 0x00       ; 0
-     466:      48 e4           ldi     r20, 0x48       ; 72
-     468:      53 e4           ldi     r21, 0x43       ; 67
-     46a:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     46e:      87 fd           sbrc    r24, 7
-     470:      f2 cf           rjmp    .-28            ; 0x456 <adb+0x130>
-                       ;
-
-               // Entscheidung, ob noch weitere Daten übertragen werden
-               if (adb_werte[0] == COM_LISTEN3)
-     472:      80 91 ad 02     lds     r24, 0x02AD
-     476:      8b 33           cpi     r24, 0x3B       ; 59
-     478:      29 f0           breq    .+10            ; 0x484 <adb+0x15e>
-                       anzahl_out = 2 + 1;
-               else if (adb_werte[0] == COM_LISTEN1)
-     47a:      89 33           cpi     r24, 0x39       ; 57
-     47c:      41 f4           brne    .+16            ; 0x48e <adb+0x168>
-                       anzahl_out = 8 + 1;
-     47e:      09 e0           ldi     r16, 0x09       ; 9
-     480:      d0 2e           mov     r13, r16
-     482:      02 c0           rjmp    .+4             ; 0x488 <adb+0x162>
-               while (t0ext() < ADB_IMPULS_KURZ + ADB_IMPULS_LANG)
-                       ;
-
-               // Entscheidung, ob noch weitere Daten übertragen werden
-               if (adb_werte[0] == COM_LISTEN3)
-                       anzahl_out = 2 + 1;
-     484:      b3 e0           ldi     r27, 0x03       ; 3
-     486:      db 2e           mov     r13, r27
-               else if (adb_werte[0] == COM_LISTEN1)
-                       anzahl_out = 8 + 1;
-               else
-                       z_byte = 8;
-       } while (z_byte < 2);
-     488:      11 30           cpi     r17, 0x01       ; 1
-     48a:      09 f4           brne    .+2             ; 0x48e <adb+0x168>
-     48c:      6b cf           rjmp    .-298           ; 0x364 <adb+0x3e>
-
-       // Warten auf Rückgabewerte sonst Abbruch
-       // TCCR0 = ADB_VORTEILER_A_BIT; // micha modifikation
-       t0rst(); //  TCNT0 = 0;
-     48e:      47 df           rcall   .-370           ; 0x31e <t0rst>
-
-       do {
-               if (t0ext() > ADB_IMPULS_TLT) {
-     490:      3e df           rcall   .-388           ; 0x30e <t0ext>
-     492:      bc 01           movw    r22, r24
-     494:      80 e0           ldi     r24, 0x00       ; 0
-     496:      90 e0           ldi     r25, 0x00       ; 0
-     498:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     49c:      20 e0           ldi     r18, 0x00       ; 0
-     49e:      30 e0           ldi     r19, 0x00       ; 0
-     4a0:      4a ef           ldi     r20, 0xFA       ; 250
-     4a2:      53 e4           ldi     r21, 0x43       ; 67
-     4a4:      0e 94 33 0f     call    0x1e66  ; 0x1e66 <__gesf2>
-     4a8:      18 16           cp      r1, r24
-     4aa:      0c f4           brge    .+2             ; 0x4ae <adb+0x188>
-     4ac:      42 c0           rjmp    .+132           ; 0x532 <__stack+0x33>
-                       return (0);
-               }
-       } while (ADB_PIN & ADB_BIT);
-     4ae:      48 99           sbic    0x09, 0 ; 9
-     4b0:      ef cf           rjmp    .-34            ; 0x490 <adb+0x16a>
-       while (!(ADB_PIN & ADB_BIT))
-     4b2:      48 9b           sbis    0x09, 0 ; 9
-     4b4:      fe cf           rjmp    .-4             ; 0x4b2 <adb+0x18c>
-     4b6:      ce ea           ldi     r28, 0xAE       ; 174
-     4b8:      d2 e0           ldi     r29, 0x02       ; 2
-     4ba:      11 e0           ldi     r17, 0x01       ; 1
-     4bc:      01 c0           rjmp    .+2             ; 0x4c0 <adb+0x19a>
-                       while (!(ADB_PIN & ADB_BIT))
-                               ;
-                       if (t0ext() < (ADB_IMPULS_KURZ + ADB_IMPULS_LANG) / 2)
-                               adb_werte[z_byte] += bitpos;
-               }
-               z_byte++;
-     4be:      18 2f           mov     r17, r24
-       while (!(ADB_PIN & ADB_BIT))
-               ; // Start Bit
-
-       z_byte = 1;
-       while (z_byte < MAX_ADB) {
-               adb_werte[z_byte] = 0;
-     4c0:      18 82           st      Y, r1
-     4c2:      a8 e0           ldi     r26, 0x08       ; 8
-     4c4:      ea 2e           mov     r14, r26
-     4c6:      f1 2c           mov     r15, r1
-               for (bitpos = 128; bitpos; bitpos >>= 1) { //Bits einlesen
-     4c8:      00 e8           ldi     r16, 0x80       ; 128
-                       //TCCR0 = ADB_VORTEILER_B_BIT; //micha modifikation
-                       t0rst(); //  TCNT0 = 0;
-     4ca:      29 df           rcall   .-430           ; 0x31e <t0rst>
-                       // Abbruch wenn keine weiteren Bytes übertragen werden.
-                       do {
-                               if (t0ext() > ADB_IMPULS_KURZ + ADB_IMPULS_LANG) {
-     4cc:      20 df           rcall   .-448           ; 0x30e <t0ext>
-     4ce:      bc 01           movw    r22, r24
-     4d0:      80 e0           ldi     r24, 0x00       ; 0
-     4d2:      90 e0           ldi     r25, 0x00       ; 0
-     4d4:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     4d8:      20 e0           ldi     r18, 0x00       ; 0
-     4da:      30 e0           ldi     r19, 0x00       ; 0
-     4dc:      48 e4           ldi     r20, 0x48       ; 72
-     4de:      53 e4           ldi     r21, 0x43       ; 67
-     4e0:      0e 94 33 0f     call    0x1e66  ; 0x1e66 <__gesf2>
-     4e4:      18 16           cp      r1, r24
-     4e6:      14 f4           brge    .+4             ; 0x4ec <adb+0x1c6>
-                                       return (z_byte - 1);
-     4e8:      11 50           subi    r17, 0x01       ; 1
-     4ea:      24 c0           rjmp    .+72            ; 0x534 <__stack+0x35>
-                               }
-                       } while (ADB_PIN & ADB_BIT);
-     4ec:      48 99           sbic    0x09, 0 ; 9
-     4ee:      ee cf           rjmp    .-36            ; 0x4cc <adb+0x1a6>
-                       t0rst(); //  TCNT0 = 0;
-     4f0:      16 df           rcall   .-468           ; 0x31e <t0rst>
-                       while (!(ADB_PIN & ADB_BIT))
-     4f2:      48 9b           sbis    0x09, 0 ; 9
-     4f4:      fe cf           rjmp    .-4             ; 0x4f2 <adb+0x1cc>
-                               ;
-                       if (t0ext() < (ADB_IMPULS_KURZ + ADB_IMPULS_LANG) / 2)
-     4f6:      0b df           rcall   .-490           ; 0x30e <t0ext>
-     4f8:      bc 01           movw    r22, r24
-     4fa:      80 e0           ldi     r24, 0x00       ; 0
-     4fc:      90 e0           ldi     r25, 0x00       ; 0
-     4fe:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     502:      20 e0           ldi     r18, 0x00       ; 0
-     504:      30 e0           ldi     r19, 0x00       ; 0
-     506:      48 ec           ldi     r20, 0xC8       ; 200
-     508:      52 e4           ldi     r21, 0x42       ; 66
-     50a:      0e 94 e9 0d     call    0x1bd2  ; 0x1bd2 <__cmpsf2>
-     50e:      87 ff           sbrs    r24, 7
-     510:      03 c0           rjmp    .+6             ; 0x518 <__stack+0x19>
-                               adb_werte[z_byte] += bitpos;
-     512:      88 81           ld      r24, Y
-     514:      80 0f           add     r24, r16
-     516:      88 83           st      Y, r24
-               ; // Start Bit
-
-       z_byte = 1;
-       while (z_byte < MAX_ADB) {
-               adb_werte[z_byte] = 0;
-               for (bitpos = 128; bitpos; bitpos >>= 1) { //Bits einlesen
-     518:      06 95           lsr     r16
-     51a:      08 94           sec
-     51c:      e1 08           sbc     r14, r1
-     51e:      f1 08           sbc     r15, r1
-     520:      e1 14           cp      r14, r1
-     522:      f1 04           cpc     r15, r1
-     524:      91 f6           brne    .-92            ; 0x4ca <adb+0x1a4>
-                       while (!(ADB_PIN & ADB_BIT))
-                               ;
-                       if (t0ext() < (ADB_IMPULS_KURZ + ADB_IMPULS_LANG) / 2)
-                               adb_werte[z_byte] += bitpos;
-               }
-               z_byte++;
-     526:      81 2f           mov     r24, r17
-     528:      8f 5f           subi    r24, 0xFF       ; 255
-     52a:      21 96           adiw    r28, 0x01       ; 1
-       } while (ADB_PIN & ADB_BIT);
-       while (!(ADB_PIN & ADB_BIT))
-               ; // Start Bit
-
-       z_byte = 1;
-       while (z_byte < MAX_ADB) {
-     52c:      89 30           cpi     r24, 0x09       ; 9
-     52e:      39 f6           brne    .-114           ; 0x4be <adb+0x198>
-     530:      01 c0           rjmp    .+2             ; 0x534 <__stack+0x35>
-       // TCCR0 = ADB_VORTEILER_A_BIT; // micha modifikation
-       t0rst(); //  TCNT0 = 0;
-
-       do {
-               if (t0ext() > ADB_IMPULS_TLT) {
-                       return (0);
-     532:      10 e0           ldi     r17, 0x00       ; 0
-                               adb_werte[z_byte] += bitpos;
-               }
-               z_byte++;
-       }
-       return (z_byte - 1);
-}
-     534:      81 2f           mov     r24, r17
-     536:      df 91           pop     r29
-     538:      cf 91           pop     r28
-     53a:      1f 91           pop     r17
-     53c:      0f 91           pop     r16
-     53e:      ff 90           pop     r15
-     540:      ef 90           pop     r14
-     542:      df 90           pop     r13
-     544:      08 95           ret
-
-00000546 <touchpad_init>:
-
-void touchpad_init(void) {
-       // Eingänge
-       ADB_PDIR &= ~ADB_BIT;
-     546:      50 98           cbi     0x0a, 0 ; 10
-
-       // Pull Up einschalten
-       ADB_POUT |= ADB_BIT;
-     548:      58 9a           sbi     0x0b, 0 ; 11
-
-       //enable timer0 interrupt
-       TIMSK0 |= (1 << TOIE0);
-     54a:      ee e6           ldi     r30, 0x6E       ; 110
-     54c:      f0 e0           ldi     r31, 0x00       ; 0
-     54e:      80 81           ld      r24, Z
-     550:      81 60           ori     r24, 0x01       ; 1
-     552:      80 83           st      Z, r24
-}
-     554:      08 95           ret
-
-00000556 <touchpad_read>:
-
-uint8_t touchpad_read(void) {
-       adb_werte[0] = COM_TALK0;
-     556:      8c e3           ldi     r24, 0x3C       ; 60
-     558:      80 93 ad 02     sts     0x02AD, r24
-       adb_data_length = adb();
-     55c:      e4 de           rcall   .-568           ; 0x326 <adb>
-     55e:      80 93 c7 02     sts     0x02C7, r24
-       return adb_data_length;
-     562:      80 91 c7 02     lds     r24, 0x02C7
-}
-     566:      08 95           ret
-
-00000568 <touchpad_set_rel_mode_100dpi>:
-  _delay_ms(100);
-}
-
-void touchpad_set_rel_mode_100dpi(void) {
-       // Auf Relativmodus umschalten
-       adb_werte[0] = COM_LISTEN3;
-     568:      8b e3           ldi     r24, 0x3B       ; 59
-     56a:      80 93 ad 02     sts     0x02AD, r24
-       adb_werte[1] = BITS(0110,0011);
-     56e:      83 e6           ldi     r24, 0x63       ; 99
-     570:      80 93 ae 02     sts     0x02AE, r24
-       adb_werte[2] = 1; //default modus: 100 dpi mouse
-     574:      81 e0           ldi     r24, 0x01       ; 1
-     576:      80 93 af 02     sts     0x02AF, r24
-       adb();
-     57a:      d5 de           rcall   .-598           ; 0x326 <adb>
-       #else
-               //round up by default
-               __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
-       #endif
-
-       __builtin_avr_delay_cycles(__ticks_dc);
-     57c:      8f ef           ldi     r24, 0xFF       ; 255
-     57e:      91 ee           ldi     r25, 0xE1       ; 225
-     580:      a4 e0           ldi     r26, 0x04       ; 4
-     582:      81 50           subi    r24, 0x01       ; 1
-     584:      90 40           sbci    r25, 0x00       ; 0
-     586:      a0 40           sbci    r26, 0x00       ; 0
-     588:      e1 f7           brne    .-8             ; 0x582 <touchpad_set_rel_mode_100dpi+0x1a>
-     58a:      00 c0           rjmp    .+0             ; 0x58c <touchpad_set_rel_mode_100dpi+0x24>
-     58c:      00 00           nop
-  _delay_ms(100);
-
-}
-     58e:      08 95           ret
-
-00000590 <delta_y>:
-       return ((adb_werte[4] & 0b01110000) << 6)
-                       | ((adb_werte[3] & 0b01110000) << 3) | (adb_werte[1] & 0b01111111);
-}
-
-int8_t delta_y(void) {
-       if(adb_data_length ==0) {
-     590:      80 91 c7 02     lds     r24, 0x02C7
-     594:      88 23           and     r24, r24
-     596:      51 f0           breq    .+20            ; 0x5ac <delta_y+0x1c>
-               return 0;
-       }
-       if (adb_werte[1] & 0b01000000) {
-     598:      80 91 ae 02     lds     r24, 0x02AE
-     59c:      86 ff           sbrs    r24, 6
-     59e:      04 c0           rjmp    .+8             ; 0x5a8 <delta_y+0x18>
-               return -((128 - adb_werte[1]) & 0b00111111);
-     5a0:      81 95           neg     r24
-     5a2:      8f 73           andi    r24, 0x3F       ; 63
-     5a4:      81 95           neg     r24
-     5a6:      08 95           ret
-       } else {
-               return adb_werte[1] & 0b00111111;
-     5a8:      8f 73           andi    r24, 0x3F       ; 63
-     5aa:      08 95           ret
-                       | ((adb_werte[3] & 0b01110000) << 3) | (adb_werte[1] & 0b01111111);
-}
-
-int8_t delta_y(void) {
-       if(adb_data_length ==0) {
-               return 0;
-     5ac:      80 e0           ldi     r24, 0x00       ; 0
-       if (adb_werte[1] & 0b01000000) {
-               return -((128 - adb_werte[1]) & 0b00111111);
-       } else {
-               return adb_werte[1] & 0b00111111;
-       }
-}
-     5ae:      08 95           ret
-
-000005b0 <delta_x>:
-
-int8_t delta_x(void) {
-       if(adb_data_length ==0) {
-     5b0:      80 91 c7 02     lds     r24, 0x02C7
-     5b4:      88 23           and     r24, r24
-     5b6:      51 f0           breq    .+20            ; 0x5cc <delta_x+0x1c>
-               return 0;
-       }
-       if (adb_werte[2] & 0b01000000) {
-     5b8:      80 91 af 02     lds     r24, 0x02AF
-     5bc:      86 ff           sbrs    r24, 6
-     5be:      04 c0           rjmp    .+8             ; 0x5c8 <delta_x+0x18>
-               return -((128 - adb_werte[2]) & 0b00111111);
-     5c0:      81 95           neg     r24
-     5c2:      8f 73           andi    r24, 0x3F       ; 63
-     5c4:      81 95           neg     r24
-     5c6:      08 95           ret
-       } else {
-               return adb_werte[2] & 0b00111111;
-     5c8:      8f 73           andi    r24, 0x3F       ; 63
-     5ca:      08 95           ret
-       }
-}
-
-int8_t delta_x(void) {
-       if(adb_data_length ==0) {
-               return 0;
-     5cc:      80 e0           ldi     r24, 0x00       ; 0
-       if (adb_werte[2] & 0b01000000) {
-               return -((128 - adb_werte[2]) & 0b00111111);
-       } else {
-               return adb_werte[2] & 0b00111111;
-       }
-}
-     5ce:      08 95           ret
-
-000005d0 <init_leds>:
-
-void init_leds(void) {
-  DDRLED0 |= 1<<LED0;
-     5d0:      21 9a           sbi     0x04, 1 ; 4
-  DDRLED1 |= 1<<LED1;
-     5d2:      20 9a           sbi     0x04, 0 ; 4
-  DDRLED2 |= 1<<LED2;
-     5d4:      56 9a           sbi     0x0a, 6 ; 10
-}
-     5d6:      08 95           ret
-
-000005d8 <set_led0>:
-
-
-void set_led0(uint8_t value){
-  PORTLED0 &= ~(1<<LED0);
-     5d8:      29 98           cbi     0x05, 1 ; 5
-  PORTLED0 |= (value & 0x01)<<LED0;
-     5da:      25 b1           in      r18, 0x05       ; 5
-     5dc:      90 e0           ldi     r25, 0x00       ; 0
-     5de:      81 70           andi    r24, 0x01       ; 1
-     5e0:      90 70           andi    r25, 0x00       ; 0
-     5e2:      88 0f           add     r24, r24
-     5e4:      99 1f           adc     r25, r25
-     5e6:      28 2b           or      r18, r24
-     5e8:      25 b9           out     0x05, r18       ; 5
-}
-     5ea:      08 95           ret
-
-000005ec <set_led1>:
-
-void set_led1(uint8_t value){
-  PORTLED1 &= ~(1<<LED1);
-     5ec:      28 98           cbi     0x05, 0 ; 5
-  PORTLED1 |= (value & 0x01)<<LED1;
-     5ee:      95 b1           in      r25, 0x05       ; 5
-     5f0:      81 70           andi    r24, 0x01       ; 1
-     5f2:      89 2b           or      r24, r25
-     5f4:      85 b9           out     0x05, r24       ; 5
-}
-     5f6:      08 95           ret
-
-000005f8 <set_led2>:
-
-void set_led2(uint8_t value){
-  PORTLED2 &= ~(1<<LED2);
-     5f8:      5e 98           cbi     0x0b, 6 ; 11
-  PORTLED2 |= (value & 0x01)<<LED2;
-     5fa:      2b b1           in      r18, 0x0b       ; 11
-     5fc:      90 e0           ldi     r25, 0x00       ; 0
-     5fe:      81 70           andi    r24, 0x01       ; 1
-     600:      90 70           andi    r25, 0x00       ; 0
-     602:      f6 e0           ldi     r31, 0x06       ; 6
-     604:      88 0f           add     r24, r24
-     606:      99 1f           adc     r25, r25
-     608:      fa 95           dec     r31
-     60a:      e1 f7           brne    .-8             ; 0x604 <set_led2+0xc>
-     60c:      28 2b           or      r18, r24
-     60e:      2b b9           out     0x0b, r18       ; 11
-}
-     610:      08 95           ret
-
-00000612 <init_sw>:
-
-
-void init_sw(void) {
- DDRSW0 &= ~(1<<SW0);
-     612:      54 98           cbi     0x0a, 4 ; 10
- DDRSW1 &= ~(1<<SW1);
-     614:      3d 98           cbi     0x07, 5 ; 7
- DDRSW2 &= ~(1<<SW2);
-     616:      3c 98           cbi     0x07, 4 ; 7
- PORTSW0 |= (1<<SW0);
-     618:      5c 9a           sbi     0x0b, 4 ; 11
- PORTSW1 |= (1<<SW1);
-     61a:      45 9a           sbi     0x08, 5 ; 8
- PORTSW2 |= (1<<SW2);
-     61c:      44 9a           sbi     0x08, 4 ; 8
-}
-     61e:      08 95           ret
-
-00000620 <sw0_state>:
-
-
-uint8_t sw0_state(void){
-  return (PINSW0 & (1<<SW0))>>SW0;
-     620:      89 b1           in      r24, 0x09       ; 9
-     622:      90 e0           ldi     r25, 0x00       ; 0
-     624:      80 71           andi    r24, 0x10       ; 16
-     626:      90 70           andi    r25, 0x00       ; 0
-     628:      a4 e0           ldi     r26, 0x04       ; 4
-     62a:      95 95           asr     r25
-     62c:      87 95           ror     r24
-     62e:      aa 95           dec     r26
-     630:      e1 f7           brne    .-8             ; 0x62a <sw0_state+0xa>
-}
-     632:      08 95           ret
-
-00000634 <sw1_state>:
-
-uint8_t sw1_state(void){
-  return (PINSW1 & (1<<SW1))>>SW1;
-     634:      86 b1           in      r24, 0x06       ; 6
-     636:      90 e0           ldi     r25, 0x00       ; 0
-     638:      80 72           andi    r24, 0x20       ; 32
-     63a:      90 70           andi    r25, 0x00       ; 0
-     63c:      b5 e0           ldi     r27, 0x05       ; 5
-     63e:      95 95           asr     r25
-     640:      87 95           ror     r24
-     642:      ba 95           dec     r27
-     644:      e1 f7           brne    .-8             ; 0x63e <sw1_state+0xa>
-}
-     646:      08 95           ret
-
-00000648 <sw2_state>:
-
-uint8_t sw2_state(void){
-  return (PINSW2 & (1<<SW2))>>SW2;
-     648:      86 b1           in      r24, 0x06       ; 6
-     64a:      90 e0           ldi     r25, 0x00       ; 0
-     64c:      80 71           andi    r24, 0x10       ; 16
-     64e:      90 70           andi    r25, 0x00       ; 0
-     650:      24 e0           ldi     r18, 0x04       ; 4
-     652:      95 95           asr     r25
-     654:      87 95           ror     r24
-     656:      2a 95           dec     r18
-     658:      e1 f7           brne    .-8             ; 0x652 <sw2_state+0xa>
-     65a:      08 95           ret
-
-0000065c <Usb2SerialTask>:
-
-
-
-
-
-void Usb2SerialTask(void) {
-     65c:      1f 93           push    r17
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     65e:      8f b7           in      r24, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     660:      f8 94           cli
-                       uint16_t Count;
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Count = Buffer->Count;
-     662:      20 91 5c 01     lds     r18, 0x015C
-     666:      30 91 5d 01     lds     r19, 0x015D
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     66a:      8f bf           out     0x3f, r24       ; 63
-  
-    /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */
-    if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))
-     66c:      80 91 5a 01     lds     r24, 0x015A
-     670:      90 91 5b 01     lds     r25, 0x015B
-     674:      28 17           cp      r18, r24
-     676:      39 07           cpc     r19, r25
-     678:      51 f0           breq    .+20            ; 0x68e <Usb2SerialTask+0x32>
-    {
-      int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
-     67a:      88 e2           ldi     r24, 0x28       ; 40
-     67c:      91 e0           ldi     r25, 0x01       ; 1
-     67e:      0e 94 56 0d     call    0x1aac  ; 0x1aac <CDC_Device_ReceiveByte>
-     682:      bc 01           movw    r22, r24
-
-      /* Read bytes from the USB OUT endpoint into the USART transmit buffer */
-      if (!(ReceivedByte < 0))
-     684:      97 fd           sbrc    r25, 7
-     686:      03 c0           rjmp    .+6             ; 0x68e <Usb2SerialTask+0x32>
-        RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);
-     688:      82 e5           ldi     r24, 0x52       ; 82
-     68a:      91 e0           ldi     r25, 0x01       ; 1
-     68c:      71 dd           rcall   .-1310          ; 0x170 <RingBuffer_Insert>
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     68e:      2f b7           in      r18, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     690:      f8 94           cli
-     692:      80 91 e8 01     lds     r24, 0x01E8
-     696:      90 91 e9 01     lds     r25, 0x01E9
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     69a:      2f bf           out     0x3f, r18       ; 63
-    }
-
-    /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */
-    uint16_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);
-    if (BufferCount)
-     69c:      00 97           sbiw    r24, 0x00       ; 0
-     69e:      09 f1           breq    .+66            ; 0x6e2 <Usb2SerialTask+0x86>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-     6a0:      20 91 29 01     lds     r18, 0x0129
-     6a4:      2f 70           andi    r18, 0x0F       ; 15
-     6a6:      20 93 e9 00     sts     0x00E9, r18
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-     6aa:      20 91 e8 00     lds     r18, 0x00E8
-    {
-      Endpoint_SelectEndpoint(VirtualSerial_CDC_Interface.Config.DataINEndpoint.Address);
-
-      /* Check if a packet is already enqueued to the host - if so, we shouldn't try to send more data
-       * until it completes as there is a chance nothing is listening and a lengthy timeout could occur */
-      if (Endpoint_IsINReady())
-     6ae:      20 ff           sbrs    r18, 0
-     6b0:      18 c0           rjmp    .+48            ; 0x6e2 <Usb2SerialTask+0x86>
-      {
-        /* Never send more than one bank size less one byte to the host at a time, so that we don't block
-         * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */
-        uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));
-     6b2:      80 31           cpi     r24, 0x10       ; 16
-     6b4:      91 05           cpc     r25, r1
-     6b6:      10 f0           brcs    .+4             ; 0x6bc <Usb2SerialTask+0x60>
-     6b8:      8f e0           ldi     r24, 0x0F       ; 15
-     6ba:      90 e0           ldi     r25, 0x00       ; 0
-     6bc:      18 2f           mov     r17, r24
-
-        /* Read bytes from the USART receive buffer into the USB IN endpoint */
-        while (BytesToSend--)
-     6be:      0f c0           rjmp    .+30            ; 0x6de <Usb2SerialTask+0x82>
-                *  \return Next data element stored in the buffer.
-                */
-               static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
-               static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer)
-               {
-                       return *Buffer->Out;
-     6c0:      e0 91 e0 01     lds     r30, 0x01E0
-     6c4:      f0 91 e1 01     lds     r31, 0x01E1
-        {
-          /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */
-          if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface,
-     6c8:      88 e2           ldi     r24, 0x28       ; 40
-     6ca:      91 e0           ldi     r25, 0x01       ; 1
-     6cc:      60 81           ld      r22, Z
-     6ce:      0e 94 e5 0c     call    0x19ca  ; 0x19ca <CDC_Device_SendByte>
-     6d2:      11 50           subi    r17, 0x01       ; 1
-     6d4:      88 23           and     r24, r24
-     6d6:      29 f4           brne    .+10            ; 0x6e2 <Usb2SerialTask+0x86>
-          {
-            break;
-          }
-
-          /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */
-          RingBuffer_Remove(&USARTtoUSB_Buffer);
-     6d8:      8e ed           ldi     r24, 0xDE       ; 222
-     6da:      91 e0           ldi     r25, 0x01       ; 1
-     6dc:      64 dd           rcall   .-1336          ; 0x1a6 <RingBuffer_Remove>
-        /* Never send more than one bank size less one byte to the host at a time, so that we don't block
-         * while a Zero Length Packet (ZLP) to terminate the transfer is sent if the host isn't listening */
-        uint8_t BytesToSend = MIN(BufferCount, (CDC_TXRX_EPSIZE - 1));
-
-        /* Read bytes from the USART receive buffer into the USB IN endpoint */
-        while (BytesToSend--)
-     6de:      11 23           and     r17, r17
-     6e0:      79 f7           brne    .-34            ; 0x6c0 <Usb2SerialTask+0x64>
-//     if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
-//       Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));
-//      dummy = RingBuffer_Remove(&USBtoUSART_Buffer);
-//      sendPayload(&dummy,1,0);
-//     }
-    CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
-     6e2:      88 e2           ldi     r24, 0x28       ; 40
-     6e4:      91 e0           ldi     r25, 0x01       ; 1
-     6e6:      0e 94 3f 0d     call    0x1a7e  ; 0x1a7e <CDC_Device_USBTask>
-    USB_USBTask();
-     6ea:      0e 94 f9 0b     call    0x17f2  ; 0x17f2 <USB_USBTask>
-  
-}
-     6ee:      1f 91           pop     r17
-     6f0:      08 95           ret
-
-000006f2 <SetupHardware>:
-
-/** 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);
-     6f2:      84 b7           in      r24, 0x34       ; 52
-     6f4:      87 7f           andi    r24, 0xF7       ; 247
-     6f6:      84 bf           out     0x34, r24       ; 52
-       wdt_disable();
-     6f8:      88 e1           ldi     r24, 0x18       ; 24
-     6fa:      0f b6           in      r0, 0x3f        ; 63
-     6fc:      f8 94           cli
-     6fe:      80 93 60 00     sts     0x0060, r24
-     702:      10 92 60 00     sts     0x0060, r1
-     706:      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__ (
-     708:      90 e0           ldi     r25, 0x00       ; 0
-     70a:      80 e8           ldi     r24, 0x80       ; 128
-     70c:      0f b6           in      r0, 0x3f        ; 63
-     70e:      f8 94           cli
-     710:      80 93 61 00     sts     0x0061, r24
-     714:      90 93 61 00     sts     0x0061, r25
-     718:      0f be           out     0x3f, r0        ; 63
-       clock_prescale_set(clock_div_1);
-
-       /* Hardware Initialization */
-//     LEDs_Init();
-       USB_Init();
-}
-     71a:      1a c6           rjmp    .+3124          ; 0x1350 <USB_Init>
-
-0000071c <EVENT_USB_Device_Connect>:
-
-/** Event handler for the library USB Connection event. */
-void EVENT_USB_Device_Connect(void)
-{
-//     LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
-}
-     71c:      08 95           ret
-
-0000071e <EVENT_USB_Device_Disconnect>:
-
-/** Event handler for the library USB Disconnection event. */
-void EVENT_USB_Device_Disconnect(void)
-{
-//     LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-}
-     71e:      08 95           ret
-
-00000720 <EVENT_USB_Device_ConfigurationChanged>:
-/** Event handler for the library USB Configuration Changed event. */
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
-       bool ConfigSuccess = true;
-
-       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
-     720:      88 e2           ldi     r24, 0x28       ; 40
-     722:      91 e0           ldi     r25, 0x01       ; 1
-     724:      0c 94 c1 0c     jmp     0x1982  ; 0x1982 <CDC_Device_ConfigureEndpoints>
-
-00000728 <EVENT_USB_Device_ControlRequest>:
-}
-
-/** Event handler for the library USB Control Request reception event. */
-void EVENT_USB_Device_ControlRequest(void)
-{
-       CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
-     728:      88 e2           ldi     r24, 0x28       ; 40
-     72a:      91 e0           ldi     r25, 0x01       ; 1
-     72c:      0c 94 14 0c     jmp     0x1828  ; 0x1828 <CDC_Device_ProcessControlRequest>
-
-00000730 <__vector_23>:
-
-/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer
- *  for later transmission to the host.
- */
-ISR(USART1_RX_vect, ISR_BLOCK)
-{
-     730:      1f 92           push    r1
-     732:      0f 92           push    r0
-     734:      0f b6           in      r0, 0x3f        ; 63
-     736:      0f 92           push    r0
-     738:      11 24           eor     r1, r1
-     73a:      2f 93           push    r18
-     73c:      3f 93           push    r19
-     73e:      4f 93           push    r20
-     740:      5f 93           push    r21
-     742:      6f 93           push    r22
-     744:      7f 93           push    r23
-     746:      8f 93           push    r24
-     748:      9f 93           push    r25
-     74a:      af 93           push    r26
-     74c:      bf 93           push    r27
-     74e:      ef 93           push    r30
-     750:      ff 93           push    r31
-       uint8_t ReceivedByte = UDR1;
-     752:      60 91 ce 00     lds     r22, 0x00CE
-
-       if (USB_DeviceState == DEVICE_STATE_Configured)
-     756:      8e b3           in      r24, 0x1e       ; 30
-     758:      84 30           cpi     r24, 0x04       ; 4
-     75a:      19 f4           brne    .+6             ; 0x762 <__vector_23+0x32>
-         RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);
-     75c:      8e ed           ldi     r24, 0xDE       ; 222
-     75e:      91 e0           ldi     r25, 0x01       ; 1
-     760:      07 dd           rcall   .-1522          ; 0x170 <RingBuffer_Insert>
-}
-     762:      ff 91           pop     r31
-     764:      ef 91           pop     r30
-     766:      bf 91           pop     r27
-     768:      af 91           pop     r26
-     76a:      9f 91           pop     r25
-     76c:      8f 91           pop     r24
-     76e:      7f 91           pop     r23
-     770:      6f 91           pop     r22
-     772:      5f 91           pop     r21
-     774:      4f 91           pop     r20
-     776:      3f 91           pop     r19
-     778:      2f 91           pop     r18
-     77a:      0f 90           pop     r0
-     77c:      0f be           out     0x3f, r0        ; 63
-     77e:      0f 90           pop     r0
-     780:      1f 90           pop     r1
-     782:      18 95           reti
-
-00000784 <EVENT_CDC_Device_LineEncodingChanged>:
-/** Event handler for the CDC Class driver Line Encoding Changed event.
- *
- *  \param[in] CDCInterfaceInfo  Pointer to the CDC class interface configuration structure being referenced
- */
-void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-     784:      8f 92           push    r8
-     786:      9f 92           push    r9
-     788:      af 92           push    r10
-     78a:      bf 92           push    r11
-     78c:      cf 92           push    r12
-     78e:      df 92           push    r13
-     790:      ef 92           push    r14
-     792:      ff 92           push    r15
-     794:      1f 93           push    r17
-     796:      fc 01           movw    r30, r24
-       uint8_t ConfigMask = 0;
-
-       switch (CDCInterfaceInfo->State.LineEncoding.ParityType)
-     798:      a1 8d           ldd     r26, Z+25       ; 0x19
-     79a:      a1 50           subi    r26, 0x01       ; 1
-     79c:      a2 30           cpi     r26, 0x02       ; 2
-     79e:      28 f4           brcc    .+10            ; 0x7aa <EVENT_CDC_Device_LineEncodingChanged+0x26>
-     7a0:      b0 e0           ldi     r27, 0x00       ; 0
-     7a2:      a9 5b           subi    r26, 0xB9       ; 185
-     7a4:      be 4f           sbci    r27, 0xFE       ; 254
-     7a6:      1c 91           ld      r17, X
-     7a8:      01 c0           rjmp    .+2             ; 0x7ac <EVENT_CDC_Device_LineEncodingChanged+0x28>
-     7aa:      10 e0           ldi     r17, 0x00       ; 0
-               case CDC_PARITY_Even:
-                       ConfigMask = (1 << UPM11);
-                       break;
-       }
-
-       if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)
-     7ac:      80 8d           ldd     r24, Z+24       ; 0x18
-     7ae:      82 30           cpi     r24, 0x02       ; 2
-     7b0:      09 f4           brne    .+2             ; 0x7b4 <EVENT_CDC_Device_LineEncodingChanged+0x30>
-         ConfigMask |= (1 << USBS1);
-     7b2:      18 60           ori     r17, 0x08       ; 8
-
-       switch (CDCInterfaceInfo->State.LineEncoding.DataBits)
-     7b4:      82 8d           ldd     r24, Z+26       ; 0x1a
-     7b6:      87 30           cpi     r24, 0x07       ; 7
-     7b8:      31 f0           breq    .+12            ; 0x7c6 <EVENT_CDC_Device_LineEncodingChanged+0x42>
-     7ba:      88 30           cpi     r24, 0x08       ; 8
-     7bc:      31 f0           breq    .+12            ; 0x7ca <EVENT_CDC_Device_LineEncodingChanged+0x46>
-     7be:      86 30           cpi     r24, 0x06       ; 6
-     7c0:      29 f4           brne    .+10            ; 0x7cc <EVENT_CDC_Device_LineEncodingChanged+0x48>
-       {
-               case 6:
-                       ConfigMask |= (1 << UCSZ10);
-     7c2:      12 60           ori     r17, 0x02       ; 2
-                       break;
-     7c4:      03 c0           rjmp    .+6             ; 0x7cc <EVENT_CDC_Device_LineEncodingChanged+0x48>
-               case 7:
-                       ConfigMask |= (1 << UCSZ11);
-     7c6:      14 60           ori     r17, 0x04       ; 4
-                       break;
-     7c8:      01 c0           rjmp    .+2             ; 0x7cc <EVENT_CDC_Device_LineEncodingChanged+0x48>
-               case 8:
-                       ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));
-     7ca:      16 60           ori     r17, 0x06       ; 6
-                       break;
-       }
-
-       /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
-       UCSR1B = 0;
-     7cc:      10 92 c9 00     sts     0x00C9, r1
-       UCSR1A = 0;
-     7d0:      10 92 c8 00     sts     0x00C8, r1
-       UCSR1C = 0;
-     7d4:      10 92 ca 00     sts     0x00CA, r1
-
-       /* Set the new baud rate before configuring the USART */
-       UBRR1  = SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
-     7d8:      c4 88           ldd     r12, Z+20       ; 0x14
-     7da:      d5 88           ldd     r13, Z+21       ; 0x15
-     7dc:      e6 88           ldd     r14, Z+22       ; 0x16
-     7de:      f7 88           ldd     r15, Z+23       ; 0x17
-     7e0:      c7 01           movw    r24, r14
-     7e2:      b6 01           movw    r22, r12
-     7e4:      96 95           lsr     r25
-     7e6:      87 95           ror     r24
-     7e8:      77 95           ror     r23
-     7ea:      67 95           ror     r22
-     7ec:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     7f0:      20 e0           ldi     r18, 0x00       ; 0
-     7f2:      34 e2           ldi     r19, 0x24       ; 36
-     7f4:      44 ef           ldi     r20, 0xF4       ; 244
-     7f6:      59 e4           ldi     r21, 0x49       ; 73
-     7f8:      0e 94 85 0d     call    0x1b0a  ; 0x1b0a <__addsf3>
-     7fc:      4b 01           movw    r8, r22
-     7fe:      5c 01           movw    r10, r24
-     800:      c7 01           movw    r24, r14
-     802:      b6 01           movw    r22, r12
-     804:      0e 94 81 0e     call    0x1d02  ; 0x1d02 <__floatunsisf>
-     808:      9b 01           movw    r18, r22
-     80a:      ac 01           movw    r20, r24
-     80c:      c5 01           movw    r24, r10
-     80e:      b4 01           movw    r22, r8
-     810:      0e 94 ed 0d     call    0x1bda  ; 0x1bda <__divsf3>
-     814:      20 e0           ldi     r18, 0x00       ; 0
-     816:      30 e0           ldi     r19, 0x00       ; 0
-     818:      40 e8           ldi     r20, 0x80       ; 128
-     81a:      5f e3           ldi     r21, 0x3F       ; 63
-     81c:      0e 94 84 0d     call    0x1b08  ; 0x1b08 <__subsf3>
-     820:      0e 94 55 0e     call    0x1caa  ; 0x1caa <__fixunssfsi>
-     824:      70 93 cd 00     sts     0x00CD, r23
-     828:      60 93 cc 00     sts     0x00CC, r22
-
-       /* Reconfigure the USART in double speed mode for a wider baud rate range at the expense of accuracy */
-       UCSR1C = ConfigMask;
-     82c:      10 93 ca 00     sts     0x00CA, r17
-       UCSR1A = (1 << U2X1);
-     830:      82 e0           ldi     r24, 0x02       ; 2
-     832:      80 93 c8 00     sts     0x00C8, r24
-       UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));
-     836:      88 e9           ldi     r24, 0x98       ; 152
-     838:      80 93 c9 00     sts     0x00C9, r24
-}
-     83c:      1f 91           pop     r17
-     83e:      ff 90           pop     r15
-     840:      ef 90           pop     r14
-     842:      df 90           pop     r13
-     844:      cf 90           pop     r12
-     846:      bf 90           pop     r11
-     848:      af 90           pop     r10
-     84a:      9f 90           pop     r9
-     84c:      8f 90           pop     r8
-     84e:      08 95           ret
-
-00000850 <uart_putc>:
-
-
-
-
-void uart_putc(unsigned char data)
-{
-     850:      68 2f           mov     r22, r24
-
-      if (USB_DeviceState == DEVICE_STATE_Configured){
-     852:      8e b3           in      r24, 0x1e       ; 30
-     854:      84 30           cpi     r24, 0x04       ; 4
-     856:      19 f4           brne    .+6             ; 0x85e <uart_putc+0xe>
-        RingBuffer_Insert(&USARTtoUSB_Buffer, data);
-     858:      8e ed           ldi     r24, 0xDE       ; 222
-     85a:      91 e0           ldi     r25, 0x01       ; 1
-     85c:      89 cc           rjmp    .-1774          ; 0x170 <RingBuffer_Insert>
-     85e:      08 95           ret
-
-00000860 <uart_puts>:
-      }
-  
-}
-
-void uart_puts(const char *s )
-{
-     860:      ef 92           push    r14
-     862:      ff 92           push    r15
-     864:      cf 93           push    r28
-     866:      df 93           push    r29
-     868:      e8 2e           mov     r14, r24
-     86a:      e7 01           movw    r28, r14
-     86c:      7e 01           movw    r14, r28
-     86e:      f9 2e           mov     r15, r25
-     870:      e7 01           movw    r28, r14
-    while (*s) 
-     872:      01 c0           rjmp    .+2             ; 0x876 <uart_puts+0x16>
-      uart_putc(*s++);
-     874:      ed df           rcall   .-38            ; 0x850 <uart_putc>
-  
-}
-
-void uart_puts(const char *s )
-{
-    while (*s) 
-     876:      89 91           ld      r24, Y+
-     878:      88 23           and     r24, r24
-     87a:      e1 f7           brne    .-8             ; 0x874 <uart_puts+0x14>
-      uart_putc(*s++);
-
-}/* uart_puts */
-     87c:      df 91           pop     r29
-     87e:      cf 91           pop     r28
-     880:      ff 90           pop     r15
-     882:      ef 90           pop     r14
-     884:      08 95           ret
-
-00000886 <my_uitoa>:
-
-
-// convert an unsigned integer to string
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-     886:      2f 92           push    r2
-     888:      3f 92           push    r3
-     88a:      4f 92           push    r4
-     88c:      5f 92           push    r5
-     88e:      6f 92           push    r6
-     890:      7f 92           push    r7
-     892:      8f 92           push    r8
-     894:      9f 92           push    r9
-     896:      af 92           push    r10
-     898:      bf 92           push    r11
-     89a:      cf 92           push    r12
-     89c:      df 92           push    r13
-     89e:      ef 92           push    r14
-     8a0:      ff 92           push    r15
-     8a2:      0f 93           push    r16
-     8a4:      1f 93           push    r17
-     8a6:      cf 93           push    r28
-     8a8:      df 93           push    r29
-     8aa:      6b 01           movw    r12, r22
-     8ac:      7c 01           movw    r14, r24
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-     8ae:      82 2f           mov     r24, r18
-     8b0:      90 e0           ldi     r25, 0x00       ; 0
-     8b2:      fa 01           movw    r30, r20
-     8b4:      e8 0f           add     r30, r24
-     8b6:      f9 1f           adc     r31, r25
-     8b8:      10 82           st      Z, r1
-  for (i = (no_digits - 1); i >= 0; i--) {
-     8ba:      12 2f           mov     r17, r18
-     8bc:      11 50           subi    r17, 0x01       ; 1
-
-}/* uart_puts */
-
-
-// convert an unsigned integer to string
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-     8be:      41 2e           mov     r4, r17
-     8c0:      55 24           eor     r5, r5
-     8c2:      47 fc           sbrc    r4, 7
-     8c4:      50 94           com     r5
-     8c6:      ea 01           movw    r28, r20
-     8c8:      c4 0d           add     r28, r4
-     8ca:      d5 1d           adc     r29, r5
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-  for (i = (no_digits - 1); i >= 0; i--) {
-     8cc:      aa 24           eor     r10, r10
-     8ce:      bb 24           eor     r11, r11
-    if (zahl == 0 && i < (no_digits - 1)) {
-      string[i] = leading_char;
-    } else {
-      string[i] = (zahl % 10) + '0';
-     8d0:      4a e0           ldi     r20, 0x0A       ; 10
-     8d2:      64 2e           mov     r6, r20
-     8d4:      71 2c           mov     r7, r1
-     8d6:      81 2c           mov     r8, r1
-     8d8:      91 2c           mov     r9, r1
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-  for (i = (no_digits - 1); i >= 0; i--) {
-    if (zahl == 0 && i < (no_digits - 1)) {
-     8da:      1c 01           movw    r2, r24
-     8dc:      08 94           sec
-     8de:      21 08           sbc     r2, r1
-     8e0:      31 08           sbc     r3, r1
-// convert an unsigned integer to string
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-  for (i = (no_digits - 1); i >= 0; i--) {
-     8e2:      22 c0           rjmp    .+68            ; 0x928 <my_uitoa+0xa2>
-    if (zahl == 0 && i < (no_digits - 1)) {
-     8e4:      c1 14           cp      r12, r1
-     8e6:      d1 04           cpc     r13, r1
-     8e8:      e1 04           cpc     r14, r1
-     8ea:      f1 04           cpc     r15, r1
-     8ec:      41 f4           brne    .+16            ; 0x8fe <my_uitoa+0x78>
-
-}/* uart_puts */
-
-
-// convert an unsigned integer to string
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-     8ee:      c5 01           movw    r24, r10
-     8f0:      84 0d           add     r24, r4
-     8f2:      95 1d           adc     r25, r5
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-  for (i = (no_digits - 1); i >= 0; i--) {
-    if (zahl == 0 && i < (no_digits - 1)) {
-     8f4:      82 15           cp      r24, r2
-     8f6:      93 05           cpc     r25, r3
-     8f8:      14 f4           brge    .+4             ; 0x8fe <my_uitoa+0x78>
-      string[i] = leading_char;
-     8fa:      08 83           st      Y, r16
-     8fc:      08 c0           rjmp    .+16            ; 0x90e <my_uitoa+0x88>
-    } else {
-      string[i] = (zahl % 10) + '0';
-     8fe:      c7 01           movw    r24, r14
-     900:      b6 01           movw    r22, r12
-     902:      a4 01           movw    r20, r8
-     904:      93 01           movw    r18, r6
-     906:      0e 94 70 0f     call    0x1ee0  ; 0x1ee0 <__udivmodsi4>
-     90a:      60 5d           subi    r22, 0xD0       ; 208
-     90c:      68 83           st      Y, r22
-    } // Modulo rechnen, dann den ASCII-Code von '0' addieren
-    zahl /= 10;
-     90e:      c7 01           movw    r24, r14
-     910:      b6 01           movw    r22, r12
-     912:      a4 01           movw    r20, r8
-     914:      93 01           movw    r18, r6
-     916:      0e 94 70 0f     call    0x1ee0  ; 0x1ee0 <__udivmodsi4>
-     91a:      69 01           movw    r12, r18
-     91c:      7a 01           movw    r14, r20
-// convert an unsigned integer to string
-void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits, char leading_char) {
-  int8_t i; // schleifenzähler
-
-  string[no_digits] = '\0'; // String Terminator
-  for (i = (no_digits - 1); i >= 0; i--) {
-     91e:      11 50           subi    r17, 0x01       ; 1
-     920:      21 97           sbiw    r28, 0x01       ; 1
-     922:      08 94           sec
-     924:      a1 08           sbc     r10, r1
-     926:      b1 08           sbc     r11, r1
-     928:      17 ff           sbrs    r17, 7
-     92a:      dc cf           rjmp    .-72            ; 0x8e4 <my_uitoa+0x5e>
-      string[i] = (zahl % 10) + '0';
-    } // Modulo rechnen, dann den ASCII-Code von '0' addieren
-    zahl /= 10;
-  }
-
-}
-     92c:      df 91           pop     r29
-     92e:      cf 91           pop     r28
-     930:      1f 91           pop     r17
-     932:      0f 91           pop     r16
-     934:      ff 90           pop     r15
-     936:      ef 90           pop     r14
-     938:      df 90           pop     r13
-     93a:      cf 90           pop     r12
-     93c:      bf 90           pop     r11
-     93e:      af 90           pop     r10
-     940:      9f 90           pop     r9
-     942:      8f 90           pop     r8
-     944:      7f 90           pop     r7
-     946:      6f 90           pop     r6
-     948:      5f 90           pop     r5
-     94a:      4f 90           pop     r4
-     94c:      3f 90           pop     r3
-     94e:      2f 90           pop     r2
-     950:      08 95           ret
-
-00000952 <sign>:
-
-int8_t sign(int16_t x) {
-  return (x > 0) - (x < 0);
-     952:      21 e0           ldi     r18, 0x01       ; 1
-     954:      18 16           cp      r1, r24
-     956:      19 06           cpc     r1, r25
-     958:      0c f0           brlt    .+2             ; 0x95c <sign+0xa>
-     95a:      20 e0           ldi     r18, 0x00       ; 0
-     95c:      89 2f           mov     r24, r25
-     95e:      88 1f           adc     r24, r24
-     960:      88 27           eor     r24, r24
-     962:      88 1f           adc     r24, r24
-}
-     964:      28 1b           sub     r18, r24
-     966:      82 2f           mov     r24, r18
-     968:      08 95           ret
-
-0000096a <uart_print_number_wlzeros>:
-  my_uitoa(abs(zahl),stringbuffer,no_digits,' ');
-  uart_puts(stringbuffer);
-}
-
-
-void uart_print_number_wlzeros(uint32_t zahl, uint8_t no_digits) {
-     96a:      0f 93           push    r16
-     96c:      24 2f           mov     r18, r20
-  my_uitoa(abs(zahl),stringbuffer,no_digits,'0');
-     96e:      77 ff           sbrs    r23, 7
-     970:      03 c0           rjmp    .+6             ; 0x978 <uart_print_number_wlzeros+0xe>
-     972:      70 95           com     r23
-     974:      61 95           neg     r22
-     976:      7f 4f           sbci    r23, 0xFF       ; 255
-     978:      88 27           eor     r24, r24
-     97a:      77 fd           sbrc    r23, 7
-     97c:      80 95           com     r24
-     97e:      98 2f           mov     r25, r24
-     980:      46 eb           ldi     r20, 0xB6       ; 182
-     982:      52 e0           ldi     r21, 0x02       ; 2
-     984:      00 e3           ldi     r16, 0x30       ; 48
-     986:      7f df           rcall   .-258           ; 0x886 <my_uitoa>
-  uart_puts(stringbuffer);
-     988:      86 eb           ldi     r24, 0xB6       ; 182
-     98a:      92 e0           ldi     r25, 0x02       ; 2
-     98c:      69 df           rcall   .-302           ; 0x860 <uart_puts>
-}
-     98e:      0f 91           pop     r16
-     990:      08 95           ret
-
-00000992 <uart_print_signed_number>:
-
-void uart_print_signed_number(uint32_t zahl, uint8_t no_digits) {
-     992:      ff 92           push    r15
-     994:      0f 93           push    r16
-     996:      1f 93           push    r17
-     998:      24 2f           mov     r18, r20
-  my_uitoa(abs(zahl),stringbuffer,no_digits,' ');
-     99a:      f6 2e           mov     r15, r22
-     99c:      17 2f           mov     r17, r23
-     99e:      77 ff           sbrs    r23, 7
-     9a0:      03 c0           rjmp    .+6             ; 0x9a8 <uart_print_signed_number+0x16>
-     9a2:      70 95           com     r23
-     9a4:      61 95           neg     r22
-     9a6:      7f 4f           sbci    r23, 0xFF       ; 255
-     9a8:      88 27           eor     r24, r24
-     9aa:      77 fd           sbrc    r23, 7
-     9ac:      80 95           com     r24
-     9ae:      98 2f           mov     r25, r24
-     9b0:      46 eb           ldi     r20, 0xB6       ; 182
-     9b2:      52 e0           ldi     r21, 0x02       ; 2
-     9b4:      00 e2           ldi     r16, 0x20       ; 32
-     9b6:      67 df           rcall   .-306           ; 0x886 <my_uitoa>
-  if (sign(zahl) < 0) {
-     9b8:      8f 2d           mov     r24, r15
-     9ba:      91 2f           mov     r25, r17
-     9bc:      ca df           rcall   .-108           ; 0x952 <sign>
-     9be:      87 ff           sbrs    r24, 7
-     9c0:      02 c0           rjmp    .+4             ; 0x9c6 <uart_print_signed_number+0x34>
-    uart_putc('-');
-     9c2:      8d e2           ldi     r24, 0x2D       ; 45
-     9c4:      01 c0           rjmp    .+2             ; 0x9c8 <uart_print_signed_number+0x36>
-  } else {
-    uart_putc('+');
-     9c6:      8b e2           ldi     r24, 0x2B       ; 43
-     9c8:      43 df           rcall   .-378           ; 0x850 <uart_putc>
-  }
-  uart_puts(stringbuffer);
-     9ca:      86 eb           ldi     r24, 0xB6       ; 182
-     9cc:      92 e0           ldi     r25, 0x02       ; 2
-     9ce:      48 df           rcall   .-368           ; 0x860 <uart_puts>
-  
-}
-     9d0:      1f 91           pop     r17
-     9d2:      0f 91           pop     r16
-     9d4:      ff 90           pop     r15
-     9d6:      08 95           ret
-
-000009d8 <init_motors>:
-  PORTY2 |= ((byte & (1<<2))>>2)<<Y2;
-  PORTY3 |= ((byte & (1<<3))>>3)<<Y3;
-}
-
-void init_motors(void){
-  set_x(0);
-     9d8:      80 e0           ldi     r24, 0x00       ; 0
-     9da:      fe db           rcall   .-2052          ; 0x1d8 <set_x>
-  set_y(0);
-     9dc:      80 e0           ldi     r24, 0x00       ; 0
-     9de:      37 dc           rcall   .-1938          ; 0x24e <set_y>
-  DDRX0 |= (1<<X0);
-     9e0:      22 9a           sbi     0x04, 2 ; 4
-  DDRX1 |= (1<<X1);
-     9e2:      23 9a           sbi     0x04, 3 ; 4
-  DDRX2 |= (1<<X2);
-     9e4:      24 9a           sbi     0x04, 4 ; 4
-  DDRX3 |= (1<<X3);
-     9e6:      25 9a           sbi     0x04, 5 ; 4
-  DDRY0 |= (1<<Y0);
-     9e8:      27 9a           sbi     0x04, 7 ; 4
-  DDRY1 |= (1<<Y1);
-     9ea:      26 9a           sbi     0x04, 6 ; 4
-  DDRY2 |= (1<<Y2);
-     9ec:      3f 9a           sbi     0x07, 7 ; 7
-  DDRY3 |= (1<<Y3);
-     9ee:      3e 9a           sbi     0x07, 6 ; 7
-}
-     9f0:      08 95           ret
-
-000009f2 <motor_step>:
-
-
-
-uint8_t motor_step(uint8_t motor, int8_t direction) { // motor: M1 or M2, direction +1 or -1, 0 for coil deactivation
-     9f2:      0f 93           push    r16
-     9f4:      1f 93           push    r17
-     9f6:      16 2f           mov     r17, r22
-     9f8:      82 30           cpi     r24, 0x02       ; 2
-     9fa:      50 f4           brcc    .+20            ; 0xa10 <motor_step+0x1e>
-     9fc:      a8 2f           mov     r26, r24
-     9fe:      b0 e0           ldi     r27, 0x00       ; 0
-     a00:      aa 0f           add     r26, r26
-     a02:      bb 1f           adc     r27, r27
-     a04:      a7 5b           subi    r26, 0xB7       ; 183
-     a06:      be 4f           sbci    r27, 0xFE       ; 254
-     a08:      2d 91           ld      r18, X+
-     a0a:      3c 91           ld      r19, X
-     a0c:      11 97           sbiw    r26, 0x01       ; 1
-     a0e:      02 c0           rjmp    .+4             ; 0xa14 <motor_step+0x22>
-     a10:      2c ee           ldi     r18, 0xEC       ; 236
-     a12:      30 e0           ldi     r19, 0x00       ; 0
-    case Y:
-      setport = &set_y;
-      break;
-  }
-
-  next_phase = (phase_memory[motor] + 4 + direction) % 4;
-     a14:      e8 2f           mov     r30, r24
-     a16:      f0 e0           ldi     r31, 0x00       ; 0
-     a18:      81 2f           mov     r24, r17
-     a1a:      99 27           eor     r25, r25
-     a1c:      87 fd           sbrc    r24, 7
-     a1e:      90 95           com     r25
-     a20:      04 96           adiw    r24, 0x04       ; 4
-     a22:      ea 55           subi    r30, 0x5A       ; 90
-     a24:      fd 4f           sbci    r31, 0xFD       ; 253
-     a26:      40 81           ld      r20, Z
-     a28:      84 0f           add     r24, r20
-     a2a:      91 1d           adc     r25, r1
-     a2c:      64 e0           ldi     r22, 0x04       ; 4
-     a2e:      70 e0           ldi     r23, 0x00       ; 0
-     a30:      0e 94 5d 0f     call    0x1eba  ; 0x1eba <__divmodhi4>
-  phase_memory[motor] = next_phase;
-     a34:      80 83           st      Z, r24
-  
-
-  next_pattern = phase_pattern[next_phase];
-     a36:      e8 2f           mov     r30, r24
-     a38:      f0 e0           ldi     r31, 0x00       ; 0
-     a3a:      ed 5b           subi    r30, 0xBD       ; 189
-     a3c:      fe 4f           sbci    r31, 0xFE       ; 254
-     a3e:      00 81           ld      r16, Z
-  if (direction != 0) {
-     a40:      11 23           and     r17, r17
-     a42:      11 f0           breq    .+4             ; 0xa48 <motor_step+0x56>
-      (*setport)(next_pattern);
-     a44:      80 2f           mov     r24, r16
-     a46:      01 c0           rjmp    .+2             ; 0xa4a <motor_step+0x58>
-  } else {
-      (*setport)(0);
-     a48:      80 e0           ldi     r24, 0x00       ; 0
-     a4a:      f9 01           movw    r30, r18
-     a4c:      09 95           icall
-  }
-
-  return next_pattern;
-
-}
-     a4e:      80 2f           mov     r24, r16
-     a50:      1f 91           pop     r17
-     a52:      0f 91           pop     r16
-     a54:      08 95           ret
-
-00000a56 <move_plate>:
-  return val;
-}
-
-#define PHASE_DELAY_MS 10
-
-uint8_t move_plate(int16_t dx, int16_t dy){
-     a56:      0f 93           push    r16
-     a58:      1f 93           push    r17
-  static int16_t todo_x,todo_y = 0;
-  int8_t signum;
-  uint8_t returnval = 0;
-  todo_x += dx;
-     a5a:      20 91 a4 02     lds     r18, 0x02A4
-     a5e:      30 91 a5 02     lds     r19, 0x02A5
-     a62:      28 0f           add     r18, r24
-     a64:      39 1f           adc     r19, r25
-     a66:      30 93 a5 02     sts     0x02A5, r19
-     a6a:      20 93 a4 02     sts     0x02A4, r18
-  todo_y += dy;
-     a6e:      80 91 a2 02     lds     r24, 0x02A2
-     a72:      90 91 a3 02     lds     r25, 0x02A3
-     a76:      86 0f           add     r24, r22
-     a78:      97 1f           adc     r25, r23
-     a7a:      90 93 a3 02     sts     0x02A3, r25
-     a7e:      80 93 a2 02     sts     0x02A2, r24
-  
-  signum = sign(todo_x);
-     a82:      c9 01           movw    r24, r18
-     a84:      66 df           rcall   .-308           ; 0x952 <sign>
-     a86:      08 2f           mov     r16, r24
-#define PHASE_DELAY_MS 10
-
-uint8_t move_plate(int16_t dx, int16_t dy){
-  static int16_t todo_x,todo_y = 0;
-  int8_t signum;
-  uint8_t returnval = 0;
-     a88:      11 e0           ldi     r17, 0x01       ; 1
-     a8a:      88 23           and     r24, r24
-     a8c:      09 f4           brne    .+2             ; 0xa90 <move_plate+0x3a>
-     a8e:      10 e0           ldi     r17, 0x00       ; 0
-  
-  signum = sign(todo_x);
-  if(signum != 0) {
-    returnval++;
-  }
-  motor_step(X,signum);
-     a90:      80 e0           ldi     r24, 0x00       ; 0
-     a92:      60 2f           mov     r22, r16
-     a94:      ae df           rcall   .-164           ; 0x9f2 <motor_step>
-  todo_x -= signum;
-     a96:      60 2f           mov     r22, r16
-     a98:      77 27           eor     r23, r23
-     a9a:      67 fd           sbrc    r22, 7
-     a9c:      70 95           com     r23
-     a9e:      20 91 a4 02     lds     r18, 0x02A4
-     aa2:      30 91 a5 02     lds     r19, 0x02A5
-     aa6:      26 1b           sub     r18, r22
-     aa8:      37 0b           sbc     r19, r23
-     aaa:      30 93 a5 02     sts     0x02A5, r19
-     aae:      20 93 a4 02     sts     0x02A4, r18
-  
-  signum = sign(todo_y);
-     ab2:      80 91 a2 02     lds     r24, 0x02A2
-     ab6:      90 91 a3 02     lds     r25, 0x02A3
-     aba:      4b df           rcall   .-362           ; 0x952 <sign>
-     abc:      08 2f           mov     r16, r24
-  if(signum != 0) {
-     abe:      81 11           cpse    r24, r1
-    returnval++;
-     ac0:      1f 5f           subi    r17, 0xFF       ; 255
-  }
-  motor_step(Y,signum);
-     ac2:      81 e0           ldi     r24, 0x01       ; 1
-     ac4:      60 2f           mov     r22, r16
-     ac6:      95 df           rcall   .-214           ; 0x9f2 <motor_step>
-  todo_y -= signum;
-     ac8:      60 2f           mov     r22, r16
-     aca:      77 27           eor     r23, r23
-     acc:      67 fd           sbrc    r22, 7
-     ace:      70 95           com     r23
-     ad0:      20 91 a2 02     lds     r18, 0x02A2
-     ad4:      30 91 a3 02     lds     r19, 0x02A3
-     ad8:      26 1b           sub     r18, r22
-     ada:      37 0b           sbc     r19, r23
-     adc:      30 93 a3 02     sts     0x02A3, r19
-     ae0:      20 93 a2 02     sts     0x02A2, r18
-     ae4:      8f e3           ldi     r24, 0x3F       ; 63
-     ae6:      9c e9           ldi     r25, 0x9C       ; 156
-     ae8:      01 97           sbiw    r24, 0x01       ; 1
-     aea:      f1 f7           brne    .-4             ; 0xae8 <move_plate+0x92>
-     aec:      00 c0           rjmp    .+0             ; 0xaee <move_plate+0x98>
-     aee:      00 00           nop
-  _delay_ms(PHASE_DELAY_MS);
-  
-  return returnval; // busy
-  
-}
-     af0:      81 2f           mov     r24, r17
-     af2:      1f 91           pop     r17
-     af4:      0f 91           pop     r16
-     af6:      08 95           ret
-
-00000af8 <print_steps_in_mm>:
-  
-  
-void print_steps_in_mm(int16_t steps) {
-     af8:      0f 93           push    r16
-     afa:      1f 93           push    r17
-     afc:      8c 01           movw    r16, r24
-  int16_t predot,postdot;
-  
-  predot = steps/24;
-     afe:      68 e1           ldi     r22, 0x18       ; 24
-     b00:      70 e0           ldi     r23, 0x00       ; 0
-     b02:      0e 94 5d 0f     call    0x1eba  ; 0x1eba <__divmodhi4>
-  postdot = ((abs(steps)%24)*417)/10;
-  uart_print_signed_number(predot,3);
-     b06:      88 27           eor     r24, r24
-     b08:      77 fd           sbrc    r23, 7
-     b0a:      80 95           com     r24
-     b0c:      98 2f           mov     r25, r24
-     b0e:      43 e0           ldi     r20, 0x03       ; 3
-     b10:      40 df           rcall   .-384           ; 0x992 <uart_print_signed_number>
-  uart_putc('.');
-     b12:      8e e2           ldi     r24, 0x2E       ; 46
-     b14:      9d de           rcall   .-710           ; 0x850 <uart_putc>
-  
-void print_steps_in_mm(int16_t steps) {
-  int16_t predot,postdot;
-  
-  predot = steps/24;
-  postdot = ((abs(steps)%24)*417)/10;
-     b16:      c8 01           movw    r24, r16
-     b18:      17 ff           sbrs    r17, 7
-     b1a:      03 c0           rjmp    .+6             ; 0xb22 <print_steps_in_mm+0x2a>
-     b1c:      90 95           com     r25
-     b1e:      81 95           neg     r24
-     b20:      9f 4f           sbci    r25, 0xFF       ; 255
-     b22:      68 e1           ldi     r22, 0x18       ; 24
-     b24:      70 e0           ldi     r23, 0x00       ; 0
-     b26:      0e 94 5d 0f     call    0x1eba  ; 0x1eba <__divmodhi4>
-     b2a:      61 ea           ldi     r22, 0xA1       ; 161
-     b2c:      71 e0           ldi     r23, 0x01       ; 1
-     b2e:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     b32:      6a e0           ldi     r22, 0x0A       ; 10
-     b34:      70 e0           ldi     r23, 0x00       ; 0
-     b36:      0e 94 5d 0f     call    0x1eba  ; 0x1eba <__divmodhi4>
-  uart_print_signed_number(predot,3);
-  uart_putc('.');
-  uart_print_number_wlzeros(postdot,3);
-     b3a:      88 27           eor     r24, r24
-     b3c:      77 fd           sbrc    r23, 7
-     b3e:      80 95           com     r24
-     b40:      98 2f           mov     r25, r24
-     b42:      43 e0           ldi     r20, 0x03       ; 3
-     b44:      12 df           rcall   .-476           ; 0x96a <uart_print_number_wlzeros>
-  
-}
-     b46:      1f 91           pop     r17
-     b48:      0f 91           pop     r16
-     b4a:      08 95           ret
-
-00000b4c <pos_report>:
-  
-void pos_report(void){ 
-    uart_puts("x_pos: ");
-     b4c:      80 e0           ldi     r24, 0x00       ; 0
-     b4e:      91 e0           ldi     r25, 0x01       ; 1
-     b50:      87 de           rcall   .-754           ; 0x860 <uart_puts>
-//     uart_print_signed_number(plate_pos_x,6);
-    print_steps_in_mm(plate_pos_x);
-     b52:      80 91 4e 01     lds     r24, 0x014E
-     b56:      90 91 4f 01     lds     r25, 0x014F
-     b5a:      ce df           rcall   .-100           ; 0xaf8 <print_steps_in_mm>
-//     my_uitoa(plate_pos_x, stringbuffer, 6);
-//     uart_puts(stringbuffer);
-    uart_puts("  y_pos: ");
-     b5c:      88 e0           ldi     r24, 0x08       ; 8
-     b5e:      91 e0           ldi     r25, 0x01       ; 1
-     b60:      7f de           rcall   .-770           ; 0x860 <uart_puts>
-//     uart_print_signed_number(plate_pos_y,6);
-    print_steps_in_mm(plate_pos_y);
-     b62:      80 91 50 01     lds     r24, 0x0150
-     b66:      90 91 51 01     lds     r25, 0x0151
-     b6a:      c6 df           rcall   .-116           ; 0xaf8 <print_steps_in_mm>
-    uart_puts("\r");
-     b6c:      82 e1           ldi     r24, 0x12       ; 18
-     b6e:      91 e0           ldi     r25, 0x01       ; 1
-}
-     b70:      77 ce           rjmp    .-786           ; 0x860 <uart_puts>
-
-00000b72 <parse_command>:
-#define POSITION 0
-#define GOTO 1
-#define MOVEREL 2
-#define SETZERO 3
-
-void parse_command(void){
-     b72:      cf 92           push    r12
-     b74:      df 92           push    r13
-     b76:      ef 92           push    r14
-     b78:      ff 92           push    r15
-     b7a:      0f 93           push    r16
-     b7c:      1f 93           push    r17
-     b7e:      cf 93           push    r28
-     b80:      df 93           push    r29
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-     b82:      2f b7           in      r18, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-     b84:      f8 94           cli
-                       uint16_t Count;
-
-                       uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                       GlobalInterruptDisable();
-
-                       Count = Buffer->Count;
-     b86:      80 91 5c 01     lds     r24, 0x015C
-     b8a:      90 91 5d 01     lds     r25, 0x015D
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-     b8e:      2f bf           out     0x3f, r18       ; 63
-  uint8_t action=0,axis=0;
-  int8_t num_sign = 1;
-  char byte;
-  
-  /* Load the next byte from the USART transmit buffer into the USART */
-  if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
-     b90:      00 97           sbiw    r24, 0x00       ; 0
-     b92:      09 f4           brne    .+2             ; 0xb96 <parse_command+0x24>
-     b94:      94 c1           rjmp    .+808           ; 0xebe <parse_command+0x34c>
-    byte = RingBuffer_Remove(&USBtoUSART_Buffer);
-     b96:      82 e5           ldi     r24, 0x52       ; 82
-     b98:      91 e0           ldi     r25, 0x01       ; 1
-     b9a:      05 db           rcall   .-2550          ; 0x1a6 <RingBuffer_Remove>
-     b9c:      18 2f           mov     r17, r24
-    
-    if (byte == '\r' || byte == '\n') {// end of command, evaluate cemmand!
-     b9e:      8d 30           cpi     r24, 0x0D       ; 13
-     ba0:      19 f0           breq    .+6             ; 0xba8 <parse_command+0x36>
-     ba2:      8a 30           cpi     r24, 0x0A       ; 10
-     ba4:      09 f0           breq    .+2             ; 0xba8 <parse_command+0x36>
-     ba6:      74 c1           rjmp    .+744           ; 0xe90 <parse_command+0x31e>
-      uart_puts("\r\n");
-     ba8:      84 e1           ldi     r24, 0x14       ; 20
-     baa:      91 e0           ldi     r25, 0x01       ; 1
-     bac:      59 de           rcall   .-846           ; 0x860 <uart_puts>
-      cmdbuffer[cmdPos] = '\0'; // terminate new command string
-     bae:      80 91 6d 02     lds     r24, 0x026D
-     bb2:      e8 2f           mov     r30, r24
-     bb4:      f0 e0           ldi     r31, 0x00       ; 0
-     bb6:      ee 57           subi    r30, 0x7E       ; 126
-     bb8:      fd 4f           sbci    r31, 0xFD       ; 253
-     bba:      10 82           st      Z, r1
-      curCmdLen = cmdPos;
-     bbc:      80 93 6c 02     sts     0x026C, r24
-      cmdPos = 0;
-     bc0:      10 92 6d 02     sts     0x026D, r1
-      
-      
-      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command
-     bc4:      80 91 82 02     lds     r24, 0x0282
-     bc8:      87 36           cpi     r24, 0x67       ; 103
-     bca:      59 f0           breq    .+22            ; 0xbe2 <parse_command+0x70>
-     bcc:      87 34           cpi     r24, 0x47       ; 71
-     bce:      49 f0           breq    .+18            ; 0xbe2 <parse_command+0x70>
-        action = GOTO;
-      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {
-     bd0:      8d 36           cpi     r24, 0x6D       ; 109
-     bd2:      49 f0           breq    .+18            ; 0xbe6 <parse_command+0x74>
-     bd4:      8d 34           cpi     r24, 0x4D       ; 77
-     bd6:      39 f0           breq    .+14            ; 0xbe6 <parse_command+0x74>
-        action = MOVEREL;
-      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {
-     bd8:      8a 37           cpi     r24, 0x7A       ; 122
-     bda:      39 f0           breq    .+14            ; 0xbea <parse_command+0x78>
-     bdc:      8a 35           cpi     r24, 0x5A       ; 90
-     bde:      39 f4           brne    .+14            ; 0xbee <parse_command+0x7c>
-     be0:      04 c0           rjmp    .+8             ; 0xbea <parse_command+0x78>
-      curCmdLen = cmdPos;
-      cmdPos = 0;
-      
-      
-      if (cmdbuffer[0] == 'g' || cmdbuffer[0] == 'G') { // goto command
-        action = GOTO;
-     be2:      01 e0           ldi     r16, 0x01       ; 1
-     be4:      05 c0           rjmp    .+10            ; 0xbf0 <parse_command+0x7e>
-      } else if ( cmdbuffer[0] == 'm' || cmdbuffer[0] == 'M') {
-        action = MOVEREL;
-     be6:      02 e0           ldi     r16, 0x02       ; 2
-     be8:      03 c0           rjmp    .+6             ; 0xbf0 <parse_command+0x7e>
-      } else if ( cmdbuffer[0] == 'z' || cmdbuffer[0] == 'Z' ) {
-        action = SETZERO;
-     bea:      03 e0           ldi     r16, 0x03       ; 3
-     bec:      01 c0           rjmp    .+2             ; 0xbf0 <parse_command+0x7e>
-      } else {
-        action = POSITION;
-     bee:      00 e0           ldi     r16, 0x00       ; 0
-      }
-      
-      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {
-     bf0:      80 91 83 02     lds     r24, 0x0283
-     bf4:      88 37           cpi     r24, 0x78       ; 120
-     bf6:      39 f0           breq    .+14            ; 0xc06 <parse_command+0x94>
-     bf8:      88 35           cpi     r24, 0x58       ; 88
-     bfa:      29 f0           breq    .+10            ; 0xc06 <parse_command+0x94>
-        axis = X;
-      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {
-     bfc:      89 37           cpi     r24, 0x79       ; 121
-     bfe:      29 f0           breq    .+10            ; 0xc0a <parse_command+0x98>
-#define POSITION 0
-#define GOTO 1
-#define MOVEREL 2
-#define SETZERO 3
-
-void parse_command(void){
-     c00:      11 e0           ldi     r17, 0x01       ; 1
-     c02:      89 35           cpi     r24, 0x59       ; 89
-     c04:      19 f0           breq    .+6             ; 0xc0c <parse_command+0x9a>
-      } else {
-        action = POSITION;
-      }
-      
-      if (cmdbuffer[1] == 'x' || cmdbuffer[1] == 'X') {
-        axis = X;
-     c06:      10 e0           ldi     r17, 0x00       ; 0
-     c08:      01 c0           rjmp    .+2             ; 0xc0c <parse_command+0x9a>
-      } else if (cmdbuffer[1] == 'y' || cmdbuffer[1] == 'Y') {
-        axis = Y;
-     c0a:      11 e0           ldi     r17, 0x01       ; 1
-      }
-      
-      // if you expect coordinate, parse number!
-      if (action == GOTO || action == MOVEREL){
-     c0c:      80 2f           mov     r24, r16
-     c0e:      81 50           subi    r24, 0x01       ; 1
-     c10:      82 30           cpi     r24, 0x02       ; 2
-     c12:      08 f0           brcs    .+2             ; 0xc16 <parse_command+0xa4>
-     c14:      6d c0           rjmp    .+218           ; 0xcf0 <parse_command+0x17e>
-
-        predot = 0;
-     c16:      10 92 71 02     sts     0x0271, r1
-     c1a:      10 92 70 02     sts     0x0270, r1
-        postdot = 0;
-     c1e:      10 92 6f 02     sts     0x026F, r1
-     c22:      10 92 6e 02     sts     0x026E, r1
-        num_sign = 1;
-        num_start = 0;
-     c26:      10 92 6b 02     sts     0x026B, r1
-        nums_found = 0;
-     c2a:      10 92 6a 02     sts     0x026A, r1
-        
-        for (uint8_t i=2; i<=curCmdLen; i++) {
-     c2e:      72 e0           ldi     r23, 0x02       ; 2
-     c30:      f7 2e           mov     r15, r23
-      // if you expect coordinate, parse number!
-      if (action == GOTO || action == MOVEREL){
-
-        predot = 0;
-        postdot = 0;
-        num_sign = 1;
-     c32:      dd 24           eor     r13, r13
-     c34:      d3 94           inc     r13
-                  predot = atoi(numbuffer);
-                } else { // its the postdot digits
-                  uint8_t postdotlen = i-num_start;
-                  if (postdotlen < 3){ // if too small ,fill with zeros
-                    for( uint8_t j = postdotlen; j <=2; j++) {
-                      numbuffer[j] = '0';
-     c36:      60 e3           ldi     r22, 0x30       ; 48
-     c38:      c6 2e           mov     r12, r22
-        postdot = 0;
-        num_sign = 1;
-        num_start = 0;
-        nums_found = 0;
-        
-        for (uint8_t i=2; i<=curCmdLen; i++) {
-     c3a:      54 c0           rjmp    .+168           ; 0xce4 <parse_command+0x172>
-           if ( num_start == 0 && cmdbuffer[i] == '-' ) { // if you find a minus before
-     c3c:      e0 90 6b 02     lds     r14, 0x026B
-     c40:      ee 20           and     r14, r14
-     c42:      49 f4           brne    .+18            ; 0xc56 <parse_command+0xe4>
-     c44:      ef 2d           mov     r30, r15
-     c46:      f0 e0           ldi     r31, 0x00       ; 0
-     c48:      ee 57           subi    r30, 0x7E       ; 126
-     c4a:      fd 4f           sbci    r31, 0xFD       ; 253
-     c4c:      80 81           ld      r24, Z
-     c4e:      8d 32           cpi     r24, 0x2D       ; 45
-     c50:      11 f4           brne    .+4             ; 0xc56 <parse_command+0xe4>
-            // you find a digit, it's a negative number
-             num_sign = -1;
-     c52:      dd 24           eor     r13, r13
-     c54:      da 94           dec     r13
-           }
-           
-           if ( cmdbuffer[i] >= 48 && cmdbuffer[i] <= 57 ){ // is it a number?
-     c56:      cf 2d           mov     r28, r15
-     c58:      d0 e0           ldi     r29, 0x00       ; 0
-     c5a:      fe 01           movw    r30, r28
-     c5c:      ee 57           subi    r30, 0x7E       ; 126
-     c5e:      fd 4f           sbci    r31, 0xFD       ; 253
-     c60:      80 81           ld      r24, Z
-     c62:      80 53           subi    r24, 0x30       ; 48
-     c64:      8a 30           cpi     r24, 0x0A       ; 10
-     c66:      28 f4           brcc    .+10            ; 0xc72 <parse_command+0x100>
-             if ( num_start == 0) { // this is the first digit in the string
-     c68:      ee 20           and     r14, r14
-     c6a:      d9 f5           brne    .+118           ; 0xce2 <parse_command+0x170>
-               num_start = i;
-     c6c:      f0 92 6b 02     sts     0x026B, r15
-     c70:      38 c0           rjmp    .+112           ; 0xce2 <parse_command+0x170>
-             }
-           } else { // no digit!
-             if ( num_start != 0) { // digits have been found before
-     c72:      ee 20           and     r14, r14
-     c74:      b1 f1           breq    .+108           ; 0xce2 <parse_command+0x170>
-                strncpy(numbuffer,cmdbuffer+num_start,i-num_start); // copy number found to
-     c76:      6e 2d           mov     r22, r14
-     c78:      70 e0           ldi     r23, 0x00       ; 0
-     c7a:      c6 1b           sub     r28, r22
-     c7c:      d7 0b           sbc     r29, r23
-     c7e:      6e 57           subi    r22, 0x7E       ; 126
-     c80:      7d 4f           sbci    r23, 0xFD       ; 253
-     c82:      82 e7           ldi     r24, 0x72       ; 114
-     c84:      92 e0           ldi     r25, 0x02       ; 2
-     c86:      ae 01           movw    r20, r28
-     c88:      0e 94 af 0f     call    0x1f5e  ; 0x1f5e <strncpy>
-                // numbuffer
-                numbuffer[i-num_start] = '\0'; // make sure it's always a terminated string
-     c8c:      ce 58           subi    r28, 0x8E       ; 142
-     c8e:      dd 4f           sbci    r29, 0xFD       ; 253
-     c90:      18 82           st      Y, r1
-                nums_found++;
-     c92:      80 91 6a 02     lds     r24, 0x026A
-     c96:      8f 5f           subi    r24, 0xFF       ; 255
-     c98:      80 93 6a 02     sts     0x026A, r24
-                if(nums_found == 1) { // its the predot digits
-     c9c:      81 30           cpi     r24, 0x01       ; 1
-     c9e:      49 f4           brne    .+18            ; 0xcb2 <parse_command+0x140>
-                  predot = atoi(numbuffer);
-     ca0:      82 e7           ldi     r24, 0x72       ; 114
-     ca2:      92 e0           ldi     r25, 0x02       ; 2
-     ca4:      0e 94 92 0f     call    0x1f24  ; 0x1f24 <atoi>
-     ca8:      90 93 71 02     sts     0x0271, r25
-     cac:      80 93 70 02     sts     0x0270, r24
-     cb0:      16 c0           rjmp    .+44            ; 0xcde <parse_command+0x16c>
-                } else { // its the postdot digits
-                  uint8_t postdotlen = i-num_start;
-     cb2:      8f 2d           mov     r24, r15
-     cb4:      8e 19           sub     r24, r14
-                  if (postdotlen < 3){ // if too small ,fill with zeros
-     cb6:      83 30           cpi     r24, 0x03       ; 3
-     cb8:      40 f4           brcc    .+16            ; 0xcca <parse_command+0x158>
-                    for( uint8_t j = postdotlen; j <=2; j++) {
-                      numbuffer[j] = '0';
-     cba:      e8 2f           mov     r30, r24
-     cbc:      f0 e0           ldi     r31, 0x00       ; 0
-     cbe:      ee 58           subi    r30, 0x8E       ; 142
-     cc0:      fd 4f           sbci    r31, 0xFD       ; 253
-     cc2:      c0 82           st      Z, r12
-                if(nums_found == 1) { // its the predot digits
-                  predot = atoi(numbuffer);
-                } else { // its the postdot digits
-                  uint8_t postdotlen = i-num_start;
-                  if (postdotlen < 3){ // if too small ,fill with zeros
-                    for( uint8_t j = postdotlen; j <=2; j++) {
-     cc4:      8f 5f           subi    r24, 0xFF       ; 255
-     cc6:      83 30           cpi     r24, 0x03       ; 3
-     cc8:      c1 f7           brne    .-16            ; 0xcba <parse_command+0x148>
-                      numbuffer[j] = '0';
-                    }
-                  }
-                  // crop the number to three post dot digits
-                  numbuffer[3] = '\0';
-     cca:      10 92 75 02     sts     0x0275, r1
-                  
-                  postdot = atoi(numbuffer);
-     cce:      82 e7           ldi     r24, 0x72       ; 114
-     cd0:      92 e0           ldi     r25, 0x02       ; 2
-     cd2:      0e 94 92 0f     call    0x1f24  ; 0x1f24 <atoi>
-     cd6:      90 93 6f 02     sts     0x026F, r25
-     cda:      80 93 6e 02     sts     0x026E, r24
-                }
-                num_start = 0;
-     cde:      10 92 6b 02     sts     0x026B, r1
-        postdot = 0;
-        num_sign = 1;
-        num_start = 0;
-        nums_found = 0;
-        
-        for (uint8_t i=2; i<=curCmdLen; i++) {
-     ce2:      f3 94           inc     r15
-     ce4:      80 91 6c 02     lds     r24, 0x026C
-     ce8:      8f 15           cp      r24, r15
-     cea:      08 f0           brcs    .+2             ; 0xcee <parse_command+0x17c>
-     cec:      a7 cf           rjmp    .-178           ; 0xc3c <parse_command+0xca>
-     cee:      02 c0           rjmp    .+4             ; 0xcf4 <parse_command+0x182>
-  static char cmdbuffer[32];
-  static char numbuffer[16];
-  static uint16_t predot = 0,postdot = 0;
-  static uint8_t cmdPos, curCmdLen, num_start = 0, nums_found = 0;
-  uint8_t action=0,axis=0;
-  int8_t num_sign = 1;
-     cf0:      dd 24           eor     r13, r13
-     cf2:      d3 94           inc     r13
-        
-      }
-      
-      int16_t steps = 0,dest=0;
-      
-      switch (action) {
-     cf4:      02 30           cpi     r16, 0x02       ; 2
-     cf6:      09 f4           brne    .+2             ; 0xcfa <parse_command+0x188>
-     cf8:      61 c0           rjmp    .+194           ; 0xdbc <parse_command+0x24a>
-     cfa:      03 30           cpi     r16, 0x03       ; 3
-     cfc:      09 f4           brne    .+2             ; 0xd00 <parse_command+0x18e>
-     cfe:      be c0           rjmp    .+380           ; 0xe7c <parse_command+0x30a>
-     d00:      01 30           cpi     r16, 0x01       ; 1
-     d02:      09 f0           breq    .+2             ; 0xd06 <parse_command+0x194>
-     d04:      c3 c0           rjmp    .+390           ; 0xe8c <parse_command+0x31a>
-        case GOTO:
-          uart_puts("GOTO ");
-     d06:      87 e1           ldi     r24, 0x17       ; 23
-     d08:      91 e0           ldi     r25, 0x01       ; 1
-     d0a:      aa dd           rcall   .-1196          ; 0x860 <uart_puts>
-          uart_putc(88+axis);// x or y
-     d0c:      81 2f           mov     r24, r17
-     d0e:      88 5a           subi    r24, 0xA8       ; 168
-     d10:      9f dd           rcall   .-1218          ; 0x850 <uart_putc>
-          uart_putc(' ');
-     d12:      80 e2           ldi     r24, 0x20       ; 32
-     d14:      9d dd           rcall   .-1222          ; 0x850 <uart_putc>
-          uart_print_signed_number(predot*num_sign,3);
-     d16:      cd 2d           mov     r28, r13
-     d18:      dd 27           eor     r29, r29
-     d1a:      c7 fd           sbrc    r28, 7
-     d1c:      d0 95           com     r29
-     d1e:      60 91 70 02     lds     r22, 0x0270
-     d22:      70 91 71 02     lds     r23, 0x0271
-     d26:      ce 01           movw    r24, r28
-     d28:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     d2c:      bc 01           movw    r22, r24
-     d2e:      80 e0           ldi     r24, 0x00       ; 0
-     d30:      90 e0           ldi     r25, 0x00       ; 0
-     d32:      43 e0           ldi     r20, 0x03       ; 3
-     d34:      2e de           rcall   .-932           ; 0x992 <uart_print_signed_number>
-          uart_putc('.');
-     d36:      8e e2           ldi     r24, 0x2E       ; 46
-     d38:      8b dd           rcall   .-1258          ; 0x850 <uart_putc>
-          uart_print_number_wlzeros(postdot,3);
-     d3a:      60 91 6e 02     lds     r22, 0x026E
-     d3e:      70 91 6f 02     lds     r23, 0x026F
-     d42:      80 e0           ldi     r24, 0x00       ; 0
-     d44:      90 e0           ldi     r25, 0x00       ; 0
-     d46:      43 e0           ldi     r20, 0x03       ; 3
-     d48:      10 de           rcall   .-992           ; 0x96a <uart_print_number_wlzeros>
-          uart_puts("\r\n"); 
-     d4a:      84 e1           ldi     r24, 0x14       ; 20
-     d4c:      91 e0           ldi     r25, 0x01       ; 1
-     d4e:      88 dd           rcall   .-1264          ; 0x860 <uart_puts>
-          
-          dest = num_sign *( predot*24 +(postdot*10)/416);
-     d50:      80 91 6e 02     lds     r24, 0x026E
-     d54:      90 91 6f 02     lds     r25, 0x026F
-     d58:      6a e0           ldi     r22, 0x0A       ; 10
-     d5a:      70 e0           ldi     r23, 0x00       ; 0
-     d5c:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     d60:      60 ea           ldi     r22, 0xA0       ; 160
-     d62:      71 e0           ldi     r23, 0x01       ; 1
-     d64:      0e 94 49 0f     call    0x1e92  ; 0x1e92 <__udivmodhi4>
-     d68:      9b 01           movw    r18, r22
-     d6a:      80 91 70 02     lds     r24, 0x0270
-     d6e:      90 91 71 02     lds     r25, 0x0271
-     d72:      68 e1           ldi     r22, 0x18       ; 24
-     d74:      70 e0           ldi     r23, 0x00       ; 0
-     d76:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     d7a:      28 0f           add     r18, r24
-     d7c:      39 1f           adc     r19, r25
-     d7e:      ce 01           movw    r24, r28
-     d80:      b9 01           movw    r22, r18
-     d82:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-          
-          if (axis == X) {
-     d86:      11 23           and     r17, r17
-     d88:      69 f4           brne    .+26            ; 0xda4 <parse_command+0x232>
-            steps = dest - plate_pos_x; // experimental correction!
-     d8a:      20 91 4e 01     lds     r18, 0x014E
-     d8e:      30 91 4f 01     lds     r19, 0x014F
-     d92:      e8 2e           mov     r14, r24
-     d94:      e7 01           movw    r28, r14
-     d96:      7e 01           movw    r14, r28
-     d98:      f9 2e           mov     r15, r25
-     d9a:      e7 01           movw    r28, r14
-     d9c:      c2 1b           sub     r28, r18
-     d9e:      d3 0b           sbc     r29, r19
-            move_plate(steps,0);
-     da0:      ce 01           movw    r24, r28
-     da2:      4f c0           rjmp    .+158           ; 0xe42 <parse_command+0x2d0>
-            plate_pos_x += steps;
-          } else if (axis == Y) {
-            steps = dest - plate_pos_y;
-     da4:      20 91 50 01     lds     r18, 0x0150
-     da8:      30 91 51 01     lds     r19, 0x0151
-     dac:      e8 2e           mov     r14, r24
-     dae:      e7 01           movw    r28, r14
-     db0:      7e 01           movw    r14, r28
-     db2:      f9 2e           mov     r15, r25
-     db4:      e7 01           movw    r28, r14
-     db6:      c2 1b           sub     r28, r18
-     db8:      d3 0b           sbc     r29, r19
-     dba:      51 c0           rjmp    .+162           ; 0xe5e <parse_command+0x2ec>
-          }
-          pos_report();
-          
-          break;
-        case MOVEREL:
-          uart_puts("MOVE ");
-     dbc:      8d e1           ldi     r24, 0x1D       ; 29
-     dbe:      91 e0           ldi     r25, 0x01       ; 1
-     dc0:      4f dd           rcall   .-1378          ; 0x860 <uart_puts>
-          uart_putc(88+axis);// x or y
-     dc2:      81 2f           mov     r24, r17
-     dc4:      88 5a           subi    r24, 0xA8       ; 168
-     dc6:      44 dd           rcall   .-1400          ; 0x850 <uart_putc>
-          uart_putc(' ');
-     dc8:      80 e2           ldi     r24, 0x20       ; 32
-     dca:      42 dd           rcall   .-1404          ; 0x850 <uart_putc>
-          uart_print_signed_number(predot*num_sign,3);
-     dcc:      cd 2d           mov     r28, r13
-     dce:      dd 27           eor     r29, r29
-     dd0:      c7 fd           sbrc    r28, 7
-     dd2:      d0 95           com     r29
-     dd4:      60 91 70 02     lds     r22, 0x0270
-     dd8:      70 91 71 02     lds     r23, 0x0271
-     ddc:      ce 01           movw    r24, r28
-     dde:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     de2:      bc 01           movw    r22, r24
-     de4:      80 e0           ldi     r24, 0x00       ; 0
-     de6:      90 e0           ldi     r25, 0x00       ; 0
-     de8:      43 e0           ldi     r20, 0x03       ; 3
-     dea:      d3 dd           rcall   .-1114          ; 0x992 <uart_print_signed_number>
-          uart_putc('.');
-     dec:      8e e2           ldi     r24, 0x2E       ; 46
-     dee:      30 dd           rcall   .-1440          ; 0x850 <uart_putc>
-          uart_print_number_wlzeros(postdot,3);
-     df0:      60 91 6e 02     lds     r22, 0x026E
-     df4:      70 91 6f 02     lds     r23, 0x026F
-     df8:      80 e0           ldi     r24, 0x00       ; 0
-     dfa:      90 e0           ldi     r25, 0x00       ; 0
-     dfc:      43 e0           ldi     r20, 0x03       ; 3
-     dfe:      b5 dd           rcall   .-1174          ; 0x96a <uart_print_number_wlzeros>
-          uart_puts("\r\n"); 
-     e00:      84 e1           ldi     r24, 0x14       ; 20
-     e02:      91 e0           ldi     r25, 0x01       ; 1
-     e04:      2d dd           rcall   .-1446          ; 0x860 <uart_puts>
-          
-          steps = num_sign *( predot*24 +(postdot*10)/416);
-     e06:      80 91 6e 02     lds     r24, 0x026E
-     e0a:      90 91 6f 02     lds     r25, 0x026F
-     e0e:      6a e0           ldi     r22, 0x0A       ; 10
-     e10:      70 e0           ldi     r23, 0x00       ; 0
-     e12:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     e16:      60 ea           ldi     r22, 0xA0       ; 160
-     e18:      71 e0           ldi     r23, 0x01       ; 1
-     e1a:      0e 94 49 0f     call    0x1e92  ; 0x1e92 <__udivmodhi4>
-     e1e:      9b 01           movw    r18, r22
-     e20:      80 91 70 02     lds     r24, 0x0270
-     e24:      90 91 71 02     lds     r25, 0x0271
-     e28:      68 e1           ldi     r22, 0x18       ; 24
-     e2a:      70 e0           ldi     r23, 0x00       ; 0
-     e2c:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     e30:      28 0f           add     r18, r24
-     e32:      39 1f           adc     r19, r25
-     e34:      ce 01           movw    r24, r28
-     e36:      b9 01           movw    r22, r18
-     e38:      0e 94 37 0f     call    0x1e6e  ; 0x1e6e <__mulhi3>
-     e3c:      ec 01           movw    r28, r24
-          
-          if (axis == X) {
-     e3e:      11 23           and     r17, r17
-     e40:      71 f4           brne    .+28            ; 0xe5e <parse_command+0x2ec>
-            move_plate(steps,0);
-     e42:      60 e0           ldi     r22, 0x00       ; 0
-     e44:      70 e0           ldi     r23, 0x00       ; 0
-     e46:      07 de           rcall   .-1010          ; 0xa56 <move_plate>
-            plate_pos_x += steps;
-     e48:      80 91 4e 01     lds     r24, 0x014E
-     e4c:      90 91 4f 01     lds     r25, 0x014F
-     e50:      8c 0f           add     r24, r28
-     e52:      9d 1f           adc     r25, r29
-     e54:      90 93 4f 01     sts     0x014F, r25
-     e58:      80 93 4e 01     sts     0x014E, r24
-     e5c:      17 c0           rjmp    .+46            ; 0xe8c <parse_command+0x31a>
-          } else if (axis == Y) {
-            move_plate(0,steps);
-     e5e:      80 e0           ldi     r24, 0x00       ; 0
-     e60:      90 e0           ldi     r25, 0x00       ; 0
-     e62:      be 01           movw    r22, r28
-     e64:      f8 dd           rcall   .-1040          ; 0xa56 <move_plate>
-            plate_pos_y += steps;
-     e66:      80 91 50 01     lds     r24, 0x0150
-     e6a:      90 91 51 01     lds     r25, 0x0151
-     e6e:      8c 0f           add     r24, r28
-     e70:      9d 1f           adc     r25, r29
-     e72:      90 93 51 01     sts     0x0151, r25
-     e76:      80 93 50 01     sts     0x0150, r24
-     e7a:      08 c0           rjmp    .+16            ; 0xe8c <parse_command+0x31a>
-          }
-          pos_report();
-          break;
-          
-        case SETZERO:
-          plate_pos_x = 0;
-     e7c:      10 92 4f 01     sts     0x014F, r1
-     e80:      10 92 4e 01     sts     0x014E, r1
-          plate_pos_y = 0;
-     e84:      10 92 51 01     sts     0x0151, r1
-     e88:      10 92 50 01     sts     0x0150, r1
-          pos_report();
-          break;
-          
-        case POSITION:
-          pos_report();
-     e8c:      5f de           rcall   .-834           ; 0xb4c <pos_report>
-          break;
-     e8e:      17 c0           rjmp    .+46            ; 0xebe <parse_command+0x34c>
-      }
-      
-      
-      
-    } else { // queue command
-      if( cmdPos == 0 ){
-     e90:      80 91 6d 02     lds     r24, 0x026D
-     e94:      88 23           and     r24, r24
-     e96:      19 f4           brne    .+6             ; 0xe9e <parse_command+0x32c>
-        uart_puts("\r\n$ ");
-     e98:      83 e2           ldi     r24, 0x23       ; 35
-     e9a:      91 e0           ldi     r25, 0x01       ; 1
-     e9c:      e1 dc           rcall   .-1598          ; 0x860 <uart_puts>
-     e9e:      80 91 6d 02     lds     r24, 0x026D
-      }
-      
-      if( byte == 8 ){ // backspace
-     ea2:      18 30           cpi     r17, 0x08       ; 8
-     ea4:      11 f4           brne    .+4             ; 0xeaa <parse_command+0x338>
-        cmdPos--;
-     ea6:      81 50           subi    r24, 0x01       ; 1
-     ea8:      06 c0           rjmp    .+12            ; 0xeb6 <parse_command+0x344>
-      } else {
-        cmdbuffer[cmdPos++] = byte;
-     eaa:      e8 2f           mov     r30, r24
-     eac:      f0 e0           ldi     r31, 0x00       ; 0
-     eae:      ee 57           subi    r30, 0x7E       ; 126
-     eb0:      fd 4f           sbci    r31, 0xFD       ; 253
-     eb2:      10 83           st      Z, r17
-     eb4:      8f 5f           subi    r24, 0xFF       ; 255
-     eb6:      80 93 6d 02     sts     0x026D, r24
-      }
-      uart_putc(byte);
-     eba:      81 2f           mov     r24, r17
-     ebc:      c9 dc           rcall   .-1646          ; 0x850 <uart_putc>
-      
-
-    }
-  }
-}
-     ebe:      df 91           pop     r29
-     ec0:      cf 91           pop     r28
-     ec2:      1f 91           pop     r17
-     ec4:      0f 91           pop     r16
-     ec6:      ff 90           pop     r15
-     ec8:      ef 90           pop     r14
-     eca:      df 90           pop     r13
-     ecc:      cf 90           pop     r12
-     ece:      08 95           ret
-
-00000ed0 <main>:
-
-int main(void)
-{
-     ed0:      0f 93           push    r16
-     ed2:      1f 93           push    r17
-     ed4:      df 93           push    r29
-     ed6:      cf 93           push    r28
-     ed8:      0f 92           push    r0
-     eda:      cd b7           in      r28, 0x3d       ; 61
-     edc:      de b7           in      r29, 0x3e       ; 62
-  init_motors();
-     ede:      7c dd           rcall   .-1288          ; 0x9d8 <init_motors>
-  init_leds();
-     ee0:      77 db           rcall   .-2322          ; 0x5d0 <init_leds>
-  init_sw();
-     ee2:      97 db           rcall   .-2258          ; 0x612 <init_sw>
-
-  
-  char dummy;
-  uint8_t field_val = 0;
-  SetupHardware();
-     ee4:      06 dc           rcall   .-2036          ; 0x6f2 <SetupHardware>
-
-
-
-  RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data));
-     ee6:      82 e5           ldi     r24, 0x52       ; 82
-     ee8:      91 e0           ldi     r25, 0x01       ; 1
-     eea:      6e e5           ldi     r22, 0x5E       ; 94
-     eec:      71 e0           ldi     r23, 0x01       ; 1
-     eee:      e9 d9           rcall   .-3118          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
-  RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data));
-     ef0:      8e ed           ldi     r24, 0xDE       ; 222
-     ef2:      91 e0           ldi     r25, 0x01       ; 1
-     ef4:      6a ee           ldi     r22, 0xEA       ; 234
-     ef6:      71 e0           ldi     r23, 0x01       ; 1
-     ef8:      e4 d9           rcall   .-3128          ; 0x2c2 <RingBuffer_InitBuffer.clone.0>
-                       static inline void GlobalInterruptEnable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               sei();
-     efa:      78 94           sei
-
-//   LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-  GlobalInterruptEnable();
-
-  touchpad_init(); // you need to call this to setup the I/O pin!
-     efc:      24 db           rcall   .-2488          ; 0x546 <touchpad_init>
-     efe:      8f ef           ldi     r24, 0xFF       ; 255
-     f00:      99 e6           ldi     r25, 0x69       ; 105
-     f02:      a8 e1           ldi     r26, 0x18       ; 24
-     f04:      81 50           subi    r24, 0x01       ; 1
-     f06:      90 40           sbci    r25, 0x00       ; 0
-     f08:      a0 40           sbci    r26, 0x00       ; 0
-     f0a:      e1 f7           brne    .-8             ; 0xf04 <main+0x34>
-     f0c:      00 c0           rjmp    .+0             ; 0xf0e <main+0x3e>
-     f0e:      00 00           nop
-  _delay_ms(500);
-  sei();
-     f10:      78 94           sei
-  uint16_t loopcounter=0;
-
-
-
-//   uart_puts("you selected the relative position demo modus:\n\r");
-  touchpad_set_rel_mode_100dpi();// use touchpad in relative mode
-     f12:      2a db           rcall   .-2476          ; 0x568 <touchpad_set_rel_mode_100dpi>
-//  touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution
-  int16_t x, y = 0;
-  int8_t dx, dy = 0;
-  uint8_t busy = 0, last_busy = 0;
-     f14:      10 e0           ldi     r17, 0x00       ; 0
-     f16:      01 c0           rjmp    .+2             ; 0xf1a <main+0x4a>
-    }
-  }
-}
-
-int main(void)
-{
-     f18:      18 2f           mov     r17, r24
-  int8_t dx, dy = 0;
-  uint8_t busy = 0, last_busy = 0;
-
-  while (1) {
-    
-    set_led0(sw0_state());
-     f1a:      82 db           rcall   .-2300          ; 0x620 <sw0_state>
-     f1c:      5d db           rcall   .-2374          ; 0x5d8 <set_led0>
-    set_led1(sw1_state());
-     f1e:      8a db           rcall   .-2284          ; 0x634 <sw1_state>
-     f20:      65 db           rcall   .-2358          ; 0x5ec <set_led1>
-    set_led2(sw2_state());
-     f22:      92 db           rcall   .-2268          ; 0x648 <sw2_state>
-     f24:      69 db           rcall   .-2350          ; 0x5f8 <set_led2>
-
-    Usb2SerialTask();
-     f26:      9a db           rcall   .-2252          ; 0x65c <Usb2SerialTask>
-//     loopcounter++;
-//     if(loopcounter<2000) {
-//       continue;
-//     }
-//     loopcounter=0;
-    parse_command(); // read data from virtual comport
-     f28:      24 de           rcall   .-952           ; 0xb72 <parse_command>
-    touchpad_read(); // read data from touchpad
-     f2a:      15 db           rcall   .-2518          ; 0x556 <touchpad_read>
-
-    dx = -delta_x();// returns the amount your finger has moved in x direction since last readout
-     f2c:      41 db           rcall   .-2430          ; 0x5b0 <delta_x>
-     f2e:      08 2f           mov     r16, r24
-    dy = -delta_y();// returns the amount your finger has moved in y direction since last readout
-     f30:      2f db           rcall   .-2466          ; 0x590 <delta_y>
-//     }
-//     loopcounter=0;
-    parse_command(); // read data from virtual comport
-    touchpad_read(); // read data from touchpad
-
-    dx = -delta_x();// returns the amount your finger has moved in x direction since last readout
-     f32:      01 95           neg     r16
-    dy = -delta_y();// returns the amount your finger has moved in y direction since last readout
-
-    // increment/decrement some dummy variables with the
-
-    plate_pos_x += dx;
-     f34:      40 2f           mov     r20, r16
-     f36:      55 27           eor     r21, r21
-     f38:      47 fd           sbrc    r20, 7
-     f3a:      50 95           com     r21
-     f3c:      20 91 4e 01     lds     r18, 0x014E
-     f40:      30 91 4f 01     lds     r19, 0x014F
-     f44:      24 0f           add     r18, r20
-     f46:      35 1f           adc     r19, r21
-     f48:      30 93 4f 01     sts     0x014F, r19
-     f4c:      20 93 4e 01     sts     0x014E, r18
-//     loopcounter=0;
-    parse_command(); // read data from virtual comport
-    touchpad_read(); // read data from touchpad
-
-    dx = -delta_x();// returns the amount your finger has moved in x direction since last readout
-    dy = -delta_y();// returns the amount your finger has moved in y direction since last readout
-     f50:      81 95           neg     r24
-
-    // increment/decrement some dummy variables with the
-
-    plate_pos_x += dx;
-    plate_pos_y += dy;
-     f52:      68 2f           mov     r22, r24
-     f54:      77 27           eor     r23, r23
-     f56:      67 fd           sbrc    r22, 7
-     f58:      70 95           com     r23
-     f5a:      80 91 50 01     lds     r24, 0x0150
-     f5e:      90 91 51 01     lds     r25, 0x0151
-     f62:      86 0f           add     r24, r22
-     f64:      97 1f           adc     r25, r23
-     f66:      90 93 51 01     sts     0x0151, r25
-     f6a:      80 93 50 01     sts     0x0150, r24
-    
-    
-    last_busy = busy;
-    busy = move_plate(dx,dy);
-     f6e:      ca 01           movw    r24, r20
-     f70:      72 dd           rcall   .-1308          ; 0xa56 <move_plate>
-    
-    
-    if (last_busy && !(busy)){
-     f72:      11 23           and     r17, r17
-     f74:      89 f2           breq    .-94            ; 0xf18 <main+0x48>
-     f76:      88 23           and     r24, r24
-     f78:      79 f6           brne    .-98            ; 0xf18 <main+0x48>
-      pos_report();
-     f7a:      89 83           std     Y+1, r24        ; 0x01
-     f7c:      e7 dd           rcall   .-1074          ; 0xb4c <pos_report>
-     f7e:      89 81           ldd     r24, Y+1        ; 0x01
-     f80:      cb cf           rjmp    .-106           ; 0xf18 <main+0x48>
-
-00000f82 <CALLBACK_USB_GetDescriptor>:
-       const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-       const void* Address = NULL;
-       uint16_t    Size    = NO_DESCRIPTOR;
-
-       switch (DescriptorType)
-     f82:      92 30           cpi     r25, 0x02       ; 2
-     f84:      29 f0           breq    .+10            ; 0xf90 <CALLBACK_USB_GetDescriptor+0xe>
-     f86:      93 30           cpi     r25, 0x03       ; 3
-     f88:      41 f0           breq    .+16            ; 0xf9a <CALLBACK_USB_GetDescriptor+0x18>
-     f8a:      91 30           cpi     r25, 0x01       ; 1
-     f8c:      e9 f4           brne    .+58            ; 0xfc8 <CALLBACK_USB_GetDescriptor+0x46>
-     f8e:      17 c0           rjmp    .+46            ; 0xfbe <CALLBACK_USB_GetDescriptor+0x3c>
-                       Address = &DeviceDescriptor;
-                       Size    = sizeof(USB_Descriptor_Device_t);
-                       break;
-               case DTYPE_Configuration:
-                       Address = &ConfigurationDescriptor;
-                       Size    = sizeof(USB_Descriptor_Configuration_t);
-     f90:      2e e3           ldi     r18, 0x3E       ; 62
-     f92:      30 e0           ldi     r19, 0x00       ; 0
-               case DTYPE_Device:
-                       Address = &DeviceDescriptor;
-                       Size    = sizeof(USB_Descriptor_Device_t);
-                       break;
-               case DTYPE_Configuration:
-                       Address = &ConfigurationDescriptor;
-     f94:      ea ea           ldi     r30, 0xAA       ; 170
-     f96:      f0 e0           ldi     r31, 0x00       ; 0
-                       Size    = sizeof(USB_Descriptor_Configuration_t);
-                       break;
-     f98:      1b c0           rjmp    .+54            ; 0xfd0 <CALLBACK_USB_GetDescriptor+0x4e>
-               case DTYPE_String:
-                       switch (DescriptorNumber)
-     f9a:      81 30           cpi     r24, 0x01       ; 1
-     f9c:      41 f0           breq    .+16            ; 0xfae <CALLBACK_USB_GetDescriptor+0x2c>
-     f9e:      81 30           cpi     r24, 0x01       ; 1
-     fa0:      18 f0           brcs    .+6             ; 0xfa8 <CALLBACK_USB_GetDescriptor+0x26>
-     fa2:      82 30           cpi     r24, 0x02       ; 2
-     fa4:      89 f4           brne    .+34            ; 0xfc8 <CALLBACK_USB_GetDescriptor+0x46>
-     fa6:      06 c0           rjmp    .+12            ; 0xfb4 <CALLBACK_USB_GetDescriptor+0x32>
-                       {
-                               case 0x00:
-                                       Address = &LanguageString;
-                                       Size    = pgm_read_byte(&LanguageString.Header.Size);
-     fa8:      e8 ee           ldi     r30, 0xE8       ; 232
-     faa:      f0 e0           ldi     r31, 0x00       ; 0
-     fac:      05 c0           rjmp    .+10            ; 0xfb8 <CALLBACK_USB_GetDescriptor+0x36>
-                                       break;
-                               case 0x01:
-                                       Address = &ManufacturerString;
-                                       Size    = pgm_read_byte(&ManufacturerString.Header.Size);
-     fae:      ec ee           ldi     r30, 0xEC       ; 236
-     fb0:      f0 e0           ldi     r31, 0x00       ; 0
-     fb2:      02 c0           rjmp    .+4             ; 0xfb8 <CALLBACK_USB_GetDescriptor+0x36>
-                                       break;
-                               case 0x02:
-                                       Address = &ProductString;
-                                       Size    = pgm_read_byte(&ProductString.Header.Size);
-     fb4:      e6 e0           ldi     r30, 0x06       ; 6
-     fb6:      f1 e0           ldi     r31, 0x01       ; 1
-     fb8:      24 91           lpm     r18, Z+
-     fba:      30 e0           ldi     r19, 0x00       ; 0
-                                       break;
-     fbc:      09 c0           rjmp    .+18            ; 0xfd0 <CALLBACK_USB_GetDescriptor+0x4e>
-
-       switch (DescriptorType)
-       {
-               case DTYPE_Device:
-                       Address = &DeviceDescriptor;
-                       Size    = sizeof(USB_Descriptor_Device_t);
-     fbe:      22 e1           ldi     r18, 0x12       ; 18
-     fc0:      30 e0           ldi     r19, 0x00       ; 0
-       uint16_t    Size    = NO_DESCRIPTOR;
-
-       switch (DescriptorType)
-       {
-               case DTYPE_Device:
-                       Address = &DeviceDescriptor;
-     fc2:      e8 e9           ldi     r30, 0x98       ; 152
-     fc4:      f0 e0           ldi     r31, 0x00       ; 0
-     fc6:      04 c0           rjmp    .+8             ; 0xfd0 <CALLBACK_USB_GetDescriptor+0x4e>
-{
-       const uint8_t  DescriptorType   = (wValue >> 8);
-       const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-       const void* Address = NULL;
-       uint16_t    Size    = NO_DESCRIPTOR;
-     fc8:      20 e0           ldi     r18, 0x00       ; 0
-     fca:      30 e0           ldi     r19, 0x00       ; 0
-                                    const void** const DescriptorAddress)
-{
-       const uint8_t  DescriptorType   = (wValue >> 8);
-       const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-       const void* Address = NULL;
-     fcc:      e0 e0           ldi     r30, 0x00       ; 0
-     fce:      f0 e0           ldi     r31, 0x00       ; 0
-                       }
-
-                       break;
-       }
-
-       *DescriptorAddress = Address;
-     fd0:      da 01           movw    r26, r20
-     fd2:      11 96           adiw    r26, 0x01       ; 1
-     fd4:      fc 93           st      X, r31
-     fd6:      ee 93           st      -X, r30
-       return Size;
-}
-     fd8:      c9 01           movw    r24, r18
-     fda:      08 95           ret
-
-00000fdc <Endpoint_Write_Control_Stream_LE>:
-#if defined(TEMPLATE_FUNC_NAME)
-
-uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
-                            uint16_t Length)
-{
-       uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
-     fdc:      28 2f           mov     r18, r24
-     fde:      39 2f           mov     r19, r25
-     fe0:      f9 01           movw    r30, r18
-       bool     LastPacketFull = false;
-
-       if (Length > USB_ControlRequest.wLength)
-     fe2:      80 91 d2 02     lds     r24, 0x02D2
-     fe6:      90 91 d3 02     lds     r25, 0x02D3
-     fea:      86 17           cp      r24, r22
-     fec:      97 07           cpc     r25, r23
-     fee:      18 f4           brcc    .+6             ; 0xff6 <Endpoint_Write_Control_Stream_LE+0x1a>
-     ff0:      bc 01           movw    r22, r24
-     ff2:      20 e0           ldi     r18, 0x00       ; 0
-     ff4:      34 c0           rjmp    .+104           ; 0x105e <Endpoint_Write_Control_Stream_LE+0x82>
-         Length = USB_ControlRequest.wLength;
-       else if (!(Length))
-     ff6:      61 15           cp      r22, r1
-     ff8:      71 05           cpc     r23, r1
-     ffa:      d9 f7           brne    .-10            ; 0xff2 <Endpoint_Write_Control_Stream_LE+0x16>
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-     ffc:      80 91 e8 00     lds     r24, 0x00E8
-    1000:      8e 77           andi    r24, 0x7E       ; 126
-    1002:      80 93 e8 00     sts     0x00E8, r24
-    1006:      f5 cf           rjmp    .-22            ; 0xff2 <Endpoint_Write_Control_Stream_LE+0x16>
-         Endpoint_ClearIN();
-
-       while (Length || LastPacketFull)
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-    1008:      8e b3           in      r24, 0x1e       ; 30
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-    100a:      88 23           and     r24, r24
-    100c:      e9 f1           breq    .+122           ; 0x1088 <Endpoint_Write_Control_Stream_LE+0xac>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-    100e:      85 30           cpi     r24, 0x05       ; 5
-    1010:      b9 f1           breq    .+110           ; 0x1080 <Endpoint_Write_Control_Stream_LE+0xa4>
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    1012:      80 91 e8 00     lds     r24, 0x00E8
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-               else if (Endpoint_IsSETUPReceived())
-    1016:      83 fd           sbrc    r24, 3
-    1018:      35 c0           rjmp    .+106           ; 0x1084 <Endpoint_Write_Control_Stream_LE+0xa8>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    101a:      80 91 e8 00     lds     r24, 0x00E8
-                 return ENDPOINT_RWCSTREAM_HostAborted;
-               else if (Endpoint_IsOUTReceived())
-    101e:      82 fd           sbrc    r24, 2
-    1020:      29 c0           rjmp    .+82            ; 0x1074 <Endpoint_Write_Control_Stream_LE+0x98>
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    1022:      80 91 e8 00     lds     r24, 0x00E8
-                 break;
-
-               if (Endpoint_IsINReady())
-    1026:      80 ff           sbrs    r24, 0
-    1028:      1a c0           rjmp    .+52            ; 0x105e <Endpoint_Write_Control_Stream_LE+0x82>
-                               #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-                                       return UEBCX;
-                               #elif defined(USB_SERIES_4_AVR)
-                                       return (((uint16_t)UEBCHX << 8) | UEBCLX);
-                               #elif defined(USB_SERIES_2_AVR)
-                                       return UEBCLX;
-    102a:      80 91 f2 00     lds     r24, 0x00F2
-    102e:      90 e0           ldi     r25, 0x00       ; 0
-               {
-                       uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
-
-                       while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-    1030:      06 c0           rjmp    .+12            ; 0x103e <Endpoint_Write_Control_Stream_LE+0x62>
-                       {
-                               TEMPLATE_TRANSFER_BYTE(DataStream);
-    1032:      21 91           ld      r18, Z+
-                        *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_8(const uint8_t Data)
-                       {
-                               UEDATX = Data;
-    1034:      20 93 f1 00     sts     0x00F1, r18
-                               TEMPLATE_BUFFER_MOVE(DataStream, 1);
-                               Length--;
-    1038:      61 50           subi    r22, 0x01       ; 1
-    103a:      70 40           sbci    r23, 0x00       ; 0
-                               BytesInEndpoint++;
-    103c:      01 96           adiw    r24, 0x01       ; 1
-
-               if (Endpoint_IsINReady())
-               {
-                       uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
-
-                       while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-    103e:      61 15           cp      r22, r1
-    1040:      71 05           cpc     r23, r1
-    1042:      19 f0           breq    .+6             ; 0x104a <Endpoint_Write_Control_Stream_LE+0x6e>
-    1044:      88 30           cpi     r24, 0x08       ; 8
-    1046:      91 05           cpc     r25, r1
-    1048:      a0 f3           brcs    .-24            ; 0x1032 <Endpoint_Write_Control_Stream_LE+0x56>
-                               TEMPLATE_BUFFER_MOVE(DataStream, 1);
-                               Length--;
-                               BytesInEndpoint++;
-                       }
-
-                       LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-    104a:      21 e0           ldi     r18, 0x01       ; 1
-    104c:      88 30           cpi     r24, 0x08       ; 8
-    104e:      91 05           cpc     r25, r1
-    1050:      09 f0           breq    .+2             ; 0x1054 <Endpoint_Write_Control_Stream_LE+0x78>
-    1052:      20 e0           ldi     r18, 0x00       ; 0
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    1054:      80 91 e8 00     lds     r24, 0x00E8
-    1058:      8e 77           andi    r24, 0x7E       ; 126
-    105a:      80 93 e8 00     sts     0x00E8, r24
-       if (Length > USB_ControlRequest.wLength)
-         Length = USB_ControlRequest.wLength;
-       else if (!(Length))
-         Endpoint_ClearIN();
-
-       while (Length || LastPacketFull)
-    105e:      61 15           cp      r22, r1
-    1060:      71 05           cpc     r23, r1
-    1062:      91 f6           brne    .-92            ; 0x1008 <Endpoint_Write_Control_Stream_LE+0x2c>
-    1064:      22 23           and     r18, r18
-    1066:      81 f6           brne    .-96            ; 0x1008 <Endpoint_Write_Control_Stream_LE+0x2c>
-    1068:      05 c0           rjmp    .+10            ; 0x1074 <Endpoint_Write_Control_Stream_LE+0x98>
-               }
-       }
-
-       while (!(Endpoint_IsOUTReceived()))
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-    106a:      8e b3           in      r24, 0x1e       ; 30
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-    106c:      88 23           and     r24, r24
-    106e:      61 f0           breq    .+24            ; 0x1088 <Endpoint_Write_Control_Stream_LE+0xac>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-    1070:      85 30           cpi     r24, 0x05       ; 5
-    1072:      61 f0           breq    .+24            ; 0x108c <Endpoint_Write_Control_Stream_LE+0xb0>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    1074:      80 91 e8 00     lds     r24, 0x00E8
-                       LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-                       Endpoint_ClearIN();
-               }
-       }
-
-       while (!(Endpoint_IsOUTReceived()))
-    1078:      82 ff           sbrs    r24, 2
-    107a:      f7 cf           rjmp    .-18            ; 0x106a <Endpoint_Write_Control_Stream_LE+0x8e>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-       }
-
-       return ENDPOINT_RWCSTREAM_NoError;
-    107c:      80 e0           ldi     r24, 0x00       ; 0
-    107e:      08 95           ret
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-    1080:      83 e0           ldi     r24, 0x03       ; 3
-    1082:      08 95           ret
-               else if (Endpoint_IsSETUPReceived())
-                 return ENDPOINT_RWCSTREAM_HostAborted;
-    1084:      81 e0           ldi     r24, 0x01       ; 1
-    1086:      08 95           ret
-       while (!(Endpoint_IsOUTReceived()))
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-    1088:      82 e0           ldi     r24, 0x02       ; 2
-    108a:      08 95           ret
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-    108c:      83 e0           ldi     r24, 0x03       ; 3
-       }
-
-       return ENDPOINT_RWCSTREAM_NoError;
-}
-    108e:      08 95           ret
-
-00001090 <Endpoint_Write_Control_PStream_LE>:
-#if defined(TEMPLATE_FUNC_NAME)
-
-uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
-                            uint16_t Length)
-{
-       uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
-    1090:      e8 2f           mov     r30, r24
-    1092:      f9 2f           mov     r31, r25
-       bool     LastPacketFull = false;
-
-       if (Length > USB_ControlRequest.wLength)
-    1094:      80 91 d2 02     lds     r24, 0x02D2
-    1098:      90 91 d3 02     lds     r25, 0x02D3
-    109c:      86 17           cp      r24, r22
-    109e:      97 07           cpc     r25, r23
-    10a0:      18 f4           brcc    .+6             ; 0x10a8 <Endpoint_Write_Control_PStream_LE+0x18>
-    10a2:      bc 01           movw    r22, r24
-    10a4:      20 e0           ldi     r18, 0x00       ; 0
-    10a6:      36 c0           rjmp    .+108           ; 0x1114 <Endpoint_Write_Control_PStream_LE+0x84>
-         Length = USB_ControlRequest.wLength;
-       else if (!(Length))
-    10a8:      61 15           cp      r22, r1
-    10aa:      71 05           cpc     r23, r1
-    10ac:      d9 f7           brne    .-10            ; 0x10a4 <Endpoint_Write_Control_PStream_LE+0x14>
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    10ae:      80 91 e8 00     lds     r24, 0x00E8
-    10b2:      8e 77           andi    r24, 0x7E       ; 126
-    10b4:      80 93 e8 00     sts     0x00E8, r24
-    10b8:      f5 cf           rjmp    .-22            ; 0x10a4 <Endpoint_Write_Control_PStream_LE+0x14>
-         Endpoint_ClearIN();
-
-       while (Length || LastPacketFull)
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-    10ba:      8e b3           in      r24, 0x1e       ; 30
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-    10bc:      88 23           and     r24, r24
-    10be:      09 f4           brne    .+2             ; 0x10c2 <Endpoint_Write_Control_PStream_LE+0x32>
-    10c0:      3e c0           rjmp    .+124           ; 0x113e <Endpoint_Write_Control_PStream_LE+0xae>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-    10c2:      85 30           cpi     r24, 0x05       ; 5
-    10c4:      c1 f1           breq    .+112           ; 0x1136 <Endpoint_Write_Control_PStream_LE+0xa6>
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    10c6:      80 91 e8 00     lds     r24, 0x00E8
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-               else if (Endpoint_IsSETUPReceived())
-    10ca:      83 fd           sbrc    r24, 3
-    10cc:      36 c0           rjmp    .+108           ; 0x113a <Endpoint_Write_Control_PStream_LE+0xaa>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    10ce:      80 91 e8 00     lds     r24, 0x00E8
-                 return ENDPOINT_RWCSTREAM_HostAborted;
-               else if (Endpoint_IsOUTReceived())
-    10d2:      82 fd           sbrc    r24, 2
-    10d4:      2a c0           rjmp    .+84            ; 0x112a <Endpoint_Write_Control_PStream_LE+0x9a>
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    10d6:      80 91 e8 00     lds     r24, 0x00E8
-                 break;
-
-               if (Endpoint_IsINReady())
-    10da:      80 ff           sbrs    r24, 0
-    10dc:      1b c0           rjmp    .+54            ; 0x1114 <Endpoint_Write_Control_PStream_LE+0x84>
-                               #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-                                       return UEBCX;
-                               #elif defined(USB_SERIES_4_AVR)
-                                       return (((uint16_t)UEBCHX << 8) | UEBCLX);
-                               #elif defined(USB_SERIES_2_AVR)
-                                       return UEBCLX;
-    10de:      80 91 f2 00     lds     r24, 0x00F2
-    10e2:      90 e0           ldi     r25, 0x00       ; 0
-               {
-                       uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
-
-                       while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-    10e4:      07 c0           rjmp    .+14            ; 0x10f4 <Endpoint_Write_Control_PStream_LE+0x64>
-                       {
-                               TEMPLATE_TRANSFER_BYTE(DataStream);
-    10e6:      24 91           lpm     r18, Z+
-                        *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_8(const uint8_t Data)
-                       {
-                               UEDATX = Data;
-    10e8:      20 93 f1 00     sts     0x00F1, r18
-                               TEMPLATE_BUFFER_MOVE(DataStream, 1);
-    10ec:      31 96           adiw    r30, 0x01       ; 1
-                               Length--;
-    10ee:      61 50           subi    r22, 0x01       ; 1
-    10f0:      70 40           sbci    r23, 0x00       ; 0
-                               BytesInEndpoint++;
-    10f2:      01 96           adiw    r24, 0x01       ; 1
-
-               if (Endpoint_IsINReady())
-               {
-                       uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
-
-                       while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
-    10f4:      61 15           cp      r22, r1
-    10f6:      71 05           cpc     r23, r1
-    10f8:      19 f0           breq    .+6             ; 0x1100 <Endpoint_Write_Control_PStream_LE+0x70>
-    10fa:      88 30           cpi     r24, 0x08       ; 8
-    10fc:      91 05           cpc     r25, r1
-    10fe:      98 f3           brcs    .-26            ; 0x10e6 <Endpoint_Write_Control_PStream_LE+0x56>
-                               TEMPLATE_BUFFER_MOVE(DataStream, 1);
-                               Length--;
-                               BytesInEndpoint++;
-                       }
-
-                       LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-    1100:      21 e0           ldi     r18, 0x01       ; 1
-    1102:      88 30           cpi     r24, 0x08       ; 8
-    1104:      91 05           cpc     r25, r1
-    1106:      09 f0           breq    .+2             ; 0x110a <Endpoint_Write_Control_PStream_LE+0x7a>
-    1108:      20 e0           ldi     r18, 0x00       ; 0
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    110a:      80 91 e8 00     lds     r24, 0x00E8
-    110e:      8e 77           andi    r24, 0x7E       ; 126
-    1110:      80 93 e8 00     sts     0x00E8, r24
-       if (Length > USB_ControlRequest.wLength)
-         Length = USB_ControlRequest.wLength;
-       else if (!(Length))
-         Endpoint_ClearIN();
-
-       while (Length || LastPacketFull)
-    1114:      61 15           cp      r22, r1
-    1116:      71 05           cpc     r23, r1
-    1118:      81 f6           brne    .-96            ; 0x10ba <Endpoint_Write_Control_PStream_LE+0x2a>
-    111a:      22 23           and     r18, r18
-    111c:      71 f6           brne    .-100           ; 0x10ba <Endpoint_Write_Control_PStream_LE+0x2a>
-    111e:      05 c0           rjmp    .+10            ; 0x112a <Endpoint_Write_Control_PStream_LE+0x9a>
-               }
-       }
-
-       while (!(Endpoint_IsOUTReceived()))
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-    1120:      8e b3           in      r24, 0x1e       ; 30
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-    1122:      88 23           and     r24, r24
-    1124:      61 f0           breq    .+24            ; 0x113e <Endpoint_Write_Control_PStream_LE+0xae>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-    1126:      85 30           cpi     r24, 0x05       ; 5
-    1128:      61 f0           breq    .+24            ; 0x1142 <Endpoint_Write_Control_PStream_LE+0xb2>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    112a:      80 91 e8 00     lds     r24, 0x00E8
-                       LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
-                       Endpoint_ClearIN();
-               }
-       }
-
-       while (!(Endpoint_IsOUTReceived()))
-    112e:      82 ff           sbrs    r24, 2
-    1130:      f7 cf           rjmp    .-18            ; 0x1120 <Endpoint_Write_Control_PStream_LE+0x90>
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-       }
-
-       return ENDPOINT_RWCSTREAM_NoError;
-    1132:      80 e0           ldi     r24, 0x00       ; 0
-    1134:      08 95           ret
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-    1136:      83 e0           ldi     r24, 0x03       ; 3
-    1138:      08 95           ret
-               else if (Endpoint_IsSETUPReceived())
-                 return ENDPOINT_RWCSTREAM_HostAborted;
-    113a:      81 e0           ldi     r24, 0x01       ; 1
-    113c:      08 95           ret
-       while (!(Endpoint_IsOUTReceived()))
-       {
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-                 return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-    113e:      82 e0           ldi     r24, 0x02       ; 2
-    1140:      08 95           ret
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_RWCSTREAM_BusSuspended;
-    1142:      83 e0           ldi     r24, 0x03       ; 3
-       }
-
-       return ENDPOINT_RWCSTREAM_NoError;
-}
-    1144:      08 95           ret
-
-00001146 <Endpoint_ConfigureEndpoint_Prv>:
-       UECFG0X = UECFG0XData;
-       UECFG1X = UECFG1XData;
-
-       return Endpoint_IsConfigured();
-#else
-       for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
-    1146:      98 2f           mov     r25, r24
-    1148:      2c c0           rjmp    .+88            ; 0x11a2 <Endpoint_ConfigureEndpoint_Prv+0x5c>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    114a:      29 2f           mov     r18, r25
-    114c:      2f 70           andi    r18, 0x0F       ; 15
-    114e:      20 93 e9 00     sts     0x00E9, r18
-               uint8_t UECFG1XTemp;
-               uint8_t UEIENXTemp;
-
-               Endpoint_SelectEndpoint(EPNum);
-
-               if (EPNum == Number)
-    1152:      98 17           cp      r25, r24
-    1154:      39 f0           breq    .+14            ; 0x1164 <Endpoint_ConfigureEndpoint_Prv+0x1e>
-                       UECFG1XTemp = UECFG1XData;
-                       UEIENXTemp  = 0;
-               }
-               else
-               {
-                       UECFG0XTemp = UECFG0X;
-    1156:      70 91 ec 00     lds     r23, 0x00EC
-                       UECFG1XTemp = UECFG1X;
-    115a:      20 91 ed 00     lds     r18, 0x00ED
-                       UEIENXTemp  = UEIENX;
-    115e:      50 91 f0 00     lds     r21, 0x00F0
-    1162:      03 c0           rjmp    .+6             ; 0x116a <Endpoint_ConfigureEndpoint_Prv+0x24>
-               Endpoint_SelectEndpoint(EPNum);
-
-               if (EPNum == Number)
-               {
-                       UECFG0XTemp = UECFG0XData;
-                       UECFG1XTemp = UECFG1XData;
-    1164:      24 2f           mov     r18, r20
-
-               Endpoint_SelectEndpoint(EPNum);
-
-               if (EPNum == Number)
-               {
-                       UECFG0XTemp = UECFG0XData;
-    1166:      76 2f           mov     r23, r22
-                       UECFG1XTemp = UECFG1XData;
-                       UEIENXTemp  = 0;
-    1168:      50 e0           ldi     r21, 0x00       ; 0
-                       UECFG0XTemp = UECFG0X;
-                       UECFG1XTemp = UECFG1X;
-                       UEIENXTemp  = UEIENX;
-               }
-
-               if (!(UECFG1XTemp & (1 << ALLOC)))
-    116a:      21 ff           sbrs    r18, 1
-    116c:      19 c0           rjmp    .+50            ; 0x11a0 <Endpoint_ConfigureEndpoint_Prv+0x5a>
-                        *  to and from a host.
-                        */
-                       static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_DisableEndpoint(void)
-                       {
-                               UECONX &= ~(1 << EPEN);
-    116e:      30 91 eb 00     lds     r19, 0x00EB
-    1172:      3e 7f           andi    r19, 0xFE       ; 254
-    1174:      30 93 eb 00     sts     0x00EB, r19
-                 continue;
-
-               Endpoint_DisableEndpoint();
-               UECFG1X &= ~(1 << ALLOC);
-    1178:      30 91 ed 00     lds     r19, 0x00ED
-    117c:      3d 7f           andi    r19, 0xFD       ; 253
-    117e:      30 93 ed 00     sts     0x00ED, r19
-                        *  \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint().
-                        */
-                       static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_EnableEndpoint(void)
-                       {
-                               UECONX |= (1 << EPEN);
-    1182:      30 91 eb 00     lds     r19, 0x00EB
-    1186:      31 60           ori     r19, 0x01       ; 1
-    1188:      30 93 eb 00     sts     0x00EB, r19
-
-               Endpoint_EnableEndpoint();
-               UECFG0X = UECFG0XTemp;
-    118c:      70 93 ec 00     sts     0x00EC, r23
-               UECFG1X = UECFG1XTemp;
-    1190:      20 93 ed 00     sts     0x00ED, r18
-               UEIENX  = UEIENXTemp;
-    1194:      50 93 f0 00     sts     0x00F0, r21
-                        *  \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsConfigured(void)
-                       {
-                               return ((UESTA0X & (1 << CFGOK)) ? true : false);
-    1198:      20 91 ee 00     lds     r18, 0x00EE
-
-               if (!(Endpoint_IsConfigured()))
-    119c:      27 ff           sbrs    r18, 7
-    119e:      08 c0           rjmp    .+16            ; 0x11b0 <Endpoint_ConfigureEndpoint_Prv+0x6a>
-       UECFG0X = UECFG0XData;
-       UECFG1X = UECFG1XData;
-
-       return Endpoint_IsConfigured();
-#else
-       for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
-    11a0:      9f 5f           subi    r25, 0xFF       ; 255
-    11a2:      95 30           cpi     r25, 0x05       ; 5
-    11a4:      90 f2           brcs    .-92            ; 0x114a <Endpoint_ConfigureEndpoint_Prv+0x4>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    11a6:      8f 70           andi    r24, 0x0F       ; 15
-    11a8:      80 93 e9 00     sts     0x00E9, r24
-               if (!(Endpoint_IsConfigured()))
-                 return false;
-       }
-
-       Endpoint_SelectEndpoint(Number);
-       return true;
-    11ac:      81 e0           ldi     r24, 0x01       ; 1
-    11ae:      08 95           ret
-               UECFG0X = UECFG0XTemp;
-               UECFG1X = UECFG1XTemp;
-               UEIENX  = UEIENXTemp;
-
-               if (!(Endpoint_IsConfigured()))
-                 return false;
-    11b0:      80 e0           ldi     r24, 0x00       ; 0
-       }
-
-       Endpoint_SelectEndpoint(Number);
-       return true;
-#endif
-}
-    11b2:      08 95           ret
-
-000011b4 <Endpoint_ConfigureEndpointTable>:
-uint8_t USB_Device_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE;
-#endif
-
-bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
-                                     const uint8_t Entries)
-{
-    11b4:      ef 92           push    r14
-    11b6:      ff 92           push    r15
-    11b8:      0f 93           push    r16
-    11ba:      1f 93           push    r17
-    11bc:      cf 93           push    r28
-    11be:      df 93           push    r29
-    11c0:      16 2f           mov     r17, r22
-       {
-               if (!(Table[i].Address))
-                 continue;
-       
-               if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
-                 return false;
-    11c2:      e8 2e           mov     r14, r24
-    11c4:      e7 01           movw    r28, r14
-    11c6:      7e 01           movw    r14, r28
-    11c8:      f9 2e           mov     r15, r25
-    11ca:      e7 01           movw    r28, r14
-#endif
-
-bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
-                                     const uint8_t Entries)
-{
-       for (uint8_t i = 0; i < Entries; i++)
-    11cc:      00 e0           ldi     r16, 0x00       ; 0
-    11ce:      2a c0           rjmp    .+84            ; 0x1224 <Endpoint_ConfigureEndpointTable+0x70>
-       {
-               if (!(Table[i].Address))
-    11d0:      98 81           ld      r25, Y
-    11d2:      99 23           and     r25, r25
-    11d4:      29 f1           breq    .+74            ; 0x1220 <Endpoint_ConfigureEndpointTable+0x6c>
-                 continue;
-       
-               if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
-    11d6:      6b 81           ldd     r22, Y+3        ; 0x03
-    11d8:      e9 81           ldd     r30, Y+1        ; 0x01
-    11da:      fa 81           ldd     r31, Y+2        ; 0x02
-    11dc:      2c 81           ldd     r18, Y+4        ; 0x04
-                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Address,
-                                                                     const uint8_t Type,
-                                                                     const uint16_t Size,
-                                                                     const uint8_t Banks)
-                       {
-                               uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-    11de:      89 2f           mov     r24, r25
-    11e0:      8f 70           andi    r24, 0x0F       ; 15
-
-                               if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-    11e2:      85 30           cpi     r24, 0x05       ; 5
-    11e4:      18 f5           brcc    .+70            ; 0x122c <Endpoint_ConfigureEndpointTable+0x78>
-                                 return false;
-
-                               return Endpoint_ConfigureEndpoint_Prv(Number,
-                                                                     ((Type << EPTYPE0) | ((Address & ENDPOINT_DIR_IN) ? (1 << EPDIR) : 0)),
-    11e6:      62 95           swap    r22
-    11e8:      66 0f           add     r22, r22
-    11ea:      66 0f           add     r22, r22
-    11ec:      60 7c           andi    r22, 0xC0       ; 192
-    11ee:      99 1f           adc     r25, r25
-    11f0:      99 27           eor     r25, r25
-    11f2:      99 1f           adc     r25, r25
-                               uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-
-                               if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-                                 return false;
-
-                               return Endpoint_ConfigureEndpoint_Prv(Number,
-    11f4:      69 2b           or      r22, r25
-    11f6:      22 30           cpi     r18, 0x02       ; 2
-    11f8:      10 f0           brcs    .+4             ; 0x11fe <Endpoint_ConfigureEndpointTable+0x4a>
-    11fa:      96 e0           ldi     r25, 0x06       ; 6
-    11fc:      01 c0           rjmp    .+2             ; 0x1200 <Endpoint_ConfigureEndpointTable+0x4c>
-    11fe:      92 e0           ldi     r25, 0x02       ; 2
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST
-                                                                                              ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
-                       {
-                               uint8_t  MaskVal    = 0;
-                               uint16_t CheckBytes = 8;
-    1200:      28 e0           ldi     r18, 0x08       ; 8
-    1202:      30 e0           ldi     r19, 0x00       ; 0
-               /* Inline Functions: */
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST
-                                                                                              ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
-                       {
-                               uint8_t  MaskVal    = 0;
-    1204:      40 e0           ldi     r20, 0x00       ; 0
-    1206:      03 c0           rjmp    .+6             ; 0x120e <Endpoint_ConfigureEndpointTable+0x5a>
-                               uint16_t CheckBytes = 8;
-
-                               while (CheckBytes < Bytes)
-                               {
-                                       MaskVal++;
-    1208:      4f 5f           subi    r20, 0xFF       ; 255
-                                       CheckBytes <<= 1;
-    120a:      22 0f           add     r18, r18
-    120c:      33 1f           adc     r19, r19
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
-                       {
-                               uint8_t  MaskVal    = 0;
-                               uint16_t CheckBytes = 8;
-
-                               while (CheckBytes < Bytes)
-    120e:      2e 17           cp      r18, r30
-    1210:      3f 07           cpc     r19, r31
-    1212:      d0 f3           brcs    .-12            ; 0x1208 <Endpoint_ConfigureEndpointTable+0x54>
-                               {
-                                       MaskVal++;
-                                       CheckBytes <<= 1;
-                               }
-
-                               return (MaskVal << EPSIZE0);
-    1214:      42 95           swap    r20
-    1216:      40 7f           andi    r20, 0xF0       ; 240
-                               uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-
-                               if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-                                 return false;
-
-                               return Endpoint_ConfigureEndpoint_Prv(Number,
-    1218:      49 2b           or      r20, r25
-    121a:      95 df           rcall   .-214           ; 0x1146 <Endpoint_ConfigureEndpoint_Prv>
-    121c:      88 23           and     r24, r24
-    121e:      31 f0           breq    .+12            ; 0x122c <Endpoint_ConfigureEndpointTable+0x78>
-#endif
-
-bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table,
-                                     const uint8_t Entries)
-{
-       for (uint8_t i = 0; i < Entries; i++)
-    1220:      0f 5f           subi    r16, 0xFF       ; 255
-    1222:      25 96           adiw    r28, 0x05       ; 5
-    1224:      01 17           cp      r16, r17
-    1226:      a0 f2           brcs    .-88            ; 0x11d0 <Endpoint_ConfigureEndpointTable+0x1c>
-       
-               if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
-                 return false;
-       }
-       
-       return true;
-    1228:      81 e0           ldi     r24, 0x01       ; 1
-    122a:      01 c0           rjmp    .+2             ; 0x122e <Endpoint_ConfigureEndpointTable+0x7a>
-       {
-               if (!(Table[i].Address))
-                 continue;
-       
-               if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks)))
-                 return false;
-    122c:      80 e0           ldi     r24, 0x00       ; 0
-       }
-       
-       return true;
-}
-    122e:      df 91           pop     r29
-    1230:      cf 91           pop     r28
-    1232:      1f 91           pop     r17
-    1234:      0f 91           pop     r16
-    1236:      ff 90           pop     r15
-    1238:      ef 90           pop     r14
-    123a:      08 95           ret
-
-0000123c <Endpoint_ClearStatusStage>:
-       }
-}
-
-void Endpoint_ClearStatusStage(void)
-{
-       if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
-    123c:      80 91 cc 02     lds     r24, 0x02CC
-    1240:      87 ff           sbrs    r24, 7
-    1242:      11 c0           rjmp    .+34            ; 0x1266 <Endpoint_ClearStatusStage+0x2a>
-    1244:      03 c0           rjmp    .+6             ; 0x124c <Endpoint_ClearStatusStage+0x10>
-       {
-               while (!(Endpoint_IsOUTReceived()))
-               {
-                       if (USB_DeviceState == DEVICE_STATE_Unattached)
-    1246:      8e b3           in      r24, 0x1e       ; 30
-    1248:      88 23           and     r24, r24
-    124a:      b1 f0           breq    .+44            ; 0x1278 <Endpoint_ClearStatusStage+0x3c>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    124c:      80 91 e8 00     lds     r24, 0x00E8
-
-void Endpoint_ClearStatusStage(void)
-{
-       if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
-       {
-               while (!(Endpoint_IsOUTReceived()))
-    1250:      82 ff           sbrs    r24, 2
-    1252:      f9 cf           rjmp    .-14            ; 0x1246 <Endpoint_ClearStatusStage+0xa>
-                        */
-                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearOUT(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    1254:      80 91 e8 00     lds     r24, 0x00E8
-    1258:      8b 77           andi    r24, 0x7B       ; 123
-    125a:      80 93 e8 00     sts     0x00E8, r24
-    125e:      08 95           ret
-       }
-       else
-       {
-               while (!(Endpoint_IsINReady()))
-               {
-                       if (USB_DeviceState == DEVICE_STATE_Unattached)
-    1260:      8e b3           in      r24, 0x1e       ; 30
-    1262:      88 23           and     r24, r24
-    1264:      49 f0           breq    .+18            ; 0x1278 <Endpoint_ClearStatusStage+0x3c>
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    1266:      80 91 e8 00     lds     r24, 0x00E8
-
-               Endpoint_ClearOUT();
-       }
-       else
-       {
-               while (!(Endpoint_IsINReady()))
-    126a:      80 ff           sbrs    r24, 0
-    126c:      f9 cf           rjmp    .-14            ; 0x1260 <Endpoint_ClearStatusStage+0x24>
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    126e:      80 91 e8 00     lds     r24, 0x00E8
-    1272:      8e 77           andi    r24, 0x7E       ; 126
-    1274:      80 93 e8 00     sts     0x00E8, r24
-    1278:      08 95           ret
-
-0000127a <Endpoint_WaitUntilReady>:
-                        *  \return Current USB frame number from the USB controller.
-                        */
-                       static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
-                       static inline uint16_t USB_Device_GetFrameNumber(void)
-                       {
-                               return UDFNUM;
-    127a:      80 91 e4 00     lds     r24, 0x00E4
-    127e:      90 91 e5 00     lds     r25, 0x00E5
-
-#if !defined(CONTROL_ONLY_DEVICE)
-uint8_t Endpoint_WaitUntilReady(void)
-{
-       #if (USB_STREAM_TIMEOUT_MS < 0xFF)
-       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;
-    1282:      44 e6           ldi     r20, 0x64       ; 100
-                        *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
-                        */
-                       static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetEndpointDirection(void)
-                       {
-                               return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-    1284:      20 91 ec 00     lds     r18, 0x00EC
-    1288:      20 ff           sbrs    r18, 0
-    128a:      25 c0           rjmp    .+74            ; 0x12d6 <Endpoint_WaitUntilReady+0x5c>
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    128c:      20 91 e8 00     lds     r18, 0x00E8
-
-       for (;;)
-       {
-               if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
-               {
-                       if (Endpoint_IsINReady())
-    1290:      20 fd           sbrc    r18, 0
-    1292:      15 c0           rjmp    .+42            ; 0x12be <Endpoint_WaitUntilReady+0x44>
-               {
-                       if (Endpoint_IsOUTReceived())
-                         return ENDPOINT_READYWAIT_NoError;
-               }
-
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-    1294:      2e b3           in      r18, 0x1e       ; 30
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-    1296:      22 23           and     r18, r18
-    1298:      a1 f0           breq    .+40            ; 0x12c2 <Endpoint_WaitUntilReady+0x48>
-                 return ENDPOINT_READYWAIT_DeviceDisconnected;
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-    129a:      25 30           cpi     r18, 0x05       ; 5
-    129c:      a1 f0           breq    .+40            ; 0x12c6 <Endpoint_WaitUntilReady+0x4c>
-                        *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsStalled(void)
-                       {
-                               return ((UECONX & (1 << STALLRQ)) ? true : false);
-    129e:      20 91 eb 00     lds     r18, 0x00EB
-                 return ENDPOINT_READYWAIT_BusSuspended;
-               else if (Endpoint_IsStalled())
-    12a2:      25 fd           sbrc    r18, 5
-    12a4:      12 c0           rjmp    .+36            ; 0x12ca <Endpoint_WaitUntilReady+0x50>
-    12a6:      20 91 e4 00     lds     r18, 0x00E4
-    12aa:      30 91 e5 00     lds     r19, 0x00E5
-                 return ENDPOINT_READYWAIT_EndpointStalled;
-
-               uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();
-
-               if (CurrentFrameNumber != PreviousFrameNumber)
-    12ae:      28 17           cp      r18, r24
-    12b0:      39 07           cpc     r19, r25
-    12b2:      41 f3           breq    .-48            ; 0x1284 <Endpoint_WaitUntilReady+0xa>
-               {
-                       PreviousFrameNumber = CurrentFrameNumber;
-
-                       if (!(TimeoutMSRem--))
-    12b4:      44 23           and     r20, r20
-    12b6:      59 f0           breq    .+22            ; 0x12ce <Endpoint_WaitUntilReady+0x54>
-    12b8:      41 50           subi    r20, 0x01       ; 1
-    12ba:      c9 01           movw    r24, r18
-    12bc:      e3 cf           rjmp    .-58            ; 0x1284 <Endpoint_WaitUntilReady+0xa>
-       for (;;)
-       {
-               if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
-               {
-                       if (Endpoint_IsINReady())
-                         return ENDPOINT_READYWAIT_NoError;
-    12be:      80 e0           ldi     r24, 0x00       ; 0
-    12c0:      08 95           ret
-               }
-
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;
-
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
-                 return ENDPOINT_READYWAIT_DeviceDisconnected;
-    12c2:      82 e0           ldi     r24, 0x02       ; 2
-    12c4:      08 95           ret
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
-                 return ENDPOINT_READYWAIT_BusSuspended;
-    12c6:      83 e0           ldi     r24, 0x03       ; 3
-    12c8:      08 95           ret
-               else if (Endpoint_IsStalled())
-                 return ENDPOINT_READYWAIT_EndpointStalled;
-    12ca:      81 e0           ldi     r24, 0x01       ; 1
-    12cc:      08 95           ret
-               if (CurrentFrameNumber != PreviousFrameNumber)
-               {
-                       PreviousFrameNumber = CurrentFrameNumber;
-
-                       if (!(TimeoutMSRem--))
-                         return ENDPOINT_READYWAIT_Timeout;
-    12ce:      84 e0           ldi     r24, 0x04       ; 4
-    12d0:      08 95           ret
-                         return ENDPOINT_READYWAIT_NoError;
-               }
-               else
-               {
-                       if (Endpoint_IsOUTReceived())
-                         return ENDPOINT_READYWAIT_NoError;
-    12d2:      80 e0           ldi     r24, 0x00       ; 0
-
-                       if (!(TimeoutMSRem--))
-                         return ENDPOINT_READYWAIT_Timeout;
-               }
-       }
-}
-    12d4:      08 95           ret
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    12d6:      20 91 e8 00     lds     r18, 0x00E8
-                       if (Endpoint_IsINReady())
-                         return ENDPOINT_READYWAIT_NoError;
-               }
-               else
-               {
-                       if (Endpoint_IsOUTReceived())
-    12da:      22 ff           sbrs    r18, 2
-    12dc:      db cf           rjmp    .-74            ; 0x1294 <Endpoint_WaitUntilReady+0x1a>
-    12de:      f9 cf           rjmp    .-14            ; 0x12d2 <Endpoint_WaitUntilReady+0x58>
-
-000012e0 <USB_ResetInterface>:
-{
-       #if defined(USB_CAN_BE_BOTH)
-       bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);
-       #endif
-
-       USB_INT_DisableAllInterrupts();
-    12e0:      40 d0           rcall   .+128           ; 0x1362 <USB_INT_DisableAllInterrupts>
-       USB_INT_ClearAllInterrupts();
-    12e2:      42 d0           rcall   .+132           ; 0x1368 <USB_INT_ClearAllInterrupts>
-                       }
-
-                       static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_Controller_Reset(void)
-                       {
-                               USBCON &= ~(1 << USBE);
-    12e4:      80 91 d8 00     lds     r24, 0x00D8
-    12e8:      8f 77           andi    r24, 0x7F       ; 127
-    12ea:      80 93 d8 00     sts     0x00D8, r24
-                               USBCON |=  (1 << USBE);
-    12ee:      80 91 d8 00     lds     r24, 0x00D8
-    12f2:      80 68           ori     r24, 0x80       ; 128
-    12f4:      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);
-    12f8:      80 91 d8 00     lds     r24, 0x00D8
-    12fc:      8f 7d           andi    r24, 0xDF       ; 223
-    12fe:      80 93 d8 00     sts     0x00D8, r24
-
-               /* Inline Functions: */
-                       static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_PLL_On(void)
-                       {
-                               PLLCSR = USB_PLL_PSC;
-    1302:      84 e0           ldi     r24, 0x04       ; 4
-    1304:      89 bd           out     0x29, r24       ; 41
-                               PLLCSR = (USB_PLL_PSC | (1 << PLLE));
-    1306:      86 e0           ldi     r24, 0x06       ; 6
-    1308:      89 bd           out     0x29, r24       ; 41
-
-               if (!(USB_Options & USB_OPT_MANUAL_PLL))
-               {
-                       #if defined(USB_SERIES_2_AVR)
-                       USB_PLL_On();
-                       while (!(USB_PLL_IsReady()));
-    130a:      09 b4           in      r0, 0x29        ; 41
-    130c:      00 fe           sbrs    r0, 0
-    130e:      fd cf           rjmp    .-6             ; 0x130a <USB_ResetInterface+0x2a>
-}
-
-#if defined(USB_CAN_BE_DEVICE)
-static void USB_Init_Device(void)
-{
-       USB_DeviceState                 = DEVICE_STATE_Unattached;
-    1310:      1e ba           out     0x1e, r1        ; 30
-       USB_Device_ConfigurationNumber  = 0;
-    1312:      10 92 c8 02     sts     0x02C8, r1
-
-       #if !defined(NO_DEVICE_REMOTE_WAKEUP)
-       USB_Device_RemoteWakeupEnabled  = false;
-    1316:      10 92 ca 02     sts     0x02CA, r1
-       #endif
-
-       #if !defined(NO_DEVICE_SELF_POWER)
-       USB_Device_CurrentlySelfPowered = false;
-    131a:      10 92 c9 02     sts     0x02C9, r1
-                               uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-
-                               if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-                                 return false;
-
-                               return Endpoint_ConfigureEndpoint_Prv(Number,
-    131e:      80 e0           ldi     r24, 0x00       ; 0
-    1320:      60 e0           ldi     r22, 0x00       ; 0
-    1322:      42 e0           ldi     r20, 0x02       ; 2
-    1324:      10 df           rcall   .-480           ; 0x1146 <Endpoint_ConfigureEndpoint_Prv>
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDINT  &= ~(1 << WAKEUPI);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDINT  &= ~(1 << SUSPI);
-    1326:      80 91 e1 00     lds     r24, 0x00E1
-    132a:      8e 7f           andi    r24, 0xFE       ; 254
-    132c:      80 93 e1 00     sts     0x00E1, r24
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  |= (1 << WAKEUPE);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDIEN  |= (1 << SUSPE);
-    1330:      80 91 e2 00     lds     r24, 0x00E2
-    1334:      81 60           ori     r24, 0x01       ; 1
-    1336:      80 93 e2 00     sts     0x00E2, r24
-                                               break;
-                                       case USB_INT_EORSTI:
-                                               UDIEN  |= (1 << EORSTE);
-    133a:      80 91 e2 00     lds     r24, 0x00E2
-    133e:      88 60           ori     r24, 0x08       ; 8
-    1340:      80 93 e2 00     sts     0x00E2, r24
-                        *  register and despite the datasheet making no mention of its requirement in host mode.
-                        */
-                       static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_Attach(void)
-                       {
-                               UDCON  &= ~(1 << DETACH);
-    1344:      80 91 e0 00     lds     r24, 0x00E0
-    1348:      8e 7f           andi    r24, 0xFE       ; 254
-    134a:      80 93 e0 00     sts     0x00E0, r24
-       }
-
-       #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-       USB_OTGPAD_On();
-       #endif
-}
-    134e:      08 95           ret
-
-00001350 <USB_Init>:
-                       static inline void USB_REG_On(void)
-                       {
-                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
-                               UHWCON |=  (1 << UVREGE);
-                       #else
-                               REGCR  &= ~(1 << REGDIS);
-    1350:      e3 e6           ldi     r30, 0x63       ; 99
-    1352:      f0 e0           ldi     r31, 0x00       ; 0
-    1354:      80 81           ld      r24, Z
-    1356:      8e 7f           andi    r24, 0xFE       ; 254
-    1358:      80 83           st      Z, r24
-               UHWCON &= ~(1 << UIDE);
-               USB_CurrentMode = Mode;
-       }
-       #endif
-
-       USB_IsInitialized = true;
-    135a:      81 e0           ldi     r24, 0x01       ; 1
-    135c:      80 93 cb 02     sts     0x02CB, r24
-
-       USB_ResetInterface();
-}
-    1360:      bf cf           rjmp    .-130           ; 0x12e0 <USB_ResetInterface>
-
-00001362 <USB_INT_DisableAllInterrupts>:
-       #if defined(USB_CAN_BE_HOST)
-       UHIEN   = 0;
-       #endif
-
-       #if defined(USB_CAN_BE_DEVICE)
-       UDIEN   = 0;
-    1362:      10 92 e2 00     sts     0x00E2, r1
-       #endif
-}
-    1366:      08 95           ret
-
-00001368 <USB_INT_ClearAllInterrupts>:
-       #if defined(USB_CAN_BE_HOST)
-       UHINT  = 0;
-       #endif
-
-       #if defined(USB_CAN_BE_DEVICE)
-       UDINT  = 0;
-    1368:      10 92 e1 00     sts     0x00E1, r1
-       #endif
-}
-    136c:      08 95           ret
-
-0000136e <__vector_11>:
-
-ISR(USB_GEN_vect, ISR_BLOCK)
-{
-    136e:      1f 92           push    r1
-    1370:      0f 92           push    r0
-    1372:      0f b6           in      r0, 0x3f        ; 63
-    1374:      0f 92           push    r0
-    1376:      11 24           eor     r1, r1
-    1378:      2f 93           push    r18
-    137a:      3f 93           push    r19
-    137c:      4f 93           push    r20
-    137e:      5f 93           push    r21
-    1380:      6f 93           push    r22
-    1382:      7f 93           push    r23
-    1384:      8f 93           push    r24
-    1386:      9f 93           push    r25
-    1388:      af 93           push    r26
-    138a:      bf 93           push    r27
-    138c:      ef 93           push    r30
-    138e:      ff 93           push    r31
-                                       case USB_INT_SUSPI:
-                                               return (UDINT  & (1 << SUSPI));
-                                       case USB_INT_EORSTI:
-                                               return (UDINT  & (1 << EORSTI));
-                                       case USB_INT_SOFI:
-                                               return (UDINT  & (1 << SOFI));
-    1390:      80 91 e1 00     lds     r24, 0x00E1
-       #if defined(USB_CAN_BE_DEVICE)
-       #if !defined(NO_SOF_EVENTS)
-       if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))
-    1394:      82 ff           sbrs    r24, 2
-    1396:      0a c0           rjmp    .+20            ; 0x13ac <__vector_11+0x3e>
-                                       case USB_INT_SUSPI:
-                                               return (UDIEN  & (1 << SUSPE));
-                                       case USB_INT_EORSTI:
-                                               return (UDIEN  & (1 << EORSTE));
-                                       case USB_INT_SOFI:
-                                               return (UDIEN  & (1 << SOFE));
-    1398:      80 91 e2 00     lds     r24, 0x00E2
-    139c:      82 ff           sbrs    r24, 2
-    139e:      06 c0           rjmp    .+12            ; 0x13ac <__vector_11+0x3e>
-                                               break;
-                                       case USB_INT_EORSTI:
-                                               UDINT  &= ~(1 << EORSTI);
-                                               break;
-                                       case USB_INT_SOFI:
-                                               UDINT  &= ~(1 << SOFI);
-    13a0:      80 91 e1 00     lds     r24, 0x00E1
-    13a4:      8b 7f           andi    r24, 0xFB       ; 251
-    13a6:      80 93 e1 00     sts     0x00E1, r24
-       {
-               USB_INT_Clear(USB_INT_SOFI);
-
-               EVENT_USB_Device_StartOfFrame();
-    13aa:      22 d2           rcall   .+1092          ; 0x17f0 <USB_Event_Stub>
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               return (UDINT  & (1 << WAKEUPI));
-                                       case USB_INT_SUSPI:
-                                               return (UDINT  & (1 << SUSPI));
-    13ac:      80 91 e1 00     lds     r24, 0x00E1
-                       EVENT_USB_Device_Disconnect();
-               }
-       }
-       #endif
-
-       if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))
-    13b0:      80 ff           sbrs    r24, 0
-    13b2:      16 c0           rjmp    .+44            ; 0x13e0 <__vector_11+0x72>
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               return (UDIEN  & (1 << WAKEUPE));
-                                       case USB_INT_SUSPI:
-                                               return (UDIEN  & (1 << SUSPE));
-    13b4:      80 91 e2 00     lds     r24, 0x00E2
-    13b8:      80 ff           sbrs    r24, 0
-    13ba:      12 c0           rjmp    .+36            ; 0x13e0 <__vector_11+0x72>
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  &= ~(1 << WAKEUPE);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDIEN  &= ~(1 << SUSPE);
-    13bc:      80 91 e2 00     lds     r24, 0x00E2
-    13c0:      8e 7f           andi    r24, 0xFE       ; 254
-    13c2:      80 93 e2 00     sts     0x00E2, r24
-                                               USBCON |= (1 << IDTE);
-                                               break;
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  |= (1 << WAKEUPE);
-    13c6:      80 91 e2 00     lds     r24, 0x00E2
-    13ca:      80 61           ori     r24, 0x10       ; 16
-    13cc:      80 93 e2 00     sts     0x00E2, r24
-                       #endif
-
-                       static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_CLK_Freeze(void)
-                       {
-                               USBCON |=  (1 << FRZCLK);
-    13d0:      80 91 d8 00     lds     r24, 0x00D8
-    13d4:      80 62           ori     r24, 0x20       ; 32
-    13d6:      80 93 d8 00     sts     0x00D8, r24
-                       }
-
-                       static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_PLL_Off(void)
-                       {
-                               PLLCSR = 0;
-    13da:      19 bc           out     0x29, r1        ; 41
-
-               if (!(USB_Options & USB_OPT_MANUAL_PLL))
-                 USB_PLL_Off();
-
-               #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
-               USB_DeviceState = DEVICE_STATE_Unattached;
-    13dc:      1e ba           out     0x1e, r1        ; 30
-               EVENT_USB_Device_Disconnect();
-    13de:      9f d9           rcall   .-3266          ; 0x71e <EVENT_USB_Device_Disconnect>
-                                       case USB_INT_IDTI:
-                                               return (USBINT & (1 << IDTI));
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               return (UDINT  & (1 << WAKEUPI));
-    13e0:      80 91 e1 00     lds     r24, 0x00E1
-               USB_DeviceState = DEVICE_STATE_Suspended;
-               EVENT_USB_Device_Suspend();
-               #endif
-       }
-
-       if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))
-    13e4:      84 ff           sbrs    r24, 4
-    13e6:      2c c0           rjmp    .+88            ; 0x1440 <__vector_11+0xd2>
-                                       case USB_INT_IDTI:
-                                               return (USBCON & (1 << IDTE));
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               return (UDIEN  & (1 << WAKEUPE));
-    13e8:      80 91 e2 00     lds     r24, 0x00E2
-    13ec:      84 ff           sbrs    r24, 4
-    13ee:      28 c0           rjmp    .+80            ; 0x1440 <__vector_11+0xd2>
-
-               /* Inline Functions: */
-                       static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_PLL_On(void)
-                       {
-                               PLLCSR = USB_PLL_PSC;
-    13f0:      84 e0           ldi     r24, 0x04       ; 4
-    13f2:      89 bd           out     0x29, r24       ; 41
-                               PLLCSR = (USB_PLL_PSC | (1 << PLLE));
-    13f4:      86 e0           ldi     r24, 0x06       ; 6
-    13f6:      89 bd           out     0x29, r24       ; 41
-       {
-               if (!(USB_Options & USB_OPT_MANUAL_PLL))
-               {
-                       USB_PLL_On();
-                       while (!(USB_PLL_IsReady()));
-    13f8:      09 b4           in      r0, 0x29        ; 41
-    13fa:      00 fe           sbrs    r0, 0
-    13fc:      fd cf           rjmp    .-6             ; 0x13f8 <__vector_11+0x8a>
-                       }
-
-                       static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
-                       static inline void USB_CLK_Unfreeze(void)
-                       {
-                               USBCON &= ~(1 << FRZCLK);
-    13fe:      80 91 d8 00     lds     r24, 0x00D8
-    1402:      8f 7d           andi    r24, 0xDF       ; 223
-    1404:      80 93 d8 00     sts     0x00D8, r24
-                                               USBINT &= ~(1 << IDTI);
-                                               break;
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDINT  &= ~(1 << WAKEUPI);
-    1408:      80 91 e1 00     lds     r24, 0x00E1
-    140c:      8f 7e           andi    r24, 0xEF       ; 239
-    140e:      80 93 e1 00     sts     0x00E1, r24
-                                               USBCON &= ~(1 << IDTE);
-                                               break;
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  &= ~(1 << WAKEUPE);
-    1412:      80 91 e2 00     lds     r24, 0x00E2
-    1416:      8f 7e           andi    r24, 0xEF       ; 239
-    1418:      80 93 e2 00     sts     0x00E2, r24
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  |= (1 << WAKEUPE);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDIEN  |= (1 << SUSPE);
-    141c:      80 91 e2 00     lds     r24, 0x00E2
-    1420:      81 60           ori     r24, 0x01       ; 1
-    1422:      80 93 e2 00     sts     0x00E2, r24
-               USB_INT_Clear(USB_INT_WAKEUPI);
-
-               USB_INT_Disable(USB_INT_WAKEUPI);
-               USB_INT_Enable(USB_INT_SUSPI);
-
-               if (USB_Device_ConfigurationNumber)
-    1426:      80 91 c8 02     lds     r24, 0x02C8
-    142a:      88 23           and     r24, r24
-    142c:      21 f4           brne    .+8             ; 0x1436 <__vector_11+0xc8>
-                       }
-
-                       static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
-                       static inline bool USB_Device_IsAddressSet(void)
-                       {
-                               return (UDADDR & (1 << ADDEN));
-    142e:      80 91 e3 00     lds     r24, 0x00E3
-                 USB_DeviceState = DEVICE_STATE_Configured;
-               else
-                 USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
-    1432:      87 ff           sbrs    r24, 7
-    1434:      02 c0           rjmp    .+4             ; 0x143a <__vector_11+0xcc>
-    1436:      84 e0           ldi     r24, 0x04       ; 4
-    1438:      01 c0           rjmp    .+2             ; 0x143c <__vector_11+0xce>
-    143a:      81 e0           ldi     r24, 0x01       ; 1
-    143c:      8e bb           out     0x1e, r24       ; 30
-
-               #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
-               EVENT_USB_Device_Connect();
-    143e:      6e d9           rcall   .-3364          ; 0x71c <EVENT_USB_Device_Connect>
-                                       case USB_INT_WAKEUPI:
-                                               return (UDINT  & (1 << WAKEUPI));
-                                       case USB_INT_SUSPI:
-                                               return (UDINT  & (1 << SUSPI));
-                                       case USB_INT_EORSTI:
-                                               return (UDINT  & (1 << EORSTI));
-    1440:      80 91 e1 00     lds     r24, 0x00E1
-               #else
-               EVENT_USB_Device_WakeUp();
-               #endif
-       }
-
-       if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))
-    1444:      83 ff           sbrs    r24, 3
-    1446:      26 c0           rjmp    .+76            ; 0x1494 <__vector_11+0x126>
-                                       case USB_INT_WAKEUPI:
-                                               return (UDIEN  & (1 << WAKEUPE));
-                                       case USB_INT_SUSPI:
-                                               return (UDIEN  & (1 << SUSPE));
-                                       case USB_INT_EORSTI:
-                                               return (UDIEN  & (1 << EORSTE));
-    1448:      80 91 e2 00     lds     r24, 0x00E2
-    144c:      83 ff           sbrs    r24, 3
-    144e:      22 c0           rjmp    .+68            ; 0x1494 <__vector_11+0x126>
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDINT  &= ~(1 << SUSPI);
-                                               break;
-                                       case USB_INT_EORSTI:
-                                               UDINT  &= ~(1 << EORSTI);
-    1450:      80 91 e1 00     lds     r24, 0x00E1
-    1454:      87 7f           andi    r24, 0xF7       ; 247
-    1456:      80 93 e1 00     sts     0x00E1, r24
-       {
-               USB_INT_Clear(USB_INT_EORSTI);
-
-               USB_DeviceState                = DEVICE_STATE_Default;
-    145a:      82 e0           ldi     r24, 0x02       ; 2
-    145c:      8e bb           out     0x1e, r24       ; 30
-               USB_Device_ConfigurationNumber = 0;
-    145e:      10 92 c8 02     sts     0x02C8, r1
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDINT  &= ~(1 << WAKEUPI);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDINT  &= ~(1 << SUSPI);
-    1462:      80 91 e1 00     lds     r24, 0x00E1
-    1466:      8e 7f           andi    r24, 0xFE       ; 254
-    1468:      80 93 e1 00     sts     0x00E1, r24
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  &= ~(1 << WAKEUPE);
-                                               break;
-                                       case USB_INT_SUSPI:
-                                               UDIEN  &= ~(1 << SUSPE);
-    146c:      80 91 e2 00     lds     r24, 0x00E2
-    1470:      8e 7f           andi    r24, 0xFE       ; 254
-    1472:      80 93 e2 00     sts     0x00E2, r24
-                                               USBCON |= (1 << IDTE);
-                                               break;
-                                       #endif
-                                       #if defined(USB_CAN_BE_DEVICE)
-                                       case USB_INT_WAKEUPI:
-                                               UDIEN  |= (1 << WAKEUPE);
-    1476:      80 91 e2 00     lds     r24, 0x00E2
-    147a:      80 61           ori     r24, 0x10       ; 16
-    147c:      80 93 e2 00     sts     0x00E2, r24
-                               uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);
-
-                               if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
-                                 return false;
-
-                               return Endpoint_ConfigureEndpoint_Prv(Number,
-    1480:      80 e0           ldi     r24, 0x00       ; 0
-    1482:      60 e0           ldi     r22, 0x00       ; 0
-    1484:      42 e0           ldi     r20, 0x02       ; 2
-    1486:      5f de           rcall   .-834           ; 0x1146 <Endpoint_ConfigureEndpoint_Prv>
-                                               break;
-                                       case USB_INT_SOFI:
-                                               UDIEN  |= (1 << SOFE);
-                                               break;
-                                       case USB_INT_RXSTPI:
-                                               UEIENX |= (1 << RXSTPE);
-    1488:      80 91 f0 00     lds     r24, 0x00F0
-    148c:      88 60           ori     r24, 0x08       ; 8
-    148e:      80 93 f0 00     sts     0x00F0, r24
-
-               #if defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_INT_Enable(USB_INT_RXSTPI);
-               #endif
-
-               EVENT_USB_Device_Reset();
-    1492:      ae d1           rcall   .+860           ; 0x17f0 <USB_Event_Stub>
-               USB_ResetInterface();
-
-               EVENT_USB_UIDChange();
-       }
-       #endif
-}
-    1494:      ff 91           pop     r31
-    1496:      ef 91           pop     r30
-    1498:      bf 91           pop     r27
-    149a:      af 91           pop     r26
-    149c:      9f 91           pop     r25
-    149e:      8f 91           pop     r24
-    14a0:      7f 91           pop     r23
-    14a2:      6f 91           pop     r22
-    14a4:      5f 91           pop     r21
-    14a6:      4f 91           pop     r20
-    14a8:      3f 91           pop     r19
-    14aa:      2f 91           pop     r18
-    14ac:      0f 90           pop     r0
-    14ae:      0f be           out     0x3f, r0        ; 63
-    14b0:      0f 90           pop     r0
-    14b2:      1f 90           pop     r1
-    14b4:      18 95           reti
-
-000014b6 <__vector_12>:
-
-#if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE)
-ISR(USB_COM_vect, ISR_BLOCK)
-{
-    14b6:      1f 92           push    r1
-    14b8:      0f 92           push    r0
-    14ba:      0f b6           in      r0, 0x3f        ; 63
-    14bc:      0f 92           push    r0
-    14be:      11 24           eor     r1, r1
-    14c0:      1f 93           push    r17
-    14c2:      2f 93           push    r18
-    14c4:      3f 93           push    r19
-    14c6:      4f 93           push    r20
-    14c8:      5f 93           push    r21
-    14ca:      6f 93           push    r22
-    14cc:      7f 93           push    r23
-    14ce:      8f 93           push    r24
-    14d0:      9f 93           push    r25
-    14d2:      af 93           push    r26
-    14d4:      bf 93           push    r27
-    14d6:      ef 93           push    r30
-    14d8:      ff 93           push    r31
-                        */
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    14da:      10 91 e9 00     lds     r17, 0x00E9
-    14de:      1f 70           andi    r17, 0x0F       ; 15
-                        *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
-                        */
-                       static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetEndpointDirection(void)
-                       {
-                               return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-    14e0:      80 91 ec 00     lds     r24, 0x00EC
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    14e4:      10 92 e9 00     sts     0x00E9, r1
-                                               break;
-                                       case USB_INT_SOFI:
-                                               UDIEN  &= ~(1 << SOFE);
-                                               break;
-                                       case USB_INT_RXSTPI:
-                                               UEIENX &= ~(1 << RXSTPE);
-    14e8:      80 91 f0 00     lds     r24, 0x00F0
-    14ec:      87 7f           andi    r24, 0xF7       ; 247
-    14ee:      80 93 f0 00     sts     0x00F0, r24
-                       static inline void GlobalInterruptEnable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               sei();
-    14f2:      78 94           sei
-       Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
-       USB_INT_Disable(USB_INT_RXSTPI);
-
-       GlobalInterruptEnable();
-
-       USB_Device_ProcessControlRequest();
-    14f4:      1b d0           rcall   .+54            ; 0x152c <USB_Device_ProcessControlRequest>
-    14f6:      10 92 e9 00     sts     0x00E9, r1
-                                               break;
-                                       case USB_INT_SOFI:
-                                               UDIEN  |= (1 << SOFE);
-                                               break;
-                                       case USB_INT_RXSTPI:
-                                               UEIENX |= (1 << RXSTPE);
-    14fa:      80 91 f0 00     lds     r24, 0x00F0
-    14fe:      88 60           ori     r24, 0x08       ; 8
-    1500:      80 93 f0 00     sts     0x00F0, r24
-    1504:      10 93 e9 00     sts     0x00E9, r17
-
-       Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
-       USB_INT_Enable(USB_INT_RXSTPI);
-       Endpoint_SelectEndpoint(PrevSelectedEndpoint);
-}
-    1508:      ff 91           pop     r31
-    150a:      ef 91           pop     r30
-    150c:      bf 91           pop     r27
-    150e:      af 91           pop     r26
-    1510:      9f 91           pop     r25
-    1512:      8f 91           pop     r24
-    1514:      7f 91           pop     r23
-    1516:      6f 91           pop     r22
-    1518:      5f 91           pop     r21
-    151a:      4f 91           pop     r20
-    151c:      3f 91           pop     r19
-    151e:      2f 91           pop     r18
-    1520:      1f 91           pop     r17
-    1522:      0f 90           pop     r0
-    1524:      0f be           out     0x3f, r0        ; 63
-    1526:      0f 90           pop     r0
-    1528:      1f 90           pop     r1
-    152a:      18 95           reti
-
-0000152c <USB_Device_ProcessControlRequest>:
-#if !defined(NO_DEVICE_REMOTE_WAKEUP)
-bool    USB_Device_RemoteWakeupEnabled;
-#endif
-
-void USB_Device_ProcessControlRequest(void)
-{
-    152c:      1f 93           push    r17
-    152e:      df 93           push    r29
-    1530:      cf 93           push    r28
-    1532:      cd b7           in      r28, 0x3d       ; 61
-    1534:      de b7           in      r29, 0x3e       ; 62
-    1536:      ac 97           sbiw    r28, 0x2c       ; 44
-    1538:      0f b6           in      r0, 0x3f        ; 63
-    153a:      f8 94           cli
-    153c:      de bf           out     0x3e, r29       ; 62
-    153e:      0f be           out     0x3f, r0        ; 63
-    1540:      cd bf           out     0x3d, r28       ; 61
-       USB_ControlRequest.bRequest      = Endpoint_Read_8();
-       USB_ControlRequest.wValue        = Endpoint_Read_16_LE();
-       USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
-       USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
-       #else
-       uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
-    1542:      ec ec           ldi     r30, 0xCC       ; 204
-    1544:      f2 e0           ldi     r31, 0x02       ; 2
-                        *  \return Next byte in the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_Read_8(void)
-                       {
-                               return UEDATX;
-    1546:      80 91 f1 00     lds     r24, 0x00F1
-
-       for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
-         *(RequestHeader++) = Endpoint_Read_8();
-    154a:      81 93           st      Z+, r24
-       USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
-       USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
-       #else
-       uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;
-
-       for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
-    154c:      22 e0           ldi     r18, 0x02       ; 2
-    154e:      e4 3d           cpi     r30, 0xD4       ; 212
-    1550:      f2 07           cpc     r31, r18
-    1552:      c9 f7           brne    .-14            ; 0x1546 <USB_Device_ProcessControlRequest+0x1a>
-         *(RequestHeader++) = Endpoint_Read_8();
-       #endif
-
-       EVENT_USB_Device_ControlRequest();
-    1554:      e9 d8           rcall   .-3630          ; 0x728 <EVENT_USB_Device_ControlRequest>
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    1556:      80 91 e8 00     lds     r24, 0x00E8
-
-       if (Endpoint_IsSETUPReceived())
-    155a:      83 ff           sbrs    r24, 3
-    155c:      31 c1           rjmp    .+610           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-       {
-               uint8_t bmRequestType = USB_ControlRequest.bmRequestType;
-    155e:      80 91 cc 02     lds     r24, 0x02CC
-
-               switch (USB_ControlRequest.bRequest)
-    1562:      20 91 cd 02     lds     r18, 0x02CD
-    1566:      25 30           cpi     r18, 0x05       ; 5
-    1568:      09 f4           brne    .+2             ; 0x156c <USB_Device_ProcessControlRequest+0x40>
-    156a:      84 c0           rjmp    .+264           ; 0x1674 <USB_Device_ProcessControlRequest+0x148>
-    156c:      26 30           cpi     r18, 0x06       ; 6
-    156e:      40 f4           brcc    .+16            ; 0x1580 <USB_Device_ProcessControlRequest+0x54>
-    1570:      21 30           cpi     r18, 0x01       ; 1
-    1572:      a1 f1           breq    .+104           ; 0x15dc <USB_Device_ProcessControlRequest+0xb0>
-    1574:      21 30           cpi     r18, 0x01       ; 1
-    1576:      70 f0           brcs    .+28            ; 0x1594 <USB_Device_ProcessControlRequest+0x68>
-    1578:      23 30           cpi     r18, 0x03       ; 3
-    157a:      09 f0           breq    .+2             ; 0x157e <USB_Device_ProcessControlRequest+0x52>
-    157c:      21 c1           rjmp    .+578           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-    157e:      2e c0           rjmp    .+92            ; 0x15dc <USB_Device_ProcessControlRequest+0xb0>
-    1580:      28 30           cpi     r18, 0x08       ; 8
-    1582:      09 f4           brne    .+2             ; 0x1586 <USB_Device_ProcessControlRequest+0x5a>
-    1584:      ef c0           rjmp    .+478           ; 0x1764 <USB_Device_ProcessControlRequest+0x238>
-    1586:      29 30           cpi     r18, 0x09       ; 9
-    1588:      09 f4           brne    .+2             ; 0x158c <USB_Device_ProcessControlRequest+0x60>
-    158a:      fe c0           rjmp    .+508           ; 0x1788 <USB_Device_ProcessControlRequest+0x25c>
-    158c:      26 30           cpi     r18, 0x06       ; 6
-    158e:      09 f0           breq    .+2             ; 0x1592 <USB_Device_ProcessControlRequest+0x66>
-    1590:      17 c1           rjmp    .+558           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-    1592:      92 c0           rjmp    .+292           ; 0x16b8 <USB_Device_ProcessControlRequest+0x18c>
-               {
-                       case REQ_GetStatus:
-                               if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    1594:      80 38           cpi     r24, 0x80       ; 128
-    1596:      21 f0           breq    .+8             ; 0x15a0 <USB_Device_ProcessControlRequest+0x74>
-    1598:      82 38           cpi     r24, 0x82       ; 130
-    159a:      09 f0           breq    .+2             ; 0x159e <USB_Device_ProcessControlRequest+0x72>
-    159c:      11 c1           rjmp    .+546           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-    159e:      08 c0           rjmp    .+16            ; 0x15b0 <USB_Device_ProcessControlRequest+0x84>
-       Endpoint_ClearOUT();
-}
-
-static void USB_Device_GetStatus(void)
-{
-       uint8_t CurrentStatus = 0;
-    15a0:      80 91 c9 02     lds     r24, 0x02C9
-                       if (USB_Device_CurrentlySelfPowered)
-                         CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
-                       #endif
-
-                       #if !defined(NO_DEVICE_REMOTE_WAKEUP)
-                       if (USB_Device_RemoteWakeupEnabled)
-    15a4:      90 91 ca 02     lds     r25, 0x02CA
-    15a8:      99 23           and     r25, r25
-    15aa:      71 f0           breq    .+28            ; 0x15c8 <USB_Device_ProcessControlRequest+0x9c>
-                         CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
-    15ac:      82 60           ori     r24, 0x02       ; 2
-    15ae:      0c c0           rjmp    .+24            ; 0x15c8 <USB_Device_ProcessControlRequest+0x9c>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    15b0:      80 91 d0 02     lds     r24, 0x02D0
-    15b4:      8f 70           andi    r24, 0x0F       ; 15
-    15b6:      80 93 e9 00     sts     0x00E9, r24
-                        *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsStalled(void)
-                       {
-                               return ((UECONX & (1 << STALLRQ)) ? true : false);
-    15ba:      90 91 eb 00     lds     r25, 0x00EB
-                       break;
-               case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
-                       #if !defined(CONTROL_ONLY_DEVICE)
-                       Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
-
-                       CurrentStatus = Endpoint_IsStalled();
-    15be:      81 e0           ldi     r24, 0x01       ; 1
-    15c0:      95 ff           sbrs    r25, 5
-    15c2:      80 e0           ldi     r24, 0x00       ; 0
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    15c4:      10 92 e9 00     sts     0x00E9, r1
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    15c8:      90 91 e8 00     lds     r25, 0x00E8
-    15cc:      97 7f           andi    r25, 0xF7       ; 247
-    15ce:      90 93 e8 00     sts     0x00E8, r25
-                        *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_16_LE(const uint16_t Data)
-                       {
-                               UEDATX = (Data & 0xFF);
-    15d2:      80 93 f1 00     sts     0x00F1, r24
-                               UEDATX = (Data >> 8);
-    15d6:      10 92 f1 00     sts     0x00F1, r1
-    15da:      cf c0           rjmp    .+414           ; 0x177a <USB_Device_ProcessControlRequest+0x24e>
-                               }
-
-                               break;
-                       case REQ_ClearFeature:
-                       case REQ_SetFeature:
-                               if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    15dc:      88 23           and     r24, r24
-    15de:      19 f0           breq    .+6             ; 0x15e6 <USB_Device_ProcessControlRequest+0xba>
-    15e0:      82 30           cpi     r24, 0x02       ; 2
-    15e2:      09 f0           breq    .+2             ; 0x15e6 <USB_Device_ProcessControlRequest+0xba>
-    15e4:      ed c0           rjmp    .+474           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-       Endpoint_ClearStatusStage();
-}
-
-static void USB_Device_ClearSetFeature(void)
-{
-       switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
-    15e6:      90 e0           ldi     r25, 0x00       ; 0
-    15e8:      8f 71           andi    r24, 0x1F       ; 31
-    15ea:      90 70           andi    r25, 0x00       ; 0
-    15ec:      00 97           sbiw    r24, 0x00       ; 0
-    15ee:      29 f0           breq    .+10            ; 0x15fa <USB_Device_ProcessControlRequest+0xce>
-    15f0:      82 30           cpi     r24, 0x02       ; 2
-    15f2:      91 05           cpc     r25, r1
-    15f4:      09 f0           breq    .+2             ; 0x15f8 <USB_Device_ProcessControlRequest+0xcc>
-    15f6:      e4 c0           rjmp    .+456           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-    15f8:      0b c0           rjmp    .+22            ; 0x1610 <USB_Device_ProcessControlRequest+0xe4>
-       {
-               #if !defined(NO_DEVICE_REMOTE_WAKEUP)
-               case REQREC_DEVICE:
-                       if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup)
-    15fa:      80 91 ce 02     lds     r24, 0x02CE
-    15fe:      81 30           cpi     r24, 0x01       ; 1
-    1600:      09 f0           breq    .+2             ; 0x1604 <USB_Device_ProcessControlRequest+0xd8>
-    1602:      de c0           rjmp    .+444           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                         USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
-    1604:      23 30           cpi     r18, 0x03       ; 3
-    1606:      09 f0           breq    .+2             ; 0x160a <USB_Device_ProcessControlRequest+0xde>
-    1608:      80 e0           ldi     r24, 0x00       ; 0
-    160a:      80 93 ca 02     sts     0x02CA, r24
-    160e:      2c c0           rjmp    .+88            ; 0x1668 <USB_Device_ProcessControlRequest+0x13c>
-
-                       break;
-               #endif
-               #if !defined(CONTROL_ONLY_DEVICE)
-               case REQREC_ENDPOINT:
-                       if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt)
-    1610:      80 91 ce 02     lds     r24, 0x02CE
-    1614:      88 23           and     r24, r24
-    1616:      41 f5           brne    .+80            ; 0x1668 <USB_Device_ProcessControlRequest+0x13c>
-                       {
-                               uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
-    1618:      20 91 d0 02     lds     r18, 0x02D0
-    161c:      2f 70           andi    r18, 0x0F       ; 15
-
-                               if (EndpointIndex == ENDPOINT_CONTROLEP)
-    161e:      09 f4           brne    .+2             ; 0x1622 <USB_Device_ProcessControlRequest+0xf6>
-    1620:      cf c0           rjmp    .+414           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1622:      20 93 e9 00     sts     0x00E9, r18
-                        * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsEnabled(void)
-                       {
-                               return ((UECONX & (1 << EPEN)) ? true : false);
-    1626:      80 91 eb 00     lds     r24, 0x00EB
-                                 return;
-
-                               Endpoint_SelectEndpoint(EndpointIndex);
-
-                               if (Endpoint_IsEnabled())
-    162a:      80 ff           sbrs    r24, 0
-    162c:      1d c0           rjmp    .+58            ; 0x1668 <USB_Device_ProcessControlRequest+0x13c>
-                               {
-                                       if (USB_ControlRequest.bRequest == REQ_SetFeature)
-    162e:      80 91 cd 02     lds     r24, 0x02CD
-    1632:      83 30           cpi     r24, 0x03       ; 3
-    1634:      21 f4           brne    .+8             ; 0x163e <USB_Device_ProcessControlRequest+0x112>
-                        *  \ingroup Group_EndpointPacketManagement_AVR8
-                        */
-                       static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_StallTransaction(void)
-                       {
-                               UECONX |= (1 << STALLRQ);
-    1636:      80 91 eb 00     lds     r24, 0x00EB
-    163a:      80 62           ori     r24, 0x20       ; 32
-    163c:      13 c0           rjmp    .+38            ; 0x1664 <USB_Device_ProcessControlRequest+0x138>
-                        *  \ingroup Group_EndpointPacketManagement_AVR8
-                        */
-                       static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearStall(void)
-                       {
-                               UECONX |= (1 << STALLRQC);
-    163e:      80 91 eb 00     lds     r24, 0x00EB
-    1642:      80 61           ori     r24, 0x10       ; 16
-    1644:      80 93 eb 00     sts     0x00EB, r24
-                        *  \param[in] Address  Endpoint address whose FIFO buffers are to be reset.
-                        */
-                       static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ResetEndpoint(const uint8_t Address)
-                       {
-                               UERST = (1 << (Address & ENDPOINT_EPNUM_MASK));
-    1648:      81 e0           ldi     r24, 0x01       ; 1
-    164a:      90 e0           ldi     r25, 0x00       ; 0
-    164c:      02 c0           rjmp    .+4             ; 0x1652 <USB_Device_ProcessControlRequest+0x126>
-    164e:      88 0f           add     r24, r24
-    1650:      99 1f           adc     r25, r25
-    1652:      2a 95           dec     r18
-    1654:      e2 f7           brpl    .-8             ; 0x164e <USB_Device_ProcessControlRequest+0x122>
-    1656:      80 93 ea 00     sts     0x00EA, r24
-                               UERST = 0;
-    165a:      10 92 ea 00     sts     0x00EA, r1
-
-                       /** Resets the data toggle of the currently selected endpoint. */
-                       static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ResetDataToggle(void)
-                       {
-                               UECONX |= (1 << RSTDT);
-    165e:      80 91 eb 00     lds     r24, 0x00EB
-    1662:      88 60           ori     r24, 0x08       ; 8
-    1664:      80 93 eb 00     sts     0x00EB, r24
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1668:      10 92 e9 00     sts     0x00E9, r1
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    166c:      80 91 e8 00     lds     r24, 0x00E8
-    1670:      87 7f           andi    r24, 0xF7       ; 247
-    1672:      86 c0           rjmp    .+268           ; 0x1780 <USB_Device_ProcessControlRequest+0x254>
-                                       USB_Device_ClearSetFeature();
-                               }
-
-                               break;
-                       case REQ_SetAddress:
-                               if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
-    1674:      88 23           and     r24, r24
-    1676:      09 f0           breq    .+2             ; 0x167a <USB_Device_ProcessControlRequest+0x14e>
-    1678:      a3 c0           rjmp    .+326           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-       }
-}
-
-static void USB_Device_SetAddress(void)
-{
-       uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
-    167a:      10 91 ce 02     lds     r17, 0x02CE
-    167e:      1f 77           andi    r17, 0x7F       ; 127
-                       #endif
-
-                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
-                       {
-                               UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
-    1680:      80 91 e3 00     lds     r24, 0x00E3
-    1684:      80 78           andi    r24, 0x80       ; 128
-    1686:      81 2b           or      r24, r17
-    1688:      80 93 e3 00     sts     0x00E3, r24
-    168c:      80 91 e8 00     lds     r24, 0x00E8
-    1690:      87 7f           andi    r24, 0xF7       ; 247
-    1692:      80 93 e8 00     sts     0x00E8, r24
-
-       USB_Device_SetDeviceAddress(DeviceAddress);
-
-       Endpoint_ClearSETUP();
-
-       Endpoint_ClearStatusStage();
-    1696:      d2 dd           rcall   .-1116          ; 0x123c <Endpoint_ClearStatusStage>
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    1698:      80 91 e8 00     lds     r24, 0x00E8
-
-       while (!(Endpoint_IsINReady()));
-    169c:      80 ff           sbrs    r24, 0
-    169e:      fc cf           rjmp    .-8             ; 0x1698 <USB_Device_ProcessControlRequest+0x16c>
-                       static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
-                       {
-                               (void)Address;
-                               
-                               UDADDR |= (1 << ADDEN);
-    16a0:      80 91 e3 00     lds     r24, 0x00E3
-    16a4:      80 68           ori     r24, 0x80       ; 128
-    16a6:      80 93 e3 00     sts     0x00E3, r24
-
-       USB_Device_EnableDeviceAddress(DeviceAddress);
-
-       USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
-    16aa:      11 23           and     r17, r17
-    16ac:      11 f0           breq    .+4             ; 0x16b2 <USB_Device_ProcessControlRequest+0x186>
-    16ae:      83 e0           ldi     r24, 0x03       ; 3
-    16b0:      01 c0           rjmp    .+2             ; 0x16b4 <USB_Device_ProcessControlRequest+0x188>
-    16b2:      82 e0           ldi     r24, 0x02       ; 2
-    16b4:      8e bb           out     0x1e, r24       ; 30
-    16b6:      84 c0           rjmp    .+264           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                               if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
-                                 USB_Device_SetAddress();
-
-                               break;
-                       case REQ_GetDescriptor:
-                               if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
-    16b8:      80 58           subi    r24, 0x80       ; 128
-    16ba:      82 30           cpi     r24, 0x02       ; 2
-    16bc:      08 f0           brcs    .+2             ; 0x16c0 <USB_Device_ProcessControlRequest+0x194>
-    16be:      80 c0           rjmp    .+256           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-           !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
-       uint8_t DescriptorAddressSpace;
-       #endif
-
-       #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR)
-       if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL))
-    16c0:      80 91 ce 02     lds     r24, 0x02CE
-    16c4:      90 91 cf 02     lds     r25, 0x02CF
-    16c8:      23 e0           ldi     r18, 0x03       ; 3
-    16ca:      8c 3d           cpi     r24, 0xDC       ; 220
-    16cc:      92 07           cpc     r25, r18
-    16ce:      91 f5           brne    .+100           ; 0x1734 <USB_Device_ProcessControlRequest+0x208>
-       {
-               USB_Descriptor_Header_t Header;
-               uint16_t                UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4];
-       } SignatureDescriptor;
-
-       SignatureDescriptor.Header.Type = DTYPE_String;
-    16d0:      83 e0           ldi     r24, 0x03       ; 3
-    16d2:      8c 83           std     Y+4, r24        ; 0x04
-       SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
-    16d4:      8a e2           ldi     r24, 0x2A       ; 42
-    16d6:      8b 83           std     Y+3, r24        ; 0x03
-                       static inline uint_reg_t GetGlobalInterruptMask(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               return SREG;
-    16d8:      5f b7           in      r21, 0x3f       ; 63
-                       static inline void GlobalInterruptDisable(void)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               cli();
-    16da:      f8 94           cli
-                               __builtin_ssrf(AVR32_SR_GM_OFFSET);
-                               #elif (ARCH == ARCH_XMEGA)
-                               cli();
-                               #endif
-
-                               GCC_MEMORY_BARRIER();
-    16dc:      de 01           movw    r26, r28
-    16de:      15 96           adiw    r26, 0x05       ; 5
-    16e0:      80 e0           ldi     r24, 0x00       ; 0
-    16e2:      90 e0           ldi     r25, 0x00       ; 0
-                       static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)
-                       {
-                               uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                               GlobalInterruptDisable();
-
-                               uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
-    16e4:      4e e0           ldi     r20, 0x0E       ; 14
-
-                               for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
-                               {
-                                       uint8_t SerialByte = boot_signature_byte_get(SigReadAddress);
-    16e6:      61 e2           ldi     r22, 0x21       ; 33
-    16e8:      e4 2f           mov     r30, r20
-    16ea:      f0 e0           ldi     r31, 0x00       ; 0
-    16ec:      60 93 57 00     sts     0x0057, r22
-    16f0:      e4 91           lpm     r30, Z+
-
-                                       if (SerialCharNum & 0x01)
-    16f2:      80 ff           sbrs    r24, 0
-    16f4:      03 c0           rjmp    .+6             ; 0x16fc <USB_Device_ProcessControlRequest+0x1d0>
-                                       {
-                                               SerialByte >>= 4;
-    16f6:      e2 95           swap    r30
-    16f8:      ef 70           andi    r30, 0x0F       ; 15
-                                               SigReadAddress++;
-    16fa:      4f 5f           subi    r20, 0xFF       ; 255
-                                       }
-
-                                       SerialByte &= 0x0F;
-    16fc:      ef 70           andi    r30, 0x0F       ; 15
-    16fe:      2e 2f           mov     r18, r30
-    1700:      30 e0           ldi     r19, 0x00       ; 0
-
-                                       UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
-    1702:      ea 30           cpi     r30, 0x0A       ; 10
-    1704:      18 f0           brcs    .+6             ; 0x170c <USB_Device_ProcessControlRequest+0x1e0>
-    1706:      29 5c           subi    r18, 0xC9       ; 201
-    1708:      3f 4f           sbci    r19, 0xFF       ; 255
-    170a:      02 c0           rjmp    .+4             ; 0x1710 <USB_Device_ProcessControlRequest+0x1e4>
-    170c:      20 5d           subi    r18, 0xD0       ; 208
-    170e:      3f 4f           sbci    r19, 0xFF       ; 255
-    1710:      2d 93           st      X+, r18
-    1712:      3d 93           st      X+, r19
-    1714:      01 96           adiw    r24, 0x01       ; 1
-                               uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
-                               GlobalInterruptDisable();
-
-                               uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
-
-                               for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
-    1716:      84 31           cpi     r24, 0x14       ; 20
-    1718:      91 05           cpc     r25, r1
-    171a:      31 f7           brne    .-52            ; 0x16e8 <USB_Device_ProcessControlRequest+0x1bc>
-                       static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
-                       {
-                               GCC_MEMORY_BARRIER();
-
-                               #if (ARCH == ARCH_AVR8)
-                               SREG = GlobalIntState;
-    171c:      5f bf           out     0x3f, r21       ; 63
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    171e:      80 91 e8 00     lds     r24, 0x00E8
-    1722:      87 7f           andi    r24, 0xF7       ; 247
-    1724:      80 93 e8 00     sts     0x00E8, r24
-
-       USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);
-
-       Endpoint_ClearSETUP();
-
-       Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
-    1728:      ce 01           movw    r24, r28
-    172a:      03 96           adiw    r24, 0x03       ; 3
-    172c:      6a e2           ldi     r22, 0x2A       ; 42
-    172e:      70 e0           ldi     r23, 0x00       ; 0
-    1730:      55 dc           rcall   .-1878          ; 0xfdc <Endpoint_Write_Control_Stream_LE>
-    1732:      12 c0           rjmp    .+36            ; 0x1758 <USB_Device_ProcessControlRequest+0x22c>
-               USB_Device_GetInternalSerialDescriptor();
-               return;
-       }
-       #endif
-
-       if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
-    1734:      60 91 d0 02     lds     r22, 0x02D0
-    1738:      ae 01           movw    r20, r28
-    173a:      4f 5f           subi    r20, 0xFF       ; 255
-    173c:      5f 4f           sbci    r21, 0xFF       ; 255
-    173e:      21 dc           rcall   .-1982          ; 0xf82 <CALLBACK_USB_GetDescriptor>
-    1740:      bc 01           movw    r22, r24
-    1742:      00 97           sbiw    r24, 0x00       ; 0
-    1744:      09 f4           brne    .+2             ; 0x1748 <USB_Device_ProcessControlRequest+0x21c>
-    1746:      3c c0           rjmp    .+120           ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-    1748:      80 91 e8 00     lds     r24, 0x00E8
-    174c:      87 7f           andi    r24, 0xF7       ; 247
-    174e:      80 93 e8 00     sts     0x00E8, r24
-       #if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE)
-       Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
-       #elif defined(USE_EEPROM_DESCRIPTORS)
-       Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);
-       #elif defined(USE_FLASH_DESCRIPTORS)
-       Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);
-    1752:      89 81           ldd     r24, Y+1        ; 0x01
-    1754:      9a 81           ldd     r25, Y+2        ; 0x02
-    1756:      9c dc           rcall   .-1736          ; 0x1090 <Endpoint_Write_Control_PStream_LE>
-                        */
-                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearOUT(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    1758:      80 91 e8 00     lds     r24, 0x00E8
-    175c:      8b 77           andi    r24, 0x7B       ; 123
-    175e:      80 93 e8 00     sts     0x00E8, r24
-    1762:      2e c0           rjmp    .+92            ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                                       USB_Device_GetDescriptor();
-                               }
-
-                               break;
-                       case REQ_GetConfiguration:
-                               if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
-    1764:      80 38           cpi     r24, 0x80       ; 128
-    1766:      61 f5           brne    .+88            ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    1768:      80 91 e8 00     lds     r24, 0x00E8
-    176c:      87 7f           andi    r24, 0xF7       ; 247
-    176e:      80 93 e8 00     sts     0x00E8, r24
-
-static void USB_Device_GetConfiguration(void)
-{
-       Endpoint_ClearSETUP();
-
-       Endpoint_Write_8(USB_Device_ConfigurationNumber);
-    1772:      80 91 c8 02     lds     r24, 0x02C8
-                        *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_8(const uint8_t Data)
-                       {
-                               UEDATX = Data;
-    1776:      80 93 f1 00     sts     0x00F1, r24
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    177a:      80 91 e8 00     lds     r24, 0x00E8
-    177e:      8e 77           andi    r24, 0x7E       ; 126
-    1780:      80 93 e8 00     sts     0x00E8, r24
-       Endpoint_ClearIN();
-
-       Endpoint_ClearStatusStage();
-    1784:      5b dd           rcall   .-1354          ; 0x123c <Endpoint_ClearStatusStage>
-    1786:      1c c0           rjmp    .+56            ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                               if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
-                                 USB_Device_GetConfiguration();
-
-                               break;
-                       case REQ_SetConfiguration:
-                               if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
-    1788:      88 23           and     r24, r24
-    178a:      d1 f4           brne    .+52            ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-}
-
-static void USB_Device_SetConfiguration(void)
-{
-       #if defined(FIXED_NUM_CONFIGURATIONS)
-       if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS)
-    178c:      90 91 ce 02     lds     r25, 0x02CE
-    1790:      92 30           cpi     r25, 0x02       ; 2
-    1792:      b0 f4           brcc    .+44            ; 0x17c0 <USB_Device_ProcessControlRequest+0x294>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    1794:      80 91 e8 00     lds     r24, 0x00E8
-    1798:      87 7f           andi    r24, 0xF7       ; 247
-    179a:      80 93 e8 00     sts     0x00E8, r24
-       #endif
-       #endif
-
-       Endpoint_ClearSETUP();
-
-       USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
-    179e:      90 93 c8 02     sts     0x02C8, r25
-
-       Endpoint_ClearStatusStage();
-    17a2:      4c dd           rcall   .-1384          ; 0x123c <Endpoint_ClearStatusStage>
-
-       if (USB_Device_ConfigurationNumber)
-    17a4:      80 91 c8 02     lds     r24, 0x02C8
-    17a8:      88 23           and     r24, r24
-    17aa:      21 f4           brne    .+8             ; 0x17b4 <USB_Device_ProcessControlRequest+0x288>
-                       }
-
-                       static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
-                       static inline bool USB_Device_IsAddressSet(void)
-                       {
-                               return (UDADDR & (1 << ADDEN));
-    17ac:      80 91 e3 00     lds     r24, 0x00E3
-         USB_DeviceState = DEVICE_STATE_Configured;
-       else
-         USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
-    17b0:      87 ff           sbrs    r24, 7
-    17b2:      02 c0           rjmp    .+4             ; 0x17b8 <USB_Device_ProcessControlRequest+0x28c>
-    17b4:      84 e0           ldi     r24, 0x04       ; 4
-    17b6:      01 c0           rjmp    .+2             ; 0x17ba <USB_Device_ProcessControlRequest+0x28e>
-    17b8:      81 e0           ldi     r24, 0x01       ; 1
-    17ba:      8e bb           out     0x1e, r24       ; 30
-
-       EVENT_USB_Device_ConfigurationChanged();
-    17bc:      0e 94 90 03     call    0x720   ; 0x720 <EVENT_USB_Device_ConfigurationChanged>
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    17c0:      80 91 e8 00     lds     r24, 0x00E8
-                       default:
-                               break;
-               }
-       }
-
-       if (Endpoint_IsSETUPReceived())
-    17c4:      83 ff           sbrs    r24, 3
-    17c6:      0a c0           rjmp    .+20            ; 0x17dc <USB_Device_ProcessControlRequest+0x2b0>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    17c8:      80 91 e8 00     lds     r24, 0x00E8
-    17cc:      87 7f           andi    r24, 0xF7       ; 247
-    17ce:      80 93 e8 00     sts     0x00E8, r24
-                        *  \ingroup Group_EndpointPacketManagement_AVR8
-                        */
-                       static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_StallTransaction(void)
-                       {
-                               UECONX |= (1 << STALLRQ);
-    17d2:      80 91 eb 00     lds     r24, 0x00EB
-    17d6:      80 62           ori     r24, 0x20       ; 32
-    17d8:      80 93 eb 00     sts     0x00EB, r24
-       {
-               Endpoint_ClearSETUP();
-               Endpoint_StallTransaction();
-       }
-}
-    17dc:      ac 96           adiw    r28, 0x2c       ; 44
-    17de:      0f b6           in      r0, 0x3f        ; 63
-    17e0:      f8 94           cli
-    17e2:      de bf           out     0x3e, r29       ; 62
-    17e4:      0f be           out     0x3f, r0        ; 63
-    17e6:      cd bf           out     0x3d, r28       ; 61
-    17e8:      cf 91           pop     r28
-    17ea:      df 91           pop     r29
-    17ec:      1f 91           pop     r17
-    17ee:      08 95           ret
-
-000017f0 <USB_Event_Stub>:
-#include "Events.h"
-
-void USB_Event_Stub(void)
-{
-
-}
-    17f0:      08 95           ret
-
-000017f2 <USB_USBTask>:
-#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)
-volatile uint8_t     USB_DeviceState;
-#endif
-
-void USB_USBTask(void)
-{
-    17f2:      1f 93           push    r17
-}
-
-#if defined(USB_CAN_BE_DEVICE)
-static void USB_DeviceTask(void)
-{
-       if (USB_DeviceState == DEVICE_STATE_Unattached)
-    17f4:      8e b3           in      r24, 0x1e       ; 30
-    17f6:      88 23           and     r24, r24
-    17f8:      a9 f0           breq    .+42            ; 0x1824 <USB_USBTask+0x32>
-                        */
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    17fa:      80 91 e9 00     lds     r24, 0x00E9
-    17fe:      8f 70           andi    r24, 0x0F       ; 15
-                        *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
-                        */
-                       static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetEndpointDirection(void)
-                       {
-                               return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
-    1800:      90 91 ec 00     lds     r25, 0x00EC
-    1804:      90 ff           sbrs    r25, 0
-    1806:      02 c0           rjmp    .+4             ; 0x180c <USB_USBTask+0x1a>
-    1808:      10 e8           ldi     r17, 0x80       ; 128
-    180a:      01 c0           rjmp    .+2             ; 0x180e <USB_USBTask+0x1c>
-    180c:      10 e0           ldi     r17, 0x00       ; 0
-                        */
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
-    180e:      18 2b           or      r17, r24
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1810:      10 92 e9 00     sts     0x00E9, r1
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    1814:      80 91 e8 00     lds     r24, 0x00E8
-
-       uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
-
-       Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
-
-       if (Endpoint_IsSETUPReceived())
-    1818:      83 ff           sbrs    r24, 3
-    181a:      01 c0           rjmp    .+2             ; 0x181e <USB_USBTask+0x2c>
-         USB_Device_ProcessControlRequest();
-    181c:      87 de           rcall   .-754           ; 0x152c <USB_Device_ProcessControlRequest>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    181e:      1f 70           andi    r17, 0x0F       ; 15
-    1820:      10 93 e9 00     sts     0x00E9, r17
-       #elif defined(USB_CAN_BE_HOST)
-               USB_HostTask();
-       #elif defined(USB_CAN_BE_DEVICE)
-               USB_DeviceTask();
-       #endif
-}
-    1824:      1f 91           pop     r17
-    1826:      08 95           ret
-
-00001828 <CDC_Device_ProcessControlRequest>:
-#define  __INCLUDE_FROM_CDC_DRIVER
-#define  __INCLUDE_FROM_CDC_DEVICE_C
-#include "CDCClassDevice.h"
-
-void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-    1828:      cf 93           push    r28
-    182a:      df 93           push    r29
-    182c:      ec 01           movw    r28, r24
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsSETUPReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXSTPI)) ? true : false);
-    182e:      80 91 e8 00     lds     r24, 0x00E8
-       if (!(Endpoint_IsSETUPReceived()))
-    1832:      83 ff           sbrs    r24, 3
-    1834:      a3 c0           rjmp    .+326           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-         return;
-
-       if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber)
-    1836:      88 81           ld      r24, Y
-    1838:      90 e0           ldi     r25, 0x00       ; 0
-    183a:      20 91 d0 02     lds     r18, 0x02D0
-    183e:      30 91 d1 02     lds     r19, 0x02D1
-    1842:      28 17           cp      r18, r24
-    1844:      39 07           cpc     r19, r25
-    1846:      09 f0           breq    .+2             ; 0x184a <CDC_Device_ProcessControlRequest+0x22>
-    1848:      99 c0           rjmp    .+306           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-         return;
-
-       switch (USB_ControlRequest.bRequest)
-    184a:      80 91 cd 02     lds     r24, 0x02CD
-    184e:      81 32           cpi     r24, 0x21       ; 33
-    1850:      69 f0           breq    .+26            ; 0x186c <CDC_Device_ProcessControlRequest+0x44>
-    1852:      82 32           cpi     r24, 0x22       ; 34
-    1854:      20 f4           brcc    .+8             ; 0x185e <CDC_Device_ProcessControlRequest+0x36>
-    1856:      80 32           cpi     r24, 0x20       ; 32
-    1858:      09 f0           breq    .+2             ; 0x185c <CDC_Device_ProcessControlRequest+0x34>
-    185a:      90 c0           rjmp    .+288           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-    185c:      3c c0           rjmp    .+120           ; 0x18d6 <CDC_Device_ProcessControlRequest+0xae>
-    185e:      82 32           cpi     r24, 0x22       ; 34
-    1860:      09 f4           brne    .+2             ; 0x1864 <CDC_Device_ProcessControlRequest+0x3c>
-    1862:      6b c0           rjmp    .+214           ; 0x193a <CDC_Device_ProcessControlRequest+0x112>
-    1864:      83 32           cpi     r24, 0x23       ; 35
-    1866:      09 f0           breq    .+2             ; 0x186a <CDC_Device_ProcessControlRequest+0x42>
-    1868:      89 c0           rjmp    .+274           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-    186a:      7a c0           rjmp    .+244           ; 0x1960 <CDC_Device_ProcessControlRequest+0x138>
-       {
-               case CDC_REQ_GetLineEncoding:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
-    186c:      80 91 cc 02     lds     r24, 0x02CC
-    1870:      81 3a           cpi     r24, 0xA1       ; 161
-    1872:      09 f0           breq    .+2             ; 0x1876 <CDC_Device_ProcessControlRequest+0x4e>
-    1874:      83 c0           rjmp    .+262           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    1876:      80 91 e8 00     lds     r24, 0x00E8
-    187a:      87 7f           andi    r24, 0xF7       ; 247
-    187c:      80 93 e8 00     sts     0x00E8, r24
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    1880:      80 91 e8 00     lds     r24, 0x00E8
-                       {
-                               Endpoint_ClearSETUP();
-
-                               while (!(Endpoint_IsINReady()));
-    1884:      80 ff           sbrs    r24, 0
-    1886:      fc cf           rjmp    .-8             ; 0x1880 <CDC_Device_ProcessControlRequest+0x58>
-
-                               Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
-    1888:      8c 89           ldd     r24, Y+20       ; 0x14
-    188a:      9d 89           ldd     r25, Y+21       ; 0x15
-    188c:      ae 89           ldd     r26, Y+22       ; 0x16
-    188e:      bf 89           ldd     r27, Y+23       ; 0x17
-                        *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_32_LE(const uint32_t Data)
-                       {
-                               UEDATX = (Data &  0xFF);
-    1890:      80 93 f1 00     sts     0x00F1, r24
-                               UEDATX = (Data >> 8);
-    1894:      29 2f           mov     r18, r25
-    1896:      3a 2f           mov     r19, r26
-    1898:      4b 2f           mov     r20, r27
-    189a:      55 27           eor     r21, r21
-    189c:      20 93 f1 00     sts     0x00F1, r18
-                               UEDATX = (Data >> 16);
-    18a0:      9d 01           movw    r18, r26
-    18a2:      44 27           eor     r20, r20
-    18a4:      55 27           eor     r21, r21
-    18a6:      20 93 f1 00     sts     0x00F1, r18
-                               UEDATX = (Data >> 24);
-    18aa:      8b 2f           mov     r24, r27
-    18ac:      99 27           eor     r25, r25
-    18ae:      aa 27           eor     r26, r26
-    18b0:      bb 27           eor     r27, r27
-    18b2:      80 93 f1 00     sts     0x00F1, r24
-                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
-    18b6:      88 8d           ldd     r24, Y+24       ; 0x18
-                        *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_8(const uint8_t Data)
-                       {
-                               UEDATX = Data;
-    18b8:      80 93 f1 00     sts     0x00F1, r24
-                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
-    18bc:      89 8d           ldd     r24, Y+25       ; 0x19
-    18be:      80 93 f1 00     sts     0x00F1, r24
-                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);
-    18c2:      8a 8d           ldd     r24, Y+26       ; 0x1a
-    18c4:      80 93 f1 00     sts     0x00F1, r24
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    18c8:      80 91 e8 00     lds     r24, 0x00E8
-    18cc:      8e 77           andi    r24, 0x7E       ; 126
-    18ce:      80 93 e8 00     sts     0x00E8, r24
-
-                               Endpoint_ClearIN();
-                               Endpoint_ClearStatusStage();
-    18d2:      b4 dc           rcall   .-1688          ; 0x123c <Endpoint_ClearStatusStage>
-    18d4:      53 c0           rjmp    .+166           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                       }
-
-                       break;
-               case CDC_REQ_SetLineEncoding:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    18d6:      80 91 cc 02     lds     r24, 0x02CC
-    18da:      81 32           cpi     r24, 0x21       ; 33
-    18dc:      09 f0           breq    .+2             ; 0x18e0 <CDC_Device_ProcessControlRequest+0xb8>
-    18de:      4e c0           rjmp    .+156           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    18e0:      80 91 e8 00     lds     r24, 0x00E8
-    18e4:      87 7f           andi    r24, 0xF7       ; 247
-    18e6:      80 93 e8 00     sts     0x00E8, r24
-                       {
-                               Endpoint_ClearSETUP();
-
-                               while (!(Endpoint_IsOUTReceived()))
-    18ea:      04 c0           rjmp    .+8             ; 0x18f4 <CDC_Device_ProcessControlRequest+0xcc>
-                               {
-                                       if (USB_DeviceState == DEVICE_STATE_Unattached)
-    18ec:      8e b3           in      r24, 0x1e       ; 30
-    18ee:      88 23           and     r24, r24
-    18f0:      09 f4           brne    .+2             ; 0x18f4 <CDC_Device_ProcessControlRequest+0xcc>
-    18f2:      44 c0           rjmp    .+136           ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    18f4:      80 91 e8 00     lds     r24, 0x00E8
-               case CDC_REQ_SetLineEncoding:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-                       {
-                               Endpoint_ClearSETUP();
-
-                               while (!(Endpoint_IsOUTReceived()))
-    18f8:      82 ff           sbrs    r24, 2
-    18fa:      f8 cf           rjmp    .-16            ; 0x18ec <CDC_Device_ProcessControlRequest+0xc4>
-                               {
-                                       uint32_t Value;
-                                       uint8_t  Bytes[4];
-                               } Data;
-
-                               Data.Bytes[0] = UEDATX;
-    18fc:      30 91 f1 00     lds     r19, 0x00F1
-                               Data.Bytes[1] = UEDATX;
-    1900:      20 91 f1 00     lds     r18, 0x00F1
-                               Data.Bytes[2] = UEDATX;
-    1904:      90 91 f1 00     lds     r25, 0x00F1
-                               Data.Bytes[3] = UEDATX;
-    1908:      80 91 f1 00     lds     r24, 0x00F1
-                               {
-                                       if (USB_DeviceState == DEVICE_STATE_Unattached)
-                                         return;
-                               }
-
-                               CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
-    190c:      3c 8b           std     Y+20, r19       ; 0x14
-    190e:      2d 8b           std     Y+21, r18       ; 0x15
-    1910:      9e 8b           std     Y+22, r25       ; 0x16
-    1912:      8f 8b           std     Y+23, r24       ; 0x17
-                        *  \return Next byte in the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_Read_8(void)
-                       {
-                               return UEDATX;
-    1914:      80 91 f1 00     lds     r24, 0x00F1
-                               CDCInterfaceInfo->State.LineEncoding.CharFormat  = Endpoint_Read_8();
-    1918:      88 8f           std     Y+24, r24       ; 0x18
-    191a:      80 91 f1 00     lds     r24, 0x00F1
-                               CDCInterfaceInfo->State.LineEncoding.ParityType  = Endpoint_Read_8();
-    191e:      89 8f           std     Y+25, r24       ; 0x19
-    1920:      80 91 f1 00     lds     r24, 0x00F1
-                               CDCInterfaceInfo->State.LineEncoding.DataBits    = Endpoint_Read_8();
-    1924:      8a 8f           std     Y+26, r24       ; 0x1a
-                        */
-                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearOUT(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    1926:      80 91 e8 00     lds     r24, 0x00E8
-    192a:      8b 77           andi    r24, 0x7B       ; 123
-    192c:      80 93 e8 00     sts     0x00E8, r24
-
-                               Endpoint_ClearOUT();
-                               Endpoint_ClearStatusStage();
-    1930:      85 dc           rcall   .-1782          ; 0x123c <Endpoint_ClearStatusStage>
-
-                               EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
-    1932:      ce 01           movw    r24, r28
-    1934:      0e 94 c2 03     call    0x784   ; 0x784 <EVENT_CDC_Device_LineEncodingChanged>
-    1938:      21 c0           rjmp    .+66            ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                       }
-
-                       break;
-               case CDC_REQ_SetControlLineState:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    193a:      80 91 cc 02     lds     r24, 0x02CC
-    193e:      81 32           cpi     r24, 0x21       ; 33
-    1940:      e9 f4           brne    .+58            ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                        *  \note This is not applicable for non CONTROL type endpoints.
-                        */
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearSETUP(void)
-                       {
-                               UEINTX &= ~(1 << RXSTPI);
-    1942:      80 91 e8 00     lds     r24, 0x00E8
-    1946:      87 7f           andi    r24, 0xF7       ; 247
-    1948:      80 93 e8 00     sts     0x00E8, r24
-                       {
-                               Endpoint_ClearSETUP();
-                               Endpoint_ClearStatusStage();
-    194c:      77 dc           rcall   .-1810          ; 0x123c <Endpoint_ClearStatusStage>
-
-                               CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
-    194e:      80 91 ce 02     lds     r24, 0x02CE
-    1952:      90 91 cf 02     lds     r25, 0x02CF
-    1956:      99 8b           std     Y+17, r25       ; 0x11
-    1958:      88 8b           std     Y+16, r24       ; 0x10
-
-                               EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
-    195a:      ce 01           movw    r24, r28
-    195c:      d4 d0           rcall   .+424           ; 0x1b06 <CDC_Device_Event_Stub>
-    195e:      0e c0           rjmp    .+28            ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-                       }
-
-                       break;
-               case CDC_REQ_SendBreak:
-                       if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
-    1960:      80 91 cc 02     lds     r24, 0x02CC
-    1964:      81 32           cpi     r24, 0x21       ; 33
-    1966:      51 f4           brne    .+20            ; 0x197c <CDC_Device_ProcessControlRequest+0x154>
-    1968:      80 91 e8 00     lds     r24, 0x00E8
-    196c:      87 7f           andi    r24, 0xF7       ; 247
-    196e:      80 93 e8 00     sts     0x00E8, r24
-                       {
-                               Endpoint_ClearSETUP();
-                               Endpoint_ClearStatusStage();
-    1972:      64 dc           rcall   .-1848          ; 0x123c <Endpoint_ClearStatusStage>
-
-                               EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
-    1974:      ce 01           movw    r24, r28
-    1976:      60 91 ce 02     lds     r22, 0x02CE
-    197a:      c5 d0           rcall   .+394           ; 0x1b06 <CDC_Device_Event_Stub>
-                       }
-
-                       break;
-       }
-}
-    197c:      df 91           pop     r29
-    197e:      cf 91           pop     r28
-    1980:      08 95           ret
-
-00001982 <CDC_Device_ConfigureEndpoints>:
-
-bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-    1982:      cf 93           push    r28
-    1984:      df 93           push    r29
-    1986:      ec 01           movw    r28, r24
-       memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
-    1988:      40 96           adiw    r24, 0x10       ; 16
-    198a:      fc 01           movw    r30, r24
-    198c:      8b e0           ldi     r24, 0x0B       ; 11
-    198e:      df 01           movw    r26, r30
-    1990:      1d 92           st      X+, r1
-    1992:      8a 95           dec     r24
-    1994:      e9 f7           brne    .-6             ; 0x1990 <CDC_Device_ConfigureEndpoints+0xe>
-
-       CDCInterfaceInfo->Config.DataINEndpoint.Type       = EP_TYPE_BULK;
-    1996:      82 e0           ldi     r24, 0x02       ; 2
-    1998:      8c 83           std     Y+4, r24        ; 0x04
-       CDCInterfaceInfo->Config.DataOUTEndpoint.Type      = EP_TYPE_BULK;
-    199a:      89 87           std     Y+9, r24        ; 0x09
-       CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT;
-    199c:      83 e0           ldi     r24, 0x03       ; 3
-    199e:      8e 87           std     Y+14, r24       ; 0x0e
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
-    19a0:      ce 01           movw    r24, r28
-    19a2:      01 96           adiw    r24, 0x01       ; 1
-    19a4:      61 e0           ldi     r22, 0x01       ; 1
-    19a6:      06 dc           rcall   .-2036          ; 0x11b4 <Endpoint_ConfigureEndpointTable>
-    19a8:      88 23           and     r24, r24
-    19aa:      59 f0           breq    .+22            ; 0x19c2 <CDC_Device_ConfigureEndpoints+0x40>
-         return false;
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1)))
-    19ac:      ce 01           movw    r24, r28
-    19ae:      06 96           adiw    r24, 0x06       ; 6
-    19b0:      61 e0           ldi     r22, 0x01       ; 1
-    19b2:      00 dc           rcall   .-2048          ; 0x11b4 <Endpoint_ConfigureEndpointTable>
-    19b4:      88 23           and     r24, r24
-    19b6:      29 f0           breq    .+10            ; 0x19c2 <CDC_Device_ConfigureEndpoints+0x40>
-         return false;
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1)))
-    19b8:      ce 01           movw    r24, r28
-    19ba:      0b 96           adiw    r24, 0x0b       ; 11
-    19bc:      61 e0           ldi     r22, 0x01       ; 1
-    19be:      fa db           rcall   .-2060          ; 0x11b4 <Endpoint_ConfigureEndpointTable>
-    19c0:      01 c0           rjmp    .+2             ; 0x19c4 <CDC_Device_ConfigureEndpoints+0x42>
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1)))
-         return false;
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1)))
-         return false;
-    19c2:      80 e0           ldi     r24, 0x00       ; 0
-
-       if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1)))
-         return false;
-
-       return true;
-}
-    19c4:      df 91           pop     r29
-    19c6:      cf 91           pop     r28
-    19c8:      08 95           ret
-
-000019ca <CDC_Device_SendByte>:
-       return Endpoint_Write_Stream_LE(Buffer, Length, NULL);
-}
-
-uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
-                            const uint8_t Data)
-{
-    19ca:      df 93           push    r29
-    19cc:      cf 93           push    r28
-    19ce:      0f 92           push    r0
-    19d0:      cd b7           in      r28, 0x3d       ; 61
-    19d2:      de b7           in      r29, 0x3e       ; 62
-    19d4:      fc 01           movw    r30, r24
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    19d6:      8e b3           in      r24, 0x1e       ; 30
-    19d8:      84 30           cpi     r24, 0x04       ; 4
-    19da:      f9 f4           brne    .+62            ; 0x1a1a <CDC_Device_SendByte+0x50>
-    19dc:      24 89           ldd     r18, Z+20       ; 0x14
-    19de:      35 89           ldd     r19, Z+21       ; 0x15
-    19e0:      46 89           ldd     r20, Z+22       ; 0x16
-    19e2:      57 89           ldd     r21, Z+23       ; 0x17
-    19e4:      21 15           cp      r18, r1
-    19e6:      31 05           cpc     r19, r1
-    19e8:      41 05           cpc     r20, r1
-    19ea:      51 05           cpc     r21, r1
-    19ec:      b1 f0           breq    .+44            ; 0x1a1a <CDC_Device_SendByte+0x50>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    19ee:      81 81           ldd     r24, Z+1        ; 0x01
-    19f0:      8f 70           andi    r24, 0x0F       ; 15
-    19f2:      80 93 e9 00     sts     0x00E9, r24
-                        *          on its direction.
-                        */
-                       static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsReadWriteAllowed(void)
-                       {
-                               return ((UEINTX & (1 << RWAL)) ? true : false);
-    19f6:      80 91 e8 00     lds     r24, 0x00E8
-         return ENDPOINT_RWSTREAM_DeviceDisconnected;
-
-       Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
-
-       if (!(Endpoint_IsReadWriteAllowed()))
-    19fa:      85 fd           sbrc    r24, 5
-    19fc:      0a c0           rjmp    .+20            ; 0x1a12 <CDC_Device_SendByte+0x48>
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    19fe:      80 91 e8 00     lds     r24, 0x00E8
-    1a02:      8e 77           andi    r24, 0x7E       ; 126
-    1a04:      80 93 e8 00     sts     0x00E8, r24
-       {
-               Endpoint_ClearIN();
-
-               uint8_t ErrorCode;
-
-               if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
-    1a08:      69 83           std     Y+1, r22        ; 0x01
-    1a0a:      37 dc           rcall   .-1938          ; 0x127a <Endpoint_WaitUntilReady>
-    1a0c:      69 81           ldd     r22, Y+1        ; 0x01
-    1a0e:      88 23           and     r24, r24
-    1a10:      29 f4           brne    .+10            ; 0x1a1c <CDC_Device_SendByte+0x52>
-                        *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_Write_8(const uint8_t Data)
-                       {
-                               UEDATX = Data;
-    1a12:      60 93 f1 00     sts     0x00F1, r22
-                 return ErrorCode;
-       }
-
-       Endpoint_Write_8(Data);
-       return ENDPOINT_READYWAIT_NoError;
-    1a16:      80 e0           ldi     r24, 0x00       ; 0
-    1a18:      01 c0           rjmp    .+2             ; 0x1a1c <CDC_Device_SendByte+0x52>
-
-uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
-                            const uint8_t Data)
-{
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-         return ENDPOINT_RWSTREAM_DeviceDisconnected;
-    1a1a:      82 e0           ldi     r24, 0x02       ; 2
-                 return ErrorCode;
-       }
-
-       Endpoint_Write_8(Data);
-       return ENDPOINT_READYWAIT_NoError;
-}
-    1a1c:      0f 90           pop     r0
-    1a1e:      cf 91           pop     r28
-    1a20:      df 91           pop     r29
-    1a22:      08 95           ret
-
-00001a24 <CDC_Device_Flush>:
-
-uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-    1a24:      fc 01           movw    r30, r24
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    1a26:      8e b3           in      r24, 0x1e       ; 30
-    1a28:      84 30           cpi     r24, 0x04       ; 4
-    1a2a:      19 f5           brne    .+70            ; 0x1a72 <CDC_Device_Flush+0x4e>
-    1a2c:      24 89           ldd     r18, Z+20       ; 0x14
-    1a2e:      35 89           ldd     r19, Z+21       ; 0x15
-    1a30:      46 89           ldd     r20, Z+22       ; 0x16
-    1a32:      57 89           ldd     r21, Z+23       ; 0x17
-    1a34:      21 15           cp      r18, r1
-    1a36:      31 05           cpc     r19, r1
-    1a38:      41 05           cpc     r20, r1
-    1a3a:      51 05           cpc     r21, r1
-    1a3c:      d1 f0           breq    .+52            ; 0x1a72 <CDC_Device_Flush+0x4e>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1a3e:      81 81           ldd     r24, Z+1        ; 0x01
-    1a40:      8f 70           andi    r24, 0x0F       ; 15
-    1a42:      80 93 e9 00     sts     0x00E9, r24
-                               #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-                                       return UEBCX;
-                               #elif defined(USB_SERIES_4_AVR)
-                                       return (((uint16_t)UEBCHX << 8) | UEBCLX);
-                               #elif defined(USB_SERIES_2_AVR)
-                                       return UEBCLX;
-    1a46:      80 91 f2 00     lds     r24, 0x00F2
-
-       uint8_t ErrorCode;
-
-       Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
-
-       if (!(Endpoint_BytesInEndpoint()))
-    1a4a:      88 23           and     r24, r24
-    1a4c:      a1 f0           breq    .+40            ; 0x1a76 <CDC_Device_Flush+0x52>
-                        *          on its direction.
-                        */
-                       static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsReadWriteAllowed(void)
-                       {
-                               return ((UEINTX & (1 << RWAL)) ? true : false);
-    1a4e:      90 91 e8 00     lds     r25, 0x00E8
-                        */
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearIN(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
-    1a52:      80 91 e8 00     lds     r24, 0x00E8
-    1a56:      8e 77           andi    r24, 0x7E       ; 126
-    1a58:      80 93 e8 00     sts     0x00E8, r24
-
-       bool BankFull = !(Endpoint_IsReadWriteAllowed());
-
-       Endpoint_ClearIN();
-
-       if (BankFull)
-    1a5c:      95 fd           sbrc    r25, 5
-    1a5e:      0d c0           rjmp    .+26            ; 0x1a7a <CDC_Device_Flush+0x56>
-       {
-               if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
-    1a60:      0c dc           rcall   .-2024          ; 0x127a <Endpoint_WaitUntilReady>
-    1a62:      88 23           and     r24, r24
-    1a64:      59 f4           brne    .+22            ; 0x1a7c <CDC_Device_Flush+0x58>
-    1a66:      90 91 e8 00     lds     r25, 0x00E8
-    1a6a:      9e 77           andi    r25, 0x7E       ; 126
-    1a6c:      90 93 e8 00     sts     0x00E8, r25
-    1a70:      08 95           ret
-}
-
-uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-         return ENDPOINT_RWSTREAM_DeviceDisconnected;
-    1a72:      82 e0           ldi     r24, 0x02       ; 2
-    1a74:      08 95           ret
-       uint8_t ErrorCode;
-
-       Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
-
-       if (!(Endpoint_BytesInEndpoint()))
-         return ENDPOINT_READYWAIT_NoError;
-    1a76:      80 e0           ldi     r24, 0x00       ; 0
-    1a78:      08 95           ret
-                 return ErrorCode;
-
-               Endpoint_ClearIN();
-       }
-
-       return ENDPOINT_READYWAIT_NoError;
-    1a7a:      80 e0           ldi     r24, 0x00       ; 0
-}
-    1a7c:      08 95           ret
-
-00001a7e <CDC_Device_USBTask>:
-       return true;
-}
-
-void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    1a7e:      2e b3           in      r18, 0x1e       ; 30
-    1a80:      24 30           cpi     r18, 0x04       ; 4
-    1a82:      99 f4           brne    .+38            ; 0x1aaa <CDC_Device_USBTask+0x2c>
-    1a84:      fc 01           movw    r30, r24
-    1a86:      24 89           ldd     r18, Z+20       ; 0x14
-    1a88:      35 89           ldd     r19, Z+21       ; 0x15
-    1a8a:      46 89           ldd     r20, Z+22       ; 0x16
-    1a8c:      57 89           ldd     r21, Z+23       ; 0x17
-    1a8e:      21 15           cp      r18, r1
-    1a90:      31 05           cpc     r19, r1
-    1a92:      41 05           cpc     r20, r1
-    1a94:      51 05           cpc     r21, r1
-    1a96:      49 f0           breq    .+18            ; 0x1aaa <CDC_Device_USBTask+0x2c>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1a98:      21 81           ldd     r18, Z+1        ; 0x01
-    1a9a:      2f 70           andi    r18, 0x0F       ; 15
-    1a9c:      20 93 e9 00     sts     0x00E9, r18
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsINReady(void)
-                       {
-                               return ((UEINTX & (1 << TXINI)) ? true : false);
-    1aa0:      20 91 e8 00     lds     r18, 0x00E8
-         return;
-
-       #if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
-       Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
-
-       if (Endpoint_IsINReady())
-    1aa4:      20 ff           sbrs    r18, 0
-    1aa6:      01 c0           rjmp    .+2             ; 0x1aaa <CDC_Device_USBTask+0x2c>
-         CDC_Device_Flush(CDCInterfaceInfo);
-    1aa8:      bd cf           rjmp    .-134           ; 0x1a24 <CDC_Device_Flush>
-    1aaa:      08 95           ret
-
-00001aac <CDC_Device_ReceiveByte>:
-               return 0;
-       }
-}
-
-int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-    1aac:      fc 01           movw    r30, r24
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-    1aae:      8e b3           in      r24, 0x1e       ; 30
-    1ab0:      84 30           cpi     r24, 0x04       ; 4
-    1ab2:      29 f5           brne    .+74            ; 0x1afe <CDC_Device_ReceiveByte+0x52>
-    1ab4:      24 89           ldd     r18, Z+20       ; 0x14
-    1ab6:      35 89           ldd     r19, Z+21       ; 0x15
-    1ab8:      46 89           ldd     r20, Z+22       ; 0x16
-    1aba:      57 89           ldd     r21, Z+23       ; 0x17
-    1abc:      21 15           cp      r18, r1
-    1abe:      31 05           cpc     r19, r1
-    1ac0:      41 05           cpc     r20, r1
-    1ac2:      51 05           cpc     r21, r1
-    1ac4:      e1 f0           breq    .+56            ; 0x1afe <CDC_Device_ReceiveByte+0x52>
-                        */
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_SelectEndpoint(const uint8_t Address)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UENUM = (Address & ENDPOINT_EPNUM_MASK);
-    1ac6:      86 81           ldd     r24, Z+6        ; 0x06
-    1ac8:      8f 70           andi    r24, 0x0F       ; 15
-    1aca:      80 93 e9 00     sts     0x00E9, r24
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
-                        */
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline bool Endpoint_IsOUTReceived(void)
-                       {
-                               return ((UEINTX & (1 << RXOUTI)) ? true : false);
-    1ace:      80 91 e8 00     lds     r24, 0x00E8
-
-       int16_t ReceivedByte = -1;
-
-       Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpoint.Address);
-
-       if (Endpoint_IsOUTReceived())
-    1ad2:      82 ff           sbrs    r24, 2
-    1ad4:      14 c0           rjmp    .+40            ; 0x1afe <CDC_Device_ReceiveByte+0x52>
-                               #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-                                       return UEBCX;
-                               #elif defined(USB_SERIES_4_AVR)
-                                       return (((uint16_t)UEBCHX << 8) | UEBCLX);
-                               #elif defined(USB_SERIES_2_AVR)
-                                       return UEBCLX;
-    1ad6:      80 91 f2 00     lds     r24, 0x00F2
-       {
-               if (Endpoint_BytesInEndpoint())
-    1ada:      88 23           and     r24, r24
-    1adc:      21 f0           breq    .+8             ; 0x1ae6 <CDC_Device_ReceiveByte+0x3a>
-                        *  \return Next byte in the currently selected endpoint's FIFO buffer.
-                        */
-                       static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_Read_8(void)
-                       {
-                               return UEDATX;
-    1ade:      20 91 f1 00     lds     r18, 0x00F1
-                 ReceivedByte = Endpoint_Read_8();
-    1ae2:      30 e0           ldi     r19, 0x00       ; 0
-    1ae4:      02 c0           rjmp    .+4             ; 0x1aea <CDC_Device_ReceiveByte+0x3e>
-int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-         return -1;
-
-       int16_t ReceivedByte = -1;
-    1ae6:      2f ef           ldi     r18, 0xFF       ; 255
-    1ae8:      3f ef           ldi     r19, 0xFF       ; 255
-                               #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
-                                       return UEBCX;
-                               #elif defined(USB_SERIES_4_AVR)
-                                       return (((uint16_t)UEBCHX << 8) | UEBCLX);
-                               #elif defined(USB_SERIES_2_AVR)
-                                       return UEBCLX;
-    1aea:      80 91 f2 00     lds     r24, 0x00F2
-       if (Endpoint_IsOUTReceived())
-       {
-               if (Endpoint_BytesInEndpoint())
-                 ReceivedByte = Endpoint_Read_8();
-
-               if (!(Endpoint_BytesInEndpoint()))
-    1aee:      88 23           and     r24, r24
-    1af0:      41 f4           brne    .+16            ; 0x1b02 <CDC_Device_ReceiveByte+0x56>
-                        */
-                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
-                       static inline void Endpoint_ClearOUT(void)
-                       {
-                               #if !defined(CONTROL_ONLY_DEVICE)
-                                       UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
-    1af2:      80 91 e8 00     lds     r24, 0x00E8
-    1af6:      8b 77           andi    r24, 0x7B       ; 123
-    1af8:      80 93 e8 00     sts     0x00E8, r24
-    1afc:      02 c0           rjmp    .+4             ; 0x1b02 <CDC_Device_ReceiveByte+0x56>
-int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
-       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
-         return -1;
-
-       int16_t ReceivedByte = -1;
-    1afe:      2f ef           ldi     r18, 0xFF       ; 255
-    1b00:      3f ef           ldi     r19, 0xFF       ; 255
-               if (!(Endpoint_BytesInEndpoint()))
-                 Endpoint_ClearOUT();
-       }
-
-       return ReceivedByte;
-}
-    1b02:      c9 01           movw    r24, r18
-    1b04:      08 95           ret
-
-00001b06 <CDC_Device_Event_Stub>:
-#endif
-
-void CDC_Device_Event_Stub(void)
-{
-
-}
-    1b06:      08 95           ret
-
-00001b08 <__subsf3>:
-    1b08:      50 58           subi    r21, 0x80       ; 128
-
-00001b0a <__addsf3>:
-    1b0a:      bb 27           eor     r27, r27
-    1b0c:      aa 27           eor     r26, r26
-    1b0e:      0e d0           rcall   .+28            ; 0x1b2c <__addsf3x>
-    1b10:      70 c1           rjmp    .+736           ; 0x1df2 <__fp_round>
-    1b12:      61 d1           rcall   .+706           ; 0x1dd6 <__fp_pscA>
-    1b14:      30 f0           brcs    .+12            ; 0x1b22 <__addsf3+0x18>
-    1b16:      66 d1           rcall   .+716           ; 0x1de4 <__fp_pscB>
-    1b18:      20 f0           brcs    .+8             ; 0x1b22 <__addsf3+0x18>
-    1b1a:      31 f4           brne    .+12            ; 0x1b28 <__addsf3+0x1e>
-    1b1c:      9f 3f           cpi     r25, 0xFF       ; 255
-    1b1e:      11 f4           brne    .+4             ; 0x1b24 <__addsf3+0x1a>
-    1b20:      1e f4           brtc    .+6             ; 0x1b28 <__addsf3+0x1e>
-    1b22:      56 c1           rjmp    .+684           ; 0x1dd0 <__fp_nan>
-    1b24:      0e f4           brtc    .+2             ; 0x1b28 <__addsf3+0x1e>
-    1b26:      e0 95           com     r30
-    1b28:      e7 fb           bst     r30, 7
-    1b2a:      4c c1           rjmp    .+664           ; 0x1dc4 <__fp_inf>
-
-00001b2c <__addsf3x>:
-    1b2c:      e9 2f           mov     r30, r25
-    1b2e:      72 d1           rcall   .+740           ; 0x1e14 <__fp_split3>
-    1b30:      80 f3           brcs    .-32            ; 0x1b12 <__addsf3+0x8>
-    1b32:      ba 17           cp      r27, r26
-    1b34:      62 07           cpc     r22, r18
-    1b36:      73 07           cpc     r23, r19
-    1b38:      84 07           cpc     r24, r20
-    1b3a:      95 07           cpc     r25, r21
-    1b3c:      18 f0           brcs    .+6             ; 0x1b44 <__addsf3x+0x18>
-    1b3e:      71 f4           brne    .+28            ; 0x1b5c <__addsf3x+0x30>
-    1b40:      9e f5           brtc    .+102           ; 0x1ba8 <__addsf3x+0x7c>
-    1b42:      8a c1           rjmp    .+788           ; 0x1e58 <__fp_zero>
-    1b44:      0e f4           brtc    .+2             ; 0x1b48 <__addsf3x+0x1c>
-    1b46:      e0 95           com     r30
-    1b48:      0b 2e           mov     r0, r27
-    1b4a:      ba 2f           mov     r27, r26
-    1b4c:      a0 2d           mov     r26, r0
-    1b4e:      0b 01           movw    r0, r22
-    1b50:      b9 01           movw    r22, r18
-    1b52:      90 01           movw    r18, r0
-    1b54:      0c 01           movw    r0, r24
-    1b56:      ca 01           movw    r24, r20
-    1b58:      a0 01           movw    r20, r0
-    1b5a:      11 24           eor     r1, r1
-    1b5c:      ff 27           eor     r31, r31
-    1b5e:      59 1b           sub     r21, r25
-    1b60:      99 f0           breq    .+38            ; 0x1b88 <__addsf3x+0x5c>
-    1b62:      59 3f           cpi     r21, 0xF9       ; 249
-    1b64:      50 f4           brcc    .+20            ; 0x1b7a <__addsf3x+0x4e>
-    1b66:      50 3e           cpi     r21, 0xE0       ; 224
-    1b68:      68 f1           brcs    .+90            ; 0x1bc4 <__addsf3x+0x98>
-    1b6a:      1a 16           cp      r1, r26
-    1b6c:      f0 40           sbci    r31, 0x00       ; 0
-    1b6e:      a2 2f           mov     r26, r18
-    1b70:      23 2f           mov     r18, r19
-    1b72:      34 2f           mov     r19, r20
-    1b74:      44 27           eor     r20, r20
-    1b76:      58 5f           subi    r21, 0xF8       ; 248
-    1b78:      f3 cf           rjmp    .-26            ; 0x1b60 <__addsf3x+0x34>
-    1b7a:      46 95           lsr     r20
-    1b7c:      37 95           ror     r19
-    1b7e:      27 95           ror     r18
-    1b80:      a7 95           ror     r26
-    1b82:      f0 40           sbci    r31, 0x00       ; 0
-    1b84:      53 95           inc     r21
-    1b86:      c9 f7           brne    .-14            ; 0x1b7a <__addsf3x+0x4e>
-    1b88:      7e f4           brtc    .+30            ; 0x1ba8 <__addsf3x+0x7c>
-    1b8a:      1f 16           cp      r1, r31
-    1b8c:      ba 0b           sbc     r27, r26
-    1b8e:      62 0b           sbc     r22, r18
-    1b90:      73 0b           sbc     r23, r19
-    1b92:      84 0b           sbc     r24, r20
-    1b94:      ba f0           brmi    .+46            ; 0x1bc4 <__addsf3x+0x98>
-    1b96:      91 50           subi    r25, 0x01       ; 1
-    1b98:      a1 f0           breq    .+40            ; 0x1bc2 <__addsf3x+0x96>
-    1b9a:      ff 0f           add     r31, r31
-    1b9c:      bb 1f           adc     r27, r27
-    1b9e:      66 1f           adc     r22, r22
-    1ba0:      77 1f           adc     r23, r23
-    1ba2:      88 1f           adc     r24, r24
-    1ba4:      c2 f7           brpl    .-16            ; 0x1b96 <__addsf3x+0x6a>
-    1ba6:      0e c0           rjmp    .+28            ; 0x1bc4 <__addsf3x+0x98>
-    1ba8:      ba 0f           add     r27, r26
-    1baa:      62 1f           adc     r22, r18
-    1bac:      73 1f           adc     r23, r19
-    1bae:      84 1f           adc     r24, r20
-    1bb0:      48 f4           brcc    .+18            ; 0x1bc4 <__addsf3x+0x98>
-    1bb2:      87 95           ror     r24
-    1bb4:      77 95           ror     r23
-    1bb6:      67 95           ror     r22
-    1bb8:      b7 95           ror     r27
-    1bba:      f7 95           ror     r31
-    1bbc:      9e 3f           cpi     r25, 0xFE       ; 254
-    1bbe:      08 f0           brcs    .+2             ; 0x1bc2 <__addsf3x+0x96>
-    1bc0:      b3 cf           rjmp    .-154           ; 0x1b28 <__addsf3+0x1e>
-    1bc2:      93 95           inc     r25
-    1bc4:      88 0f           add     r24, r24
-    1bc6:      08 f0           brcs    .+2             ; 0x1bca <__addsf3x+0x9e>
-    1bc8:      99 27           eor     r25, r25
-    1bca:      ee 0f           add     r30, r30
-    1bcc:      97 95           ror     r25
-    1bce:      87 95           ror     r24
-    1bd0:      08 95           ret
-
-00001bd2 <__cmpsf2>:
-    1bd2:      d4 d0           rcall   .+424           ; 0x1d7c <__fp_cmp>
-    1bd4:      08 f4           brcc    .+2             ; 0x1bd8 <__cmpsf2+0x6>
-    1bd6:      81 e0           ldi     r24, 0x01       ; 1
-    1bd8:      08 95           ret
-
-00001bda <__divsf3>:
-    1bda:      0c d0           rcall   .+24            ; 0x1bf4 <__divsf3x>
-    1bdc:      0a c1           rjmp    .+532           ; 0x1df2 <__fp_round>
-    1bde:      02 d1           rcall   .+516           ; 0x1de4 <__fp_pscB>
-    1be0:      40 f0           brcs    .+16            ; 0x1bf2 <__divsf3+0x18>
-    1be2:      f9 d0           rcall   .+498           ; 0x1dd6 <__fp_pscA>
-    1be4:      30 f0           brcs    .+12            ; 0x1bf2 <__divsf3+0x18>
-    1be6:      21 f4           brne    .+8             ; 0x1bf0 <__divsf3+0x16>
-    1be8:      5f 3f           cpi     r21, 0xFF       ; 255
-    1bea:      19 f0           breq    .+6             ; 0x1bf2 <__divsf3+0x18>
-    1bec:      eb c0           rjmp    .+470           ; 0x1dc4 <__fp_inf>
-    1bee:      51 11           cpse    r21, r1
-    1bf0:      34 c1           rjmp    .+616           ; 0x1e5a <__fp_szero>
-    1bf2:      ee c0           rjmp    .+476           ; 0x1dd0 <__fp_nan>
-
-00001bf4 <__divsf3x>:
-    1bf4:      0f d1           rcall   .+542           ; 0x1e14 <__fp_split3>
-    1bf6:      98 f3           brcs    .-26            ; 0x1bde <__divsf3+0x4>
-
-00001bf8 <__divsf3_pse>:
-    1bf8:      99 23           and     r25, r25
-    1bfa:      c9 f3           breq    .-14            ; 0x1bee <__divsf3+0x14>
-    1bfc:      55 23           and     r21, r21
-    1bfe:      b1 f3           breq    .-20            ; 0x1bec <__divsf3+0x12>
-    1c00:      95 1b           sub     r25, r21
-    1c02:      55 0b           sbc     r21, r21
-    1c04:      bb 27           eor     r27, r27
-    1c06:      aa 27           eor     r26, r26
-    1c08:      62 17           cp      r22, r18
-    1c0a:      73 07           cpc     r23, r19
-    1c0c:      84 07           cpc     r24, r20
-    1c0e:      38 f0           brcs    .+14            ; 0x1c1e <__divsf3_pse+0x26>
-    1c10:      9f 5f           subi    r25, 0xFF       ; 255
-    1c12:      5f 4f           sbci    r21, 0xFF       ; 255
-    1c14:      22 0f           add     r18, r18
-    1c16:      33 1f           adc     r19, r19
-    1c18:      44 1f           adc     r20, r20
-    1c1a:      aa 1f           adc     r26, r26
-    1c1c:      a9 f3           breq    .-22            ; 0x1c08 <__divsf3_pse+0x10>
-    1c1e:      33 d0           rcall   .+102           ; 0x1c86 <__divsf3_pse+0x8e>
-    1c20:      0e 2e           mov     r0, r30
-    1c22:      3a f0           brmi    .+14            ; 0x1c32 <__divsf3_pse+0x3a>
-    1c24:      e0 e8           ldi     r30, 0x80       ; 128
-    1c26:      30 d0           rcall   .+96            ; 0x1c88 <__divsf3_pse+0x90>
-    1c28:      91 50           subi    r25, 0x01       ; 1
-    1c2a:      50 40           sbci    r21, 0x00       ; 0
-    1c2c:      e6 95           lsr     r30
-    1c2e:      00 1c           adc     r0, r0
-    1c30:      ca f7           brpl    .-14            ; 0x1c24 <__divsf3_pse+0x2c>
-    1c32:      29 d0           rcall   .+82            ; 0x1c86 <__divsf3_pse+0x8e>
-    1c34:      fe 2f           mov     r31, r30
-    1c36:      27 d0           rcall   .+78            ; 0x1c86 <__divsf3_pse+0x8e>
-    1c38:      66 0f           add     r22, r22
-    1c3a:      77 1f           adc     r23, r23
-    1c3c:      88 1f           adc     r24, r24
-    1c3e:      bb 1f           adc     r27, r27
-    1c40:      26 17           cp      r18, r22
-    1c42:      37 07           cpc     r19, r23
-    1c44:      48 07           cpc     r20, r24
-    1c46:      ab 07           cpc     r26, r27
-    1c48:      b0 e8           ldi     r27, 0x80       ; 128
-    1c4a:      09 f0           breq    .+2             ; 0x1c4e <__divsf3_pse+0x56>
-    1c4c:      bb 0b           sbc     r27, r27
-    1c4e:      80 2d           mov     r24, r0
-    1c50:      bf 01           movw    r22, r30
-    1c52:      ff 27           eor     r31, r31
-    1c54:      93 58           subi    r25, 0x83       ; 131
-    1c56:      5f 4f           sbci    r21, 0xFF       ; 255
-    1c58:      2a f0           brmi    .+10            ; 0x1c64 <__divsf3_pse+0x6c>
-    1c5a:      9e 3f           cpi     r25, 0xFE       ; 254
-    1c5c:      51 05           cpc     r21, r1
-    1c5e:      68 f0           brcs    .+26            ; 0x1c7a <__divsf3_pse+0x82>
-    1c60:      b1 c0           rjmp    .+354           ; 0x1dc4 <__fp_inf>
-    1c62:      fb c0           rjmp    .+502           ; 0x1e5a <__fp_szero>
-    1c64:      5f 3f           cpi     r21, 0xFF       ; 255
-    1c66:      ec f3           brlt    .-6             ; 0x1c62 <__divsf3_pse+0x6a>
-    1c68:      98 3e           cpi     r25, 0xE8       ; 232
-    1c6a:      dc f3           brlt    .-10            ; 0x1c62 <__divsf3_pse+0x6a>
-    1c6c:      86 95           lsr     r24
-    1c6e:      77 95           ror     r23
-    1c70:      67 95           ror     r22
-    1c72:      b7 95           ror     r27
-    1c74:      f7 95           ror     r31
-    1c76:      9f 5f           subi    r25, 0xFF       ; 255
-    1c78:      c9 f7           brne    .-14            ; 0x1c6c <__divsf3_pse+0x74>
-    1c7a:      88 0f           add     r24, r24
-    1c7c:      91 1d           adc     r25, r1
-    1c7e:      96 95           lsr     r25
-    1c80:      87 95           ror     r24
-    1c82:      97 f9           bld     r25, 7
-    1c84:      08 95           ret
-    1c86:      e1 e0           ldi     r30, 0x01       ; 1
-    1c88:      66 0f           add     r22, r22
-    1c8a:      77 1f           adc     r23, r23
-    1c8c:      88 1f           adc     r24, r24
-    1c8e:      bb 1f           adc     r27, r27
-    1c90:      62 17           cp      r22, r18
-    1c92:      73 07           cpc     r23, r19
-    1c94:      84 07           cpc     r24, r20
-    1c96:      ba 07           cpc     r27, r26
-    1c98:      20 f0           brcs    .+8             ; 0x1ca2 <__divsf3_pse+0xaa>
-    1c9a:      62 1b           sub     r22, r18
-    1c9c:      73 0b           sbc     r23, r19
-    1c9e:      84 0b           sbc     r24, r20
-    1ca0:      ba 0b           sbc     r27, r26
-    1ca2:      ee 1f           adc     r30, r30
-    1ca4:      88 f7           brcc    .-30            ; 0x1c88 <__divsf3_pse+0x90>
-    1ca6:      e0 95           com     r30
-    1ca8:      08 95           ret
-
-00001caa <__fixunssfsi>:
-    1caa:      bc d0           rcall   .+376           ; 0x1e24 <__fp_splitA>
-    1cac:      88 f0           brcs    .+34            ; 0x1cd0 <__fixunssfsi+0x26>
-    1cae:      9f 57           subi    r25, 0x7F       ; 127
-    1cb0:      90 f0           brcs    .+36            ; 0x1cd6 <__fixunssfsi+0x2c>
-    1cb2:      b9 2f           mov     r27, r25
-    1cb4:      99 27           eor     r25, r25
-    1cb6:      b7 51           subi    r27, 0x17       ; 23
-    1cb8:      a0 f0           brcs    .+40            ; 0x1ce2 <__fixunssfsi+0x38>
-    1cba:      d1 f0           breq    .+52            ; 0x1cf0 <__fixunssfsi+0x46>
-    1cbc:      66 0f           add     r22, r22
-    1cbe:      77 1f           adc     r23, r23
-    1cc0:      88 1f           adc     r24, r24
-    1cc2:      99 1f           adc     r25, r25
-    1cc4:      1a f0           brmi    .+6             ; 0x1ccc <__fixunssfsi+0x22>
-    1cc6:      ba 95           dec     r27
-    1cc8:      c9 f7           brne    .-14            ; 0x1cbc <__fixunssfsi+0x12>
-    1cca:      12 c0           rjmp    .+36            ; 0x1cf0 <__fixunssfsi+0x46>
-    1ccc:      b1 30           cpi     r27, 0x01       ; 1
-    1cce:      81 f0           breq    .+32            ; 0x1cf0 <__fixunssfsi+0x46>
-    1cd0:      c3 d0           rcall   .+390           ; 0x1e58 <__fp_zero>
-    1cd2:      b1 e0           ldi     r27, 0x01       ; 1
-    1cd4:      08 95           ret
-    1cd6:      c0 c0           rjmp    .+384           ; 0x1e58 <__fp_zero>
-    1cd8:      67 2f           mov     r22, r23
-    1cda:      78 2f           mov     r23, r24
-    1cdc:      88 27           eor     r24, r24
-    1cde:      b8 5f           subi    r27, 0xF8       ; 248
-    1ce0:      39 f0           breq    .+14            ; 0x1cf0 <__fixunssfsi+0x46>
-    1ce2:      b9 3f           cpi     r27, 0xF9       ; 249
-    1ce4:      cc f3           brlt    .-14            ; 0x1cd8 <__fixunssfsi+0x2e>
-    1ce6:      86 95           lsr     r24
-    1ce8:      77 95           ror     r23
-    1cea:      67 95           ror     r22
-    1cec:      b3 95           inc     r27
-    1cee:      d9 f7           brne    .-10            ; 0x1ce6 <__fixunssfsi+0x3c>
-    1cf0:      3e f4           brtc    .+14            ; 0x1d00 <__fixunssfsi+0x56>
-    1cf2:      90 95           com     r25
-    1cf4:      80 95           com     r24
-    1cf6:      70 95           com     r23
-    1cf8:      61 95           neg     r22
-    1cfa:      7f 4f           sbci    r23, 0xFF       ; 255
-    1cfc:      8f 4f           sbci    r24, 0xFF       ; 255
-    1cfe:      9f 4f           sbci    r25, 0xFF       ; 255
-    1d00:      08 95           ret
-
-00001d02 <__floatunsisf>:
-    1d02:      e8 94           clt
-    1d04:      09 c0           rjmp    .+18            ; 0x1d18 <__floatsisf+0x12>
-
-00001d06 <__floatsisf>:
-    1d06:      97 fb           bst     r25, 7
-    1d08:      3e f4           brtc    .+14            ; 0x1d18 <__floatsisf+0x12>
-    1d0a:      90 95           com     r25
-    1d0c:      80 95           com     r24
-    1d0e:      70 95           com     r23
-    1d10:      61 95           neg     r22
-    1d12:      7f 4f           sbci    r23, 0xFF       ; 255
-    1d14:      8f 4f           sbci    r24, 0xFF       ; 255
-    1d16:      9f 4f           sbci    r25, 0xFF       ; 255
-    1d18:      99 23           and     r25, r25
-    1d1a:      a9 f0           breq    .+42            ; 0x1d46 <__floatsisf+0x40>
-    1d1c:      f9 2f           mov     r31, r25
-    1d1e:      96 e9           ldi     r25, 0x96       ; 150
-    1d20:      bb 27           eor     r27, r27
-    1d22:      93 95           inc     r25
-    1d24:      f6 95           lsr     r31
-    1d26:      87 95           ror     r24
-    1d28:      77 95           ror     r23
-    1d2a:      67 95           ror     r22
-    1d2c:      b7 95           ror     r27
-    1d2e:      f1 11           cpse    r31, r1
-    1d30:      f8 cf           rjmp    .-16            ; 0x1d22 <__floatsisf+0x1c>
-    1d32:      fa f4           brpl    .+62            ; 0x1d72 <__floatsisf+0x6c>
-    1d34:      bb 0f           add     r27, r27
-    1d36:      11 f4           brne    .+4             ; 0x1d3c <__floatsisf+0x36>
-    1d38:      60 ff           sbrs    r22, 0
-    1d3a:      1b c0           rjmp    .+54            ; 0x1d72 <__floatsisf+0x6c>
-    1d3c:      6f 5f           subi    r22, 0xFF       ; 255
-    1d3e:      7f 4f           sbci    r23, 0xFF       ; 255
-    1d40:      8f 4f           sbci    r24, 0xFF       ; 255
-    1d42:      9f 4f           sbci    r25, 0xFF       ; 255
-    1d44:      16 c0           rjmp    .+44            ; 0x1d72 <__floatsisf+0x6c>
-    1d46:      88 23           and     r24, r24
-    1d48:      11 f0           breq    .+4             ; 0x1d4e <__floatsisf+0x48>
-    1d4a:      96 e9           ldi     r25, 0x96       ; 150
-    1d4c:      11 c0           rjmp    .+34            ; 0x1d70 <__floatsisf+0x6a>
-    1d4e:      77 23           and     r23, r23
-    1d50:      21 f0           breq    .+8             ; 0x1d5a <__floatsisf+0x54>
-    1d52:      9e e8           ldi     r25, 0x8E       ; 142
-    1d54:      87 2f           mov     r24, r23
-    1d56:      76 2f           mov     r23, r22
-    1d58:      05 c0           rjmp    .+10            ; 0x1d64 <__floatsisf+0x5e>
-    1d5a:      66 23           and     r22, r22
-    1d5c:      71 f0           breq    .+28            ; 0x1d7a <__floatsisf+0x74>
-    1d5e:      96 e8           ldi     r25, 0x86       ; 134
-    1d60:      86 2f           mov     r24, r22
-    1d62:      70 e0           ldi     r23, 0x00       ; 0
-    1d64:      60 e0           ldi     r22, 0x00       ; 0
-    1d66:      2a f0           brmi    .+10            ; 0x1d72 <__floatsisf+0x6c>
-    1d68:      9a 95           dec     r25
-    1d6a:      66 0f           add     r22, r22
-    1d6c:      77 1f           adc     r23, r23
-    1d6e:      88 1f           adc     r24, r24
-    1d70:      da f7           brpl    .-10            ; 0x1d68 <__floatsisf+0x62>
-    1d72:      88 0f           add     r24, r24
-    1d74:      96 95           lsr     r25
-    1d76:      87 95           ror     r24
-    1d78:      97 f9           bld     r25, 7
-    1d7a:      08 95           ret
-
-00001d7c <__fp_cmp>:
-    1d7c:      99 0f           add     r25, r25
-    1d7e:      00 08           sbc     r0, r0
-    1d80:      55 0f           add     r21, r21
-    1d82:      aa 0b           sbc     r26, r26
-    1d84:      e0 e8           ldi     r30, 0x80       ; 128
-    1d86:      fe ef           ldi     r31, 0xFE       ; 254
-    1d88:      16 16           cp      r1, r22
-    1d8a:      17 06           cpc     r1, r23
-    1d8c:      e8 07           cpc     r30, r24
-    1d8e:      f9 07           cpc     r31, r25
-    1d90:      c0 f0           brcs    .+48            ; 0x1dc2 <__fp_cmp+0x46>
-    1d92:      12 16           cp      r1, r18
-    1d94:      13 06           cpc     r1, r19
-    1d96:      e4 07           cpc     r30, r20
-    1d98:      f5 07           cpc     r31, r21
-    1d9a:      98 f0           brcs    .+38            ; 0x1dc2 <__fp_cmp+0x46>
-    1d9c:      62 1b           sub     r22, r18
-    1d9e:      73 0b           sbc     r23, r19
-    1da0:      84 0b           sbc     r24, r20
-    1da2:      95 0b           sbc     r25, r21
-    1da4:      39 f4           brne    .+14            ; 0x1db4 <__fp_cmp+0x38>
-    1da6:      0a 26           eor     r0, r26
-    1da8:      61 f0           breq    .+24            ; 0x1dc2 <__fp_cmp+0x46>
-    1daa:      23 2b           or      r18, r19
-    1dac:      24 2b           or      r18, r20
-    1dae:      25 2b           or      r18, r21
-    1db0:      21 f4           brne    .+8             ; 0x1dba <__fp_cmp+0x3e>
-    1db2:      08 95           ret
-    1db4:      0a 26           eor     r0, r26
-    1db6:      09 f4           brne    .+2             ; 0x1dba <__fp_cmp+0x3e>
-    1db8:      a1 40           sbci    r26, 0x01       ; 1
-    1dba:      a6 95           lsr     r26
-    1dbc:      8f ef           ldi     r24, 0xFF       ; 255
-    1dbe:      81 1d           adc     r24, r1
-    1dc0:      81 1d           adc     r24, r1
-    1dc2:      08 95           ret
-
-00001dc4 <__fp_inf>:
-    1dc4:      97 f9           bld     r25, 7
-    1dc6:      9f 67           ori     r25, 0x7F       ; 127
-    1dc8:      80 e8           ldi     r24, 0x80       ; 128
-    1dca:      70 e0           ldi     r23, 0x00       ; 0
-    1dcc:      60 e0           ldi     r22, 0x00       ; 0
-    1dce:      08 95           ret
-
-00001dd0 <__fp_nan>:
-    1dd0:      9f ef           ldi     r25, 0xFF       ; 255
-    1dd2:      80 ec           ldi     r24, 0xC0       ; 192
-    1dd4:      08 95           ret
-
-00001dd6 <__fp_pscA>:
-    1dd6:      00 24           eor     r0, r0
-    1dd8:      0a 94           dec     r0
-    1dda:      16 16           cp      r1, r22
-    1ddc:      17 06           cpc     r1, r23
-    1dde:      18 06           cpc     r1, r24
-    1de0:      09 06           cpc     r0, r25
-    1de2:      08 95           ret
-
-00001de4 <__fp_pscB>:
-    1de4:      00 24           eor     r0, r0
-    1de6:      0a 94           dec     r0
-    1de8:      12 16           cp      r1, r18
-    1dea:      13 06           cpc     r1, r19
-    1dec:      14 06           cpc     r1, r20
-    1dee:      05 06           cpc     r0, r21
-    1df0:      08 95           ret
-
-00001df2 <__fp_round>:
-    1df2:      09 2e           mov     r0, r25
-    1df4:      03 94           inc     r0
-    1df6:      00 0c           add     r0, r0
-    1df8:      11 f4           brne    .+4             ; 0x1dfe <__fp_round+0xc>
-    1dfa:      88 23           and     r24, r24
-    1dfc:      52 f0           brmi    .+20            ; 0x1e12 <__fp_round+0x20>
-    1dfe:      bb 0f           add     r27, r27
-    1e00:      40 f4           brcc    .+16            ; 0x1e12 <__fp_round+0x20>
-    1e02:      bf 2b           or      r27, r31
-    1e04:      11 f4           brne    .+4             ; 0x1e0a <__fp_round+0x18>
-    1e06:      60 ff           sbrs    r22, 0
-    1e08:      04 c0           rjmp    .+8             ; 0x1e12 <__fp_round+0x20>
-    1e0a:      6f 5f           subi    r22, 0xFF       ; 255
-    1e0c:      7f 4f           sbci    r23, 0xFF       ; 255
-    1e0e:      8f 4f           sbci    r24, 0xFF       ; 255
-    1e10:      9f 4f           sbci    r25, 0xFF       ; 255
-    1e12:      08 95           ret
-
-00001e14 <__fp_split3>:
-    1e14:      57 fd           sbrc    r21, 7
-    1e16:      90 58           subi    r25, 0x80       ; 128
-    1e18:      44 0f           add     r20, r20
-    1e1a:      55 1f           adc     r21, r21
-    1e1c:      59 f0           breq    .+22            ; 0x1e34 <__fp_splitA+0x10>
-    1e1e:      5f 3f           cpi     r21, 0xFF       ; 255
-    1e20:      71 f0           breq    .+28            ; 0x1e3e <__fp_splitA+0x1a>
-    1e22:      47 95           ror     r20
-
-00001e24 <__fp_splitA>:
-    1e24:      88 0f           add     r24, r24
-    1e26:      97 fb           bst     r25, 7
-    1e28:      99 1f           adc     r25, r25
-    1e2a:      61 f0           breq    .+24            ; 0x1e44 <__fp_splitA+0x20>
-    1e2c:      9f 3f           cpi     r25, 0xFF       ; 255
-    1e2e:      79 f0           breq    .+30            ; 0x1e4e <__fp_splitA+0x2a>
-    1e30:      87 95           ror     r24
-    1e32:      08 95           ret
-    1e34:      12 16           cp      r1, r18
-    1e36:      13 06           cpc     r1, r19
-    1e38:      14 06           cpc     r1, r20
-    1e3a:      55 1f           adc     r21, r21
-    1e3c:      f2 cf           rjmp    .-28            ; 0x1e22 <__fp_split3+0xe>
-    1e3e:      46 95           lsr     r20
-    1e40:      f1 df           rcall   .-30            ; 0x1e24 <__fp_splitA>
-    1e42:      08 c0           rjmp    .+16            ; 0x1e54 <__fp_splitA+0x30>
-    1e44:      16 16           cp      r1, r22
-    1e46:      17 06           cpc     r1, r23
-    1e48:      18 06           cpc     r1, r24
-    1e4a:      99 1f           adc     r25, r25
-    1e4c:      f1 cf           rjmp    .-30            ; 0x1e30 <__fp_splitA+0xc>
-    1e4e:      86 95           lsr     r24
-    1e50:      71 05           cpc     r23, r1
-    1e52:      61 05           cpc     r22, r1
-    1e54:      08 94           sec
-    1e56:      08 95           ret
-
-00001e58 <__fp_zero>:
-    1e58:      e8 94           clt
-
-00001e5a <__fp_szero>:
-    1e5a:      bb 27           eor     r27, r27
-    1e5c:      66 27           eor     r22, r22
-    1e5e:      77 27           eor     r23, r23
-    1e60:      cb 01           movw    r24, r22
-    1e62:      97 f9           bld     r25, 7
-    1e64:      08 95           ret
-
-00001e66 <__gesf2>:
-    1e66:      8a df           rcall   .-236           ; 0x1d7c <__fp_cmp>
-    1e68:      08 f4           brcc    .+2             ; 0x1e6c <__gesf2+0x6>
-    1e6a:      8f ef           ldi     r24, 0xFF       ; 255
-    1e6c:      08 95           ret
-
-00001e6e <__mulhi3>:
-    1e6e:      55 27           eor     r21, r21
-    1e70:      00 24           eor     r0, r0
-
-00001e72 <__mulhi3_loop>:
-    1e72:      80 ff           sbrs    r24, 0
-    1e74:      02 c0           rjmp    .+4             ; 0x1e7a <__mulhi3_skip1>
-    1e76:      06 0e           add     r0, r22
-    1e78:      57 1f           adc     r21, r23
-
-00001e7a <__mulhi3_skip1>:
-    1e7a:      66 0f           add     r22, r22
-    1e7c:      77 1f           adc     r23, r23
-    1e7e:      61 15           cp      r22, r1
-    1e80:      71 05           cpc     r23, r1
-    1e82:      21 f0           breq    .+8             ; 0x1e8c <__mulhi3_exit>
-    1e84:      96 95           lsr     r25
-    1e86:      87 95           ror     r24
-    1e88:      00 97           sbiw    r24, 0x00       ; 0
-    1e8a:      99 f7           brne    .-26            ; 0x1e72 <__mulhi3_loop>
-
-00001e8c <__mulhi3_exit>:
-    1e8c:      95 2f           mov     r25, r21
-    1e8e:      80 2d           mov     r24, r0
-    1e90:      08 95           ret
-
-00001e92 <__udivmodhi4>:
-    1e92:      aa 1b           sub     r26, r26
-    1e94:      bb 1b           sub     r27, r27
-    1e96:      51 e1           ldi     r21, 0x11       ; 17
-    1e98:      07 c0           rjmp    .+14            ; 0x1ea8 <__udivmodhi4_ep>
-
-00001e9a <__udivmodhi4_loop>:
-    1e9a:      aa 1f           adc     r26, r26
-    1e9c:      bb 1f           adc     r27, r27
-    1e9e:      a6 17           cp      r26, r22
-    1ea0:      b7 07           cpc     r27, r23
-    1ea2:      10 f0           brcs    .+4             ; 0x1ea8 <__udivmodhi4_ep>
-    1ea4:      a6 1b           sub     r26, r22
-    1ea6:      b7 0b           sbc     r27, r23
-
-00001ea8 <__udivmodhi4_ep>:
-    1ea8:      88 1f           adc     r24, r24
-    1eaa:      99 1f           adc     r25, r25
-    1eac:      5a 95           dec     r21
-    1eae:      a9 f7           brne    .-22            ; 0x1e9a <__udivmodhi4_loop>
-    1eb0:      80 95           com     r24
-    1eb2:      90 95           com     r25
-    1eb4:      bc 01           movw    r22, r24
-    1eb6:      cd 01           movw    r24, r26
-    1eb8:      08 95           ret
-
-00001eba <__divmodhi4>:
-    1eba:      97 fb           bst     r25, 7
-    1ebc:      09 2e           mov     r0, r25
-    1ebe:      07 26           eor     r0, r23
-    1ec0:      0a d0           rcall   .+20            ; 0x1ed6 <__divmodhi4_neg1>
-    1ec2:      77 fd           sbrc    r23, 7
-    1ec4:      04 d0           rcall   .+8             ; 0x1ece <__divmodhi4_neg2>
-    1ec6:      e5 df           rcall   .-54            ; 0x1e92 <__udivmodhi4>
-    1ec8:      06 d0           rcall   .+12            ; 0x1ed6 <__divmodhi4_neg1>
-    1eca:      00 20           and     r0, r0
-    1ecc:      1a f4           brpl    .+6             ; 0x1ed4 <__divmodhi4_exit>
-
-00001ece <__divmodhi4_neg2>:
-    1ece:      70 95           com     r23
-    1ed0:      61 95           neg     r22
-    1ed2:      7f 4f           sbci    r23, 0xFF       ; 255
-
-00001ed4 <__divmodhi4_exit>:
-    1ed4:      08 95           ret
-
-00001ed6 <__divmodhi4_neg1>:
-    1ed6:      f6 f7           brtc    .-4             ; 0x1ed4 <__divmodhi4_exit>
-    1ed8:      90 95           com     r25
-    1eda:      81 95           neg     r24
-    1edc:      9f 4f           sbci    r25, 0xFF       ; 255
-    1ede:      08 95           ret
-
-00001ee0 <__udivmodsi4>:
-    1ee0:      a1 e2           ldi     r26, 0x21       ; 33
-    1ee2:      1a 2e           mov     r1, r26
-    1ee4:      aa 1b           sub     r26, r26
-    1ee6:      bb 1b           sub     r27, r27
-    1ee8:      fd 01           movw    r30, r26
-    1eea:      0d c0           rjmp    .+26            ; 0x1f06 <__udivmodsi4_ep>
-
-00001eec <__udivmodsi4_loop>:
-    1eec:      aa 1f           adc     r26, r26
-    1eee:      bb 1f           adc     r27, r27
-    1ef0:      ee 1f           adc     r30, r30
-    1ef2:      ff 1f           adc     r31, r31
-    1ef4:      a2 17           cp      r26, r18
-    1ef6:      b3 07           cpc     r27, r19
-    1ef8:      e4 07           cpc     r30, r20
-    1efa:      f5 07           cpc     r31, r21
-    1efc:      20 f0           brcs    .+8             ; 0x1f06 <__udivmodsi4_ep>
-    1efe:      a2 1b           sub     r26, r18
-    1f00:      b3 0b           sbc     r27, r19
-    1f02:      e4 0b           sbc     r30, r20
-    1f04:      f5 0b           sbc     r31, r21
-
-00001f06 <__udivmodsi4_ep>:
-    1f06:      66 1f           adc     r22, r22
-    1f08:      77 1f           adc     r23, r23
-    1f0a:      88 1f           adc     r24, r24
-    1f0c:      99 1f           adc     r25, r25
-    1f0e:      1a 94           dec     r1
-    1f10:      69 f7           brne    .-38            ; 0x1eec <__udivmodsi4_loop>
-    1f12:      60 95           com     r22
-    1f14:      70 95           com     r23
-    1f16:      80 95           com     r24
-    1f18:      90 95           com     r25
-    1f1a:      9b 01           movw    r18, r22
-    1f1c:      ac 01           movw    r20, r24
-    1f1e:      bd 01           movw    r22, r26
-    1f20:      cf 01           movw    r24, r30
-    1f22:      08 95           ret
-
-00001f24 <atoi>:
-    1f24:      fc 01           movw    r30, r24
-    1f26:      88 27           eor     r24, r24
-    1f28:      99 27           eor     r25, r25
-    1f2a:      e8 94           clt
-    1f2c:      21 91           ld      r18, Z+
-    1f2e:      20 32           cpi     r18, 0x20       ; 32
-    1f30:      e9 f3           breq    .-6             ; 0x1f2c <atoi+0x8>
-    1f32:      29 30           cpi     r18, 0x09       ; 9
-    1f34:      10 f0           brcs    .+4             ; 0x1f3a <atoi+0x16>
-    1f36:      2e 30           cpi     r18, 0x0E       ; 14
-    1f38:      c8 f3           brcs    .-14            ; 0x1f2c <atoi+0x8>
-    1f3a:      2b 32           cpi     r18, 0x2B       ; 43
-    1f3c:      39 f0           breq    .+14            ; 0x1f4c <atoi+0x28>
-    1f3e:      2d 32           cpi     r18, 0x2D       ; 45
-    1f40:      31 f4           brne    .+12            ; 0x1f4e <atoi+0x2a>
-    1f42:      68 94           set
-    1f44:      03 c0           rjmp    .+6             ; 0x1f4c <atoi+0x28>
-    1f46:      1a d0           rcall   .+52            ; 0x1f7c <__mulhi_const_10>
-    1f48:      82 0f           add     r24, r18
-    1f4a:      91 1d           adc     r25, r1
-    1f4c:      21 91           ld      r18, Z+
-    1f4e:      20 53           subi    r18, 0x30       ; 48
-    1f50:      2a 30           cpi     r18, 0x0A       ; 10
-    1f52:      c8 f3           brcs    .-14            ; 0x1f46 <atoi+0x22>
-    1f54:      1e f4           brtc    .+6             ; 0x1f5c <atoi+0x38>
-    1f56:      90 95           com     r25
-    1f58:      81 95           neg     r24
-    1f5a:      9f 4f           sbci    r25, 0xFF       ; 255
-    1f5c:      08 95           ret
-
-00001f5e <strncpy>:
-    1f5e:      fb 01           movw    r30, r22
-    1f60:      dc 01           movw    r26, r24
-    1f62:      41 50           subi    r20, 0x01       ; 1
-    1f64:      50 40           sbci    r21, 0x00       ; 0
-    1f66:      48 f0           brcs    .+18            ; 0x1f7a <strncpy+0x1c>
-    1f68:      01 90           ld      r0, Z+
-    1f6a:      0d 92           st      X+, r0
-    1f6c:      00 20           and     r0, r0
-    1f6e:      c9 f7           brne    .-14            ; 0x1f62 <strncpy+0x4>
-    1f70:      01 c0           rjmp    .+2             ; 0x1f74 <strncpy+0x16>
-    1f72:      1d 92           st      X+, r1
-    1f74:      41 50           subi    r20, 0x01       ; 1
-    1f76:      50 40           sbci    r21, 0x00       ; 0
-    1f78:      e0 f7           brcc    .-8             ; 0x1f72 <strncpy+0x14>
-    1f7a:      08 95           ret
-
-00001f7c <__mulhi_const_10>:
-    1f7c:      bc 01           movw    r22, r24
-    1f7e:      88 0f           add     r24, r24
-    1f80:      99 1f           adc     r25, r25
-    1f82:      88 0f           add     r24, r24
-    1f84:      99 1f           adc     r25, r25
-    1f86:      86 0f           add     r24, r22
-    1f88:      97 1f           adc     r25, r23
-    1f8a:      88 0f           add     r24, r24
-    1f8c:      99 1f           adc     r25, r25
-    1f8e:      08 95           ret
-
-00001f90 <_exit>:
-    1f90:      f8 94           cli
-
-00001f92 <__stop_program>:
-    1f92:      ff cf           rjmp    .-2             ; 0x1f92 <__stop_program>
diff --git a/firmware/USBtoSerial.map b/firmware/USBtoSerial.map
deleted file mode 100644 (file)
index 6c4019a..0000000
+++ /dev/null
@@ -1,1860 +0,0 @@
-Archive member included because of file (symbol)
-
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                              USBtoSerial.o (__subsf3)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o) (__addsf3x)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-                              USBtoSerial.o (__ltsf2)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                              USBtoSerial.o (__divsf3)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o) (__divsf3x)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                              USBtoSerial.o (__fixunssfsi)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-                              USBtoSerial.o (__floatunsisf)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o) (__fp_cmp)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_inf)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_nan)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_pscA)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_pscB)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o) (__fp_round)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_split3)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) (__fp_zero)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                              USBtoSerial.o (__gtsf2)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
-                              USBtoSerial.o (__mulhi3)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
-                              USBtoSerial.o (__mulsi3)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
-                              USBtoSerial.o (__udivmodhi4)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-                              USBtoSerial.o (__divmodhi4)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
-                              USBtoSerial.o (__udivmodsi4)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o (exit)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-                              USBtoSerial.o (__do_copy_data)
-/usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
-                              USBtoSerial.o (__do_clear_bss)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
-                              USBtoSerial.o (atoi)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
-                              ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o (memcpy_P)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
-                              ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o (memcmp)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
-                              ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o (memcpy)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
-                              ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o (memset)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
-                              USBtoSerial.o (strncpy)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
-                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o) (__mulhi_const_10)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
-                              ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o (__eerd_byte_m32u2)
-/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
-                              ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o (__eeupd_byte_m32u2)
-
-Allocating common symbols
-Common symbol       size              file
-
-adb_werte           0x9               USBtoSerial.o
-USB_IsInitialized   0x1               ../../LUFA/Drivers/USB/Core/USBTask.o
-USB_Device_ConfigurationNumber
-                    0x1               ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-stringbuffer        0x10              USBtoSerial.o
-USB_Device_CurrentlySelfPowered
-                    0x1               ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-USB_ControlRequest  0x8               ../../LUFA/Drivers/USB/Core/USBTask.o
-USB_Device_RemoteWakeupEnabled
-                    0x1               ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-t0ovfcount          0x1               USBtoSerial.o
-adb_data_length     0x1               USBtoSerial.o
-
-Discarded input sections
-
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
- .text          0x0000000000000000        0x0 USBtoSerial.o
- .text.touchpad_set_abs_mode
-                0x0000000000000000       0x42 USBtoSerial.o
- .text.touchpad_set_rel_mode_200dpi
-                0x0000000000000000       0x2a USBtoSerial.o
- .text.z_pressure
-                0x0000000000000000       0x16 USBtoSerial.o
- .text.x_abs    0x0000000000000000       0x3c USBtoSerial.o
- .text.y_abs    0x0000000000000000       0x3e USBtoSerial.o
- .text.decode_field
-                0x0000000000000000       0x8c USBtoSerial.o
- .text.uart_print_number
-                0x0000000000000000       0x2c USBtoSerial.o
- .text.times_ten_pow
-                0x0000000000000000       0x3a USBtoSerial.o
- .text          0x0000000000000000        0x0 Descriptors.o
- .data          0x0000000000000000        0x0 Descriptors.o
- .bss           0x0000000000000000        0x0 Descriptors.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .text.USB_ProcessHIDReport
-                0x0000000000000000      0x836 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .text.USB_GetHIDReportItemInfo
-                0x0000000000000000       0xbc ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .text.USB_SetHIDReportItemInfo
-                0x0000000000000000       0xc8 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .text.USB_GetHIDReportSize
-                0x0000000000000000       0x58 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .text.USB_Device_SendRemoteWakeup
-                0x0000000000000000       0x2c ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Discard_Stream
-                0x0000000000000000       0x8e ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Null_Stream
-                0x0000000000000000       0x8e ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Stream_LE
-                0x0000000000000000       0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Stream_BE
-                0x0000000000000000       0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Stream_LE
-                0x0000000000000000       0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Stream_BE
-                0x0000000000000000       0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_PStream_LE
-                0x0000000000000000       0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_PStream_BE
-                0x0000000000000000       0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_EStream_LE
-                0x0000000000000000       0xc4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_EStream_BE
-                0x0000000000000000       0xb0 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_EStream_LE
-                0x0000000000000000       0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_EStream_BE
-                0x0000000000000000       0xb2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Control_Stream_BE
-                0x0000000000000000       0xb8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Control_Stream_LE
-                0x0000000000000000       0x78 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Control_Stream_BE
-                0x0000000000000000       0x7a ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Control_PStream_BE
-                0x0000000000000000       0xba ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Control_EStream_LE
-                0x0000000000000000       0xcc ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Write_Control_EStream_BE
-                0x0000000000000000       0xda ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Control_EStream_LE
-                0x0000000000000000       0x84 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text.Endpoint_Read_Control_EStream_BE
-                0x0000000000000000       0x8a ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .text.Endpoint_ClearEndpoints
-                0x0000000000000000       0x2c ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .text.USB_Disable
-                0x0000000000000000       0x2e ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .text.USB_GetNextDescriptorOfType
-                0x0000000000000000       0x4c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .text.USB_GetNextDescriptorOfTypeBefore
-                0x0000000000000000       0x56 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .text.USB_GetNextDescriptorOfTypeAfter
-                0x0000000000000000       0x34 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .text.USB_GetNextDescriptorComp
-                0x0000000000000000       0x86 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/Events.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/Events.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/Events.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/USBTask.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/USBTask.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Core/USBTask.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .text.Audio_Device_ProcessControlRequest
-                0x0000000000000000      0x316 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .text.Audio_Device_ConfigureEndpoints
-                0x0000000000000000       0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .text.Audio_Device_Event_Stub
-                0x0000000000000000        0x2 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .data          0x0000000000000000        0x8 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_SendString
-                0x0000000000000000       0x46 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_SendData
-                0x0000000000000000       0x38 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_putchar
-                0x0000000000000000       0x20 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_BytesReceived
-                0x0000000000000000       0x4e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_getchar_Blocking
-                0x0000000000000000       0x36 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_getchar
-                0x0000000000000000       0x18 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_SendControlLineStateChange
-                0x0000000000000000       0x8c ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_CreateStream
-                0x0000000000000000       0x26 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text.CDC_Device_CreateBlockingStream
-                0x0000000000000000       0x26 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .text.HID_Device_ProcessControlRequest
-                0x0000000000000000      0x28c ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .text.HID_Device_ConfigureEndpoints
-                0x0000000000000000       0x34 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .text.HID_Device_USBTask
-                0x0000000000000000      0x1a0 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .text.MS_Device_ProcessControlRequest
-                0x0000000000000000       0x7e ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .text.MS_Device_ConfigureEndpoints
-                0x0000000000000000       0x3c ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .text.MS_Device_USBTask
-                0x0000000000000000      0x266 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text.MIDI_Device_ConfigureEndpoints
-                0x0000000000000000       0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text.MIDI_Device_SendEventPacket
-                0x0000000000000000       0x3a ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text.MIDI_Device_Flush
-                0x0000000000000000       0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text.MIDI_Device_USBTask
-                0x0000000000000000       0x1e ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text.MIDI_Device_ReceiveEventPacket
-                0x0000000000000000       0x44 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .data          0x0000000000000000        0x8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_ProcessControlRequest
-                0x0000000000000000      0x5bc ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_ConfigureEndpoints
-                0x0000000000000000       0x4e ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_USBTask
-                0x0000000000000000       0x86 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_IsPacketReceived
-                0x0000000000000000       0x2e ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_ReadPacket
-                0x0000000000000000       0xbe ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text.RNDIS_Device_SendPacket
-                0x0000000000000000       0xde ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .progmem.data  0x0000000000000000       0x6c ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .text          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
- .data          0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
- .bss           0x0000000000000000        0x0 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
- .text.libgcc   0x0000000000000000       0x32 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
- .text.libgcc   0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
- .text.libgcc   0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
- .text.libgcc   0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
- .text.avr-libc
-                0x0000000000000000       0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
- .text.avr-libc
-                0x0000000000000000       0x1a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
- .text.avr-libc
-                0x0000000000000000       0x12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
- .text.avr-libc
-                0x0000000000000000        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
- .text.avr-libc
-                0x0000000000000000       0x10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
- .text          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
- .data          0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
- .bss           0x0000000000000000        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
- .text.avr-libc
-                0x0000000000000000       0x24 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
-
-Memory Configuration
-
-Name             Origin             Length             Attributes
-text             0x0000000000000000 0x0000000000010000 xr
-data             0x0000000000800060 0x000000000000ffa0 rw !x
-eeprom           0x0000000000810000 0x0000000000010000 rw !x
-fuse             0x0000000000820000 0x0000000000000400 rw !x
-lock             0x0000000000830000 0x0000000000000400 rw !x
-signature        0x0000000000840000 0x0000000000000400 rw !x
-*default*        0x0000000000000000 0xffffffffffffffff
-
-Linker script and memory map
-
-Address of section .data set to 0x800100
-LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-LOAD USBtoSerial.o
-LOAD Descriptors.o
-LOAD ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
-LOAD ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
-LOAD ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_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/PipeStream_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/ConfigDescriptors.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/Device/AudioClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
-LOAD ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a
-LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a
-LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a
-LOAD /usr/lib/gcc/avr/4.5.3/avr35/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           0x0000000000000000     0x1f94
- *(.vectors)
- .vectors       0x0000000000000000       0x98 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-                0x0000000000000000                __vectors
-                0x0000000000000000                __vector_default
- *(.vectors)
- *(.progmem.gcc*)
- *(.progmem*)
- .progmem.data  0x0000000000000098       0x9e Descriptors.o
-                0x0000000000000098                DeviceDescriptor
-                0x00000000000000aa                ConfigurationDescriptor
-                0x00000000000000e8                LanguageString
-                0x00000000000000ec                ManufacturerString
-                0x0000000000000106                ProductString
-                0x0000000000000136                . = ALIGN (0x2)
-                0x0000000000000136                __trampolines_start = .
- *(.trampolines)
- .trampolines   0x0000000000000136        0x0 linker stubs
- *(.trampolines*)
-                0x0000000000000136                __trampolines_end = .
- *(.jumptables)
- *(.jumptables*)
- *(.lowtext)
- *(.lowtext*)
-                0x0000000000000136                __ctors_start = .
- *(.ctors)
-                0x0000000000000136                __ctors_end = .
-                0x0000000000000136                __dtors_start = .
- *(.dtors)
-                0x0000000000000136                __dtors_end = .
- SORT(*)(.ctors)
- SORT(*)(.dtors)
- *(.init0)
- .init0         0x0000000000000136        0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-                0x0000000000000136                __init
- *(.init0)
- *(.init1)
- *(.init1)
- *(.init2)
- .init2         0x0000000000000136        0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
- *(.init2)
- *(.init3)
- *(.init3)
- *(.init4)
- .init4         0x0000000000000142       0x16 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-                0x0000000000000142                __do_copy_data
- .init4         0x0000000000000158       0x10 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
-                0x0000000000000158                __do_clear_bss
- *(.init4)
- *(.init5)
- *(.init5)
- *(.init6)
- *(.init6)
- *(.init7)
- *(.init7)
- *(.init8)
- *(.init8)
- *(.init9)
- .init9         0x0000000000000168        0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
- *(.init9)
- *(.text)
- .text          0x000000000000016e        0x2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-                0x000000000000016e                __vector_22
-                0x000000000000016e                __vector_28
-                0x000000000000016e                __vector_1
-                0x000000000000016e                __vector_32
-                0x000000000000016e                __vector_34
-                0x000000000000016e                __vector_24
-                0x000000000000016e                __bad_interrupt
-                0x000000000000016e                __vector_6
-                0x000000000000016e                __vector_31
-                0x000000000000016e                __vector_35
-                0x000000000000016e                __vector_3
-                0x000000000000016e                __vector_30
-                0x000000000000016e                __vector_25
-                0x000000000000016e                __vector_13
-                0x000000000000016e                __vector_17
-                0x000000000000016e                __vector_19
-                0x000000000000016e                __vector_7
-                0x000000000000016e                __vector_27
-                0x000000000000016e                __vector_5
-                0x000000000000016e                __vector_33
-                0x000000000000016e                __vector_37
-                0x000000000000016e                __vector_4
-                0x000000000000016e                __vector_9
-                0x000000000000016e                __vector_2
-                0x000000000000016e                __vector_15
-                0x000000000000016e                __vector_36
-                0x000000000000016e                __vector_29
-                0x000000000000016e                __vector_8
-                0x000000000000016e                __vector_26
-                0x000000000000016e                __vector_14
-                0x000000000000016e                __vector_10
-                0x000000000000016e                __vector_16
-                0x000000000000016e                __vector_18
-                0x000000000000016e                __vector_20
-                0x0000000000000170                . = ALIGN (0x2)
- *(.text.*)
- .text.RingBuffer_Insert
-                0x0000000000000170       0x36 USBtoSerial.o
- .text.RingBuffer_Remove
-                0x00000000000001a6       0x32 USBtoSerial.o
- .text.set_x    0x00000000000001d8       0x76 USBtoSerial.o
-                0x00000000000001d8                set_x
- .text.set_y    0x000000000000024e       0x74 USBtoSerial.o
-                0x000000000000024e                set_y
- .text.RingBuffer_InitBuffer.clone.0
-                0x00000000000002c2       0x2a USBtoSerial.o
- .text.__vector_21
-                0x00000000000002ec       0x22 USBtoSerial.o
-                0x00000000000002ec                __vector_21
- .text.t0ext    0x000000000000030e       0x10 USBtoSerial.o
-                0x000000000000030e                t0ext
- .text.t0rst    0x000000000000031e        0x8 USBtoSerial.o
-                0x000000000000031e                t0rst
- .text.adb      0x0000000000000326      0x220 USBtoSerial.o
-                0x0000000000000326                adb
- .text.touchpad_init
-                0x0000000000000546       0x10 USBtoSerial.o
-                0x0000000000000546                touchpad_init
- .text.touchpad_read
-                0x0000000000000556       0x12 USBtoSerial.o
-                0x0000000000000556                touchpad_read
- .text.touchpad_set_rel_mode_100dpi
-                0x0000000000000568       0x28 USBtoSerial.o
-                0x0000000000000568                touchpad_set_rel_mode_100dpi
- .text.delta_y  0x0000000000000590       0x20 USBtoSerial.o
-                0x0000000000000590                delta_y
- .text.delta_x  0x00000000000005b0       0x20 USBtoSerial.o
-                0x00000000000005b0                delta_x
- .text.init_leds
-                0x00000000000005d0        0x8 USBtoSerial.o
-                0x00000000000005d0                init_leds
- .text.set_led0
-                0x00000000000005d8       0x14 USBtoSerial.o
-                0x00000000000005d8                set_led0
- .text.set_led1
-                0x00000000000005ec        0xc USBtoSerial.o
-                0x00000000000005ec                set_led1
- .text.set_led2
-                0x00000000000005f8       0x1a USBtoSerial.o
-                0x00000000000005f8                set_led2
- .text.init_sw  0x0000000000000612        0xe USBtoSerial.o
-                0x0000000000000612                init_sw
- .text.sw0_state
-                0x0000000000000620       0x14 USBtoSerial.o
-                0x0000000000000620                sw0_state
- .text.sw1_state
-                0x0000000000000634       0x14 USBtoSerial.o
-                0x0000000000000634                sw1_state
- .text.sw2_state
-                0x0000000000000648       0x14 USBtoSerial.o
-                0x0000000000000648                sw2_state
- .text.Usb2SerialTask
-                0x000000000000065c       0x96 USBtoSerial.o
-                0x000000000000065c                Usb2SerialTask
- .text.SetupHardware
-                0x00000000000006f2       0x2a USBtoSerial.o
-                0x00000000000006f2                SetupHardware
- .text.EVENT_USB_Device_Connect
-                0x000000000000071c        0x2 USBtoSerial.o
-                0x000000000000071c                EVENT_USB_Device_Connect
- .text.EVENT_USB_Device_Disconnect
-                0x000000000000071e        0x2 USBtoSerial.o
-                0x000000000000071e                EVENT_USB_Device_Disconnect
- .text.EVENT_USB_Device_ConfigurationChanged
-                0x0000000000000720        0x8 USBtoSerial.o
-                0x0000000000000720                EVENT_USB_Device_ConfigurationChanged
- .text.EVENT_USB_Device_ControlRequest
-                0x0000000000000728        0x8 USBtoSerial.o
-                0x0000000000000728                EVENT_USB_Device_ControlRequest
- .text.__vector_23
-                0x0000000000000730       0x54 USBtoSerial.o
-                0x0000000000000730                __vector_23
- .text.EVENT_CDC_Device_LineEncodingChanged
-                0x0000000000000784       0xcc USBtoSerial.o
-                0x0000000000000784                EVENT_CDC_Device_LineEncodingChanged
- .text.uart_putc
-                0x0000000000000850       0x10 USBtoSerial.o
-                0x0000000000000850                uart_putc
- .text.uart_puts
-                0x0000000000000860       0x26 USBtoSerial.o
-                0x0000000000000860                uart_puts
- .text.my_uitoa
-                0x0000000000000886       0xcc USBtoSerial.o
-                0x0000000000000886                my_uitoa
- .text.sign     0x0000000000000952       0x18 USBtoSerial.o
-                0x0000000000000952                sign
- .text.uart_print_number_wlzeros
-                0x000000000000096a       0x28 USBtoSerial.o
-                0x000000000000096a                uart_print_number_wlzeros
- .text.uart_print_signed_number
-                0x0000000000000992       0x46 USBtoSerial.o
-                0x0000000000000992                uart_print_signed_number
- .text.init_motors
-                0x00000000000009d8       0x1a USBtoSerial.o
-                0x00000000000009d8                init_motors
- .text.motor_step
-                0x00000000000009f2       0x64 USBtoSerial.o
-                0x00000000000009f2                motor_step
- .text.move_plate
-                0x0000000000000a56       0xa2 USBtoSerial.o
-                0x0000000000000a56                move_plate
- .text.print_steps_in_mm
-                0x0000000000000af8       0x54 USBtoSerial.o
-                0x0000000000000af8                print_steps_in_mm
- .text.pos_report
-                0x0000000000000b4c       0x26 USBtoSerial.o
-                0x0000000000000b4c                pos_report
- .text.parse_command
-                0x0000000000000b72      0x35e USBtoSerial.o
-                0x0000000000000b72                parse_command
- .text.main     0x0000000000000ed0       0xb2 USBtoSerial.o
-                0x0000000000000ed0                main
- .text.CALLBACK_USB_GetDescriptor
-                0x0000000000000f82       0x5a Descriptors.o
-                0x0000000000000f82                CALLBACK_USB_GetDescriptor
- .text.Endpoint_Write_Control_Stream_LE
-                0x0000000000000fdc       0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                0x0000000000000fdc                Endpoint_Write_Control_Stream_LE
- .text.Endpoint_Write_Control_PStream_LE
-                0x0000000000001090       0xb6 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                0x0000000000001090                Endpoint_Write_Control_PStream_LE
- .text.Endpoint_ConfigureEndpoint_Prv
-                0x0000000000001146       0x6e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x0000000000001146                Endpoint_ConfigureEndpoint_Prv
- .text.Endpoint_ConfigureEndpointTable
-                0x00000000000011b4       0x88 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x00000000000011b4                Endpoint_ConfigureEndpointTable
- .text.Endpoint_ClearStatusStage
-                0x000000000000123c       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x000000000000123c                Endpoint_ClearStatusStage
- .text.Endpoint_WaitUntilReady
-                0x000000000000127a       0x66 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                0x000000000000127a                Endpoint_WaitUntilReady
- .text.USB_ResetInterface
-                0x00000000000012e0       0x70 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-                0x00000000000012e0                USB_ResetInterface
- .text.USB_Init
-                0x0000000000001350       0x12 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-                0x0000000000001350                USB_Init
- .text.USB_INT_DisableAllInterrupts
-                0x0000000000001362        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x0000000000001362                USB_INT_DisableAllInterrupts
- .text.USB_INT_ClearAllInterrupts
-                0x0000000000001368        0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x0000000000001368                USB_INT_ClearAllInterrupts
- .text.__vector_11
-                0x000000000000136e      0x148 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x000000000000136e                __vector_11
- .text.__vector_12
-                0x00000000000014b6       0x76 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                0x00000000000014b6                __vector_12
- .text.USB_Device_ProcessControlRequest
-                0x000000000000152c      0x2c4 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                0x000000000000152c                USB_Device_ProcessControlRequest
- .text.USB_Event_Stub
-                0x00000000000017f0        0x2 ../../LUFA/Drivers/USB/Core/Events.o
-                0x00000000000017f0                EVENT_USB_Device_WakeUp
-                0x00000000000017f0                USB_Event_Stub
-                0x00000000000017f0                EVENT_USB_Device_Suspend
-                0x00000000000017f0                EVENT_USB_Device_StartOfFrame
-                0x00000000000017f0                EVENT_USB_Device_Reset
- .text.USB_USBTask
-                0x00000000000017f2       0x36 ../../LUFA/Drivers/USB/Core/USBTask.o
-                0x00000000000017f2                USB_USBTask
- .text.CDC_Device_ProcessControlRequest
-                0x0000000000001828      0x15a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001828                CDC_Device_ProcessControlRequest
- .text.CDC_Device_ConfigureEndpoints
-                0x0000000000001982       0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001982                CDC_Device_ConfigureEndpoints
- .text.CDC_Device_SendByte
-                0x00000000000019ca       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x00000000000019ca                CDC_Device_SendByte
- .text.CDC_Device_Flush
-                0x0000000000001a24       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001a24                CDC_Device_Flush
- .text.CDC_Device_USBTask
-                0x0000000000001a7e       0x2e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001a7e                CDC_Device_USBTask
- .text.CDC_Device_ReceiveByte
-                0x0000000000001aac       0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001aac                CDC_Device_ReceiveByte
- .text.CDC_Device_Event_Stub
-                0x0000000000001b06        0x2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                0x0000000000001b06                EVENT_CDC_Device_ControLineStateChanged
-                0x0000000000001b06                EVENT_CDC_Device_BreakSent
-                0x0000000000001b06                CDC_Device_Event_Stub
- .text.avr-libc.fplib
-                0x0000000000001b08        0xa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                0x0000000000001b08                __subsf3
-                0x0000000000001b0a                __addsf3
- .text.avr-libc.fplib
-                0x0000000000001b12       0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-                0x0000000000001b2c                __addsf3x
- .text.avr-libc.fplib
-                0x0000000000001bd2        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-                0x0000000000001bd2                __lesf2
-                0x0000000000001bd2                __nesf2
-                0x0000000000001bd2                __eqsf2
-                0x0000000000001bd2                __cmpsf2
-                0x0000000000001bd2                __ltsf2
- .text.avr-libc.fplib
-                0x0000000000001bda        0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                0x0000000000001bda                __divsf3
- .text.avr-libc.fplib
-                0x0000000000001bde       0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                0x0000000000001bf4                __divsf3x
-                0x0000000000001bf8                __divsf3_pse
- .text.avr-libc.fplib
-                0x0000000000001caa       0x58 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                0x0000000000001caa                __fixunssfsi
- .text.avr-libc.fplib
-                0x0000000000001d02       0x7a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-                0x0000000000001d02                __floatunsisf
-                0x0000000000001d06                __floatsisf
- .text.avr-libc.fplib
-                0x0000000000001d7c       0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
-                0x0000000000001d7c                __fp_cmp
- .text.avr-libc.fplib
-                0x0000000000001dc4        0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
-                0x0000000000001dc4                __fp_inf
- .text.avr-libc.fplib
-                0x0000000000001dd0        0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
-                0x0000000000001dd0                __fp_nan
- .text.avr-libc.fplib
-                0x0000000000001dd6        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
-                0x0000000000001dd6                __fp_pscA
- .text.avr-libc.fplib
-                0x0000000000001de4        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
-                0x0000000000001de4                __fp_pscB
- .text.avr-libc.fplib
-                0x0000000000001df2       0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
-                0x0000000000001df2                __fp_round
- .text.avr-libc.fplib
-                0x0000000000001e14       0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                0x0000000000001e14                __fp_split3
-                0x0000000000001e24                __fp_splitA
- .text.avr-libc.fplib
-                0x0000000000001e58        0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                0x0000000000001e58                __fp_zero
-                0x0000000000001e5a                __fp_szero
- .text.avr-libc.fplib
-                0x0000000000001e66        0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                0x0000000000001e66                __gtsf2
-                0x0000000000001e66                __gesf2
- .text.libgcc   0x0000000000001e6e       0x24 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
-                0x0000000000001e6e                __mulhi3
- .text.libgcc   0x0000000000001e92       0x28 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
-                0x0000000000001e92                __udivmodhi4
- .text.libgcc   0x0000000000001eba       0x26 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-                0x0000000000001eba                __divmodhi4
-                0x0000000000001eba                _div
- .text.libgcc   0x0000000000001ee0       0x44 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
-                0x0000000000001ee0                __udivmodsi4
- .text.avr-libc
-                0x0000000000001f24       0x3a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
-                0x0000000000001f24                atoi
- .text.avr-libc
-                0x0000000000001f5e       0x1e /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
-                0x0000000000001f5e                strncpy
- .text.avr-libc
-                0x0000000000001f7c       0x14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
-                0x0000000000001f7c                __mulhi_const_10
-                0x0000000000001f90                . = ALIGN (0x2)
- *(.fini9)
- .fini9         0x0000000000001f90        0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
-                0x0000000000001f90                exit
-                0x0000000000001f90                _exit
- *(.fini9)
- *(.fini8)
- *(.fini8)
- *(.fini7)
- *(.fini7)
- *(.fini6)
- *(.fini6)
- *(.fini5)
- *(.fini5)
- *(.fini4)
- *(.fini4)
- *(.fini3)
- *(.fini3)
- *(.fini2)
- *(.fini2)
- *(.fini1)
- *(.fini1)
- *(.fini0)
- .fini0         0x0000000000001f90        0x4 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
- *(.fini0)
-                0x0000000000001f94                _etext = .
-
-.data           0x0000000000800100       0x4e load address 0x0000000000001f94
-                0x0000000000800100                PROVIDE (__data_start, .)
- *(.data)
- .data          0x0000000000800100       0x4d USBtoSerial.o
-                0x0000000000800128                VirtualSerial_CDC_Interface
-                0x0000000000800143                phase_pattern
- *(.data*)
- *(.rodata)
- *(.rodata*)
- *(.gnu.linkonce.d*)
-                0x000000000080014e                . = ALIGN (0x2)
- *fill*         0x000000000080014d        0x1 00
-                0x000000000080014e                _edata = .
-                0x000000000080014e                PROVIDE (__data_end, .)
-
-.bss            0x000000000080014e      0x186
-                0x000000000080014e                PROVIDE (__bss_start, .)
- *(.bss)
- .bss           0x000000000080014e      0x15f USBtoSerial.o
-                0x000000000080014e                plate_pos_x
-                0x0000000000800150                plate_pos_y
- *(.bss*)
- *(COMMON)
- COMMON         0x00000000008002ad       0x1b USBtoSerial.o
-                0x00000000008002ad                adb_werte
-                0x00000000008002b6                stringbuffer
-                0x00000000008002c6                t0ovfcount
-                0x00000000008002c7                adb_data_length
- COMMON         0x00000000008002c8        0x3 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                0x00000000008002c8                USB_Device_ConfigurationNumber
-                0x00000000008002c9                USB_Device_CurrentlySelfPowered
-                0x00000000008002ca                USB_Device_RemoteWakeupEnabled
- COMMON         0x00000000008002cb        0x9 ../../LUFA/Drivers/USB/Core/USBTask.o
-                0x00000000008002cb                USB_IsInitialized
-                0x00000000008002cc                USB_ControlRequest
-                0x00000000008002d4                PROVIDE (__bss_end, .)
-                0x0000000000001f94                __data_load_start = LOADADDR (.data)
-                0x0000000000001fe2                __data_load_end = (__data_load_start + SIZEOF (.data))
-
-.noinit         0x00000000008002d4        0x0
-                0x00000000008002d4                PROVIDE (__noinit_start, .)
- *(.noinit*)
-                0x00000000008002d4                PROVIDE (__noinit_end, .)
-                0x00000000008002d4                _end = .
-                0x00000000008002d4                PROVIDE (__heap_start, .)
-
-.eeprom         0x0000000000810000        0x0
- *(.eeprom*)
-                0x0000000000810000                __eeprom_end = .
-
-.fuse
- *(.fuse)
- *(.lfuse)
- *(.hfuse)
- *(.efuse)
-
-.lock
- *(.lock*)
-
-.signature
- *(.signature*)
-
-.stab           0x0000000000000000     0x255c
- *(.stab)
- .stab          0x0000000000000000      0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
- .stab          0x00000000000006cc       0x78 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                                         0x84 (size before relaxing)
- .stab          0x0000000000000744      0x4bc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-                                        0x4c8 (size before relaxing)
- .stab          0x0000000000000c00       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-                                         0x9c (size before relaxing)
- .stab          0x0000000000000c90       0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                                         0x54 (size before relaxing)
- .stab          0x0000000000000cd8      0x510 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                        0x51c (size before relaxing)
- .stab          0x00000000000011e8      0x240 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                                        0x24c (size before relaxing)
- .stab          0x0000000000001428      0x318 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-                                        0x324 (size before relaxing)
- .stab          0x0000000000001740      0x1e0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
-                                        0x1ec (size before relaxing)
- .stab          0x0000000000001920       0x78 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
-                                         0x84 (size before relaxing)
- .stab          0x0000000000001998       0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
-                                         0x60 (size before relaxing)
- .stab          0x00000000000019ec       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
-                                         0x90 (size before relaxing)
- .stab          0x0000000000001a70       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
-                                         0x90 (size before relaxing)
- .stab          0x0000000000001af4       0xfc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
-                                        0x108 (size before relaxing)
- .stab          0x0000000000001bf0      0x1d4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                                        0x1e0 (size before relaxing)
- .stab          0x0000000000001dc4       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                                         0x9c (size before relaxing)
- .stab          0x0000000000001e54       0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                                         0x78 (size before relaxing)
- .stab          0x0000000000001ec0      0x174 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
-                                        0x180 (size before relaxing)
- .stab          0x0000000000002034       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
-                                         0x90 (size before relaxing)
- .stab          0x00000000000020b8       0xb4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
-                                         0xc0 (size before relaxing)
- .stab          0x000000000000216c       0x84 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
-                                         0x90 (size before relaxing)
- .stab          0x00000000000021f0       0x6c /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
-                                         0x78 (size before relaxing)
- .stab          0x000000000000225c       0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
-                                         0xd8 (size before relaxing)
- .stab          0x0000000000002328       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
-                                         0x9c (size before relaxing)
- .stab          0x00000000000023b8       0x90 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
-                                         0x9c (size before relaxing)
- .stab          0x0000000000002448      0x114 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
-                                        0x120 (size before relaxing)
-
-.stabstr        0x0000000000000000      0x4d5
- *(.stabstr)
- .stabstr       0x0000000000000000      0x4d5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.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  0x0000000000000000      0x5e0
- *(.debug_aranges)
- .debug_aranges
-                0x0000000000000000      0x1b0 USBtoSerial.o
- .debug_aranges
-                0x00000000000001b0       0x20 Descriptors.o
- .debug_aranges
-                0x00000000000001d0       0x38 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_aranges
-                0x0000000000000208       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_aranges
-                0x0000000000000228       0xc8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_aranges
-                0x00000000000002f0       0x40 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_aranges
-                0x0000000000000330       0x30 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_aranges
-                0x0000000000000360       0x38 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_aranges
-                0x0000000000000398       0x38 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_aranges
-                0x00000000000003d0       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_aranges
-                0x00000000000003f0       0x20 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_aranges
-                0x0000000000000410       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_aranges
-                0x0000000000000430       0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_aranges
-                0x0000000000000460       0x98 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_aranges
-                0x00000000000004f8       0x30 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_aranges
-                0x0000000000000528       0x30 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_aranges
-                0x0000000000000558       0x40 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_aranges
-                0x0000000000000598       0x48 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-.debug_pubnames
-                0x0000000000000000      0xfa4
- *(.debug_pubnames)
- .debug_pubnames
-                0x0000000000000000      0x409 USBtoSerial.o
- .debug_pubnames
-                0x0000000000000409       0x9e Descriptors.o
- .debug_pubnames
-                0x00000000000004a7       0x7e ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_pubnames
-                0x0000000000000525       0x32 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_pubnames
-                0x0000000000000557      0x2df ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_pubnames
-                0x0000000000000836       0xaf ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_pubnames
-                0x00000000000008e5       0x46 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_pubnames
-                0x000000000000092b       0x72 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_pubnames
-                0x000000000000099d       0x9b ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_pubnames
-                0x0000000000000a38       0xa1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_pubnames
-                0x0000000000000ad9       0x25 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_pubnames
-                0x0000000000000afe       0x4f ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_pubnames
-                0x0000000000000b4d       0x79 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_pubnames
-                0x0000000000000bc6      0x18b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_pubnames
-                0x0000000000000d51       0x70 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_pubnames
-                0x0000000000000dc1       0x6d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_pubnames
-                0x0000000000000e2e       0xa6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_pubnames
-                0x0000000000000ed4       0xd0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-.debug_info     0x0000000000000000     0x9390
- *(.debug_info)
- .debug_info    0x0000000000000000     0x15d2 USBtoSerial.o
- .debug_info    0x00000000000015d2      0x77d Descriptors.o
- .debug_info    0x0000000000001d4f      0x6f9 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_info    0x0000000000002448       0xd8 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_info    0x0000000000002520     0x154c ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_info    0x0000000000003a6c      0x603 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_info    0x000000000000406f       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_info    0x00000000000040db       0x6c ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_info    0x0000000000004147       0x6c ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_info    0x00000000000041b3      0x412 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_info    0x00000000000045c5      0x662 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_info    0x0000000000004c27      0x38c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_info    0x0000000000004fb3      0x973 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_info    0x0000000000005926       0x85 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_info    0x00000000000059ab       0x6c ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_info    0x0000000000005a17      0x245 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_info    0x0000000000005c5c      0x56c ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_info    0x00000000000061c8      0xc3b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_info    0x0000000000006e03      0x67a ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_info    0x000000000000747d      0x7ca ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_info    0x0000000000007c47      0x4c1 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_info    0x0000000000008108      0xebc ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_info    0x0000000000008fc4       0x6c ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_info    0x0000000000009030       0x6c ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_info    0x000000000000909c       0x6c ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_info    0x0000000000009108       0x6c ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_info    0x0000000000009174       0x6c ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_info    0x00000000000091e0       0x6c ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_info    0x000000000000924c       0x6c ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_info    0x00000000000092b8       0x6c ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_info    0x0000000000009324       0x6c ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
- *(.gnu.linkonce.wi.*)
-
-.debug_abbrev   0x0000000000000000     0x21fc
- *(.debug_abbrev)
- .debug_abbrev  0x0000000000000000      0x473 USBtoSerial.o
- .debug_abbrev  0x0000000000000473      0x153 Descriptors.o
- .debug_abbrev  0x00000000000005c6      0x1ec ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_abbrev  0x00000000000007b2       0x7d ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_abbrev  0x000000000000082f      0x18b ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_abbrev  0x00000000000009ba      0x1ee ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_abbrev  0x0000000000000ba8       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_abbrev  0x0000000000000bd2       0x2a ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_abbrev  0x0000000000000bfc       0x2a ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_abbrev  0x0000000000000c26      0x14d ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_abbrev  0x0000000000000d73      0x1e2 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_abbrev  0x0000000000000f55      0x148 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_abbrev  0x000000000000109d      0x20b ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_abbrev  0x00000000000012a8       0x41 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_abbrev  0x00000000000012e9       0x2a ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_abbrev  0x0000000000001313      0x14b ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_abbrev  0x000000000000145e      0x160 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_abbrev  0x00000000000015be      0x2ec ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_abbrev  0x00000000000018aa      0x1b5 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_abbrev  0x0000000000001a5f      0x205 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_abbrev  0x0000000000001c64      0x16c ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_abbrev  0x0000000000001dd0      0x2b2 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_abbrev  0x0000000000002082       0x2a ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_abbrev  0x00000000000020ac       0x2a ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_abbrev  0x00000000000020d6       0x2a ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_abbrev  0x0000000000002100       0x2a ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_abbrev  0x000000000000212a       0x2a ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_abbrev  0x0000000000002154       0x2a ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_abbrev  0x000000000000217e       0x2a ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_abbrev  0x00000000000021a8       0x2a ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_abbrev  0x00000000000021d2       0x2a ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-
-.debug_line     0x0000000000000000     0x7d90
- *(.debug_line)
- .debug_line    0x0000000000000000     0x17ad USBtoSerial.o
- .debug_line    0x00000000000017ad      0x1d9 Descriptors.o
- .debug_line    0x0000000000001986      0x762 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_line    0x00000000000020e8      0x15f ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_line    0x0000000000002247     0x1a80 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_line    0x0000000000003cc7      0x5a1 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_line    0x0000000000004268       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_line    0x00000000000042a6       0x3e ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_line    0x00000000000042e4       0x3e ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_line    0x0000000000004322      0x312 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_line    0x0000000000004634      0x55a ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_line    0x0000000000004b8e      0x269 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_line    0x0000000000004df7      0x5a2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_line    0x0000000000005399       0x80 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_line    0x0000000000005419       0x3e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_line    0x0000000000005457      0x1ae ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_line    0x0000000000005605      0x4be ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_line    0x0000000000005ac3      0x9c2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_line    0x0000000000006485      0x5c3 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_line    0x0000000000006a48      0x5c6 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_line    0x000000000000700e      0x3bc ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_line    0x00000000000073ca      0x798 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_line    0x0000000000007b62       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_line    0x0000000000007ba0       0x3e ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_line    0x0000000000007bde       0x3e ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_line    0x0000000000007c1c       0x3e ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_line    0x0000000000007c5a       0x3e ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_line    0x0000000000007c98       0x3e ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_line    0x0000000000007cd6       0x3e ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_line    0x0000000000007d14       0x3e ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_line    0x0000000000007d52       0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-
-.debug_frame    0x0000000000000000      0x980
- *(.debug_frame)
- .debug_frame   0x0000000000000000      0x340 USBtoSerial.o
- .debug_frame   0x0000000000000340       0x20 Descriptors.o
- .debug_frame   0x0000000000000360       0x50 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_frame   0x00000000000003b0       0x20 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_frame   0x00000000000003d0      0x170 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_frame   0x0000000000000540       0x60 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_frame   0x00000000000005a0       0x40 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_frame   0x00000000000005e0       0x50 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_frame   0x0000000000000630       0x50 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_frame   0x0000000000000680       0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_frame   0x00000000000006a0       0x20 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_frame   0x00000000000006c0       0x20 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_frame   0x00000000000006e0       0x40 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_frame   0x0000000000000720      0x110 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_frame   0x0000000000000830       0x40 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_frame   0x0000000000000870       0x40 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_frame   0x00000000000008b0       0x60 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_frame   0x0000000000000910       0x70 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-.debug_str      0x0000000000000000     0x3dc5
- *(.debug_str)
- .debug_str     0x0000000000000000      0xb07 USBtoSerial.o
-                                        0xbbf (size before relaxing)
- .debug_str     0x0000000000000b07      0x8ba Descriptors.o
-                                        0x9e5 (size before relaxing)
- .debug_str     0x00000000000013c1      0x47c ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
-                                        0x5c5 (size before relaxing)
- .debug_str     0x000000000000183d       0x77 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
-                                        0x128 (size before relaxing)
- .debug_str     0x00000000000018b4      0x592 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                        0x73e (size before relaxing)
- .debug_str     0x0000000000001e46      0x212 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                        0x53a (size before relaxing)
- .debug_str     0x0000000000002058       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
-                                         0xd0 (size before relaxing)
- .debug_str     0x0000000000002085       0x33 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
-                                         0xd6 (size before relaxing)
- .debug_str     0x00000000000020b8       0x2d ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
-                                         0xd0 (size before relaxing)
- .debug_str     0x00000000000020e5      0x209 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-                                        0x3f9 (size before relaxing)
- .debug_str     0x00000000000022ee      0x113 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                                        0x3fb (size before relaxing)
- .debug_str     0x0000000000002401      0x227 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
-                                        0x310 (size before relaxing)
- .debug_str     0x0000000000002628      0x3b2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                        0x82e (size before relaxing)
- .debug_str     0x00000000000029da       0x34 ../../LUFA/Drivers/USB/Core/Events.o
-                                         0xd7 (size before relaxing)
- .debug_str     0x0000000000002a0e       0x2e ../../LUFA/Drivers/USB/Core/HostStandardReq.o
-                                         0xd1 (size before relaxing)
- .debug_str     0x0000000000002a3c       0x4e ../../LUFA/Drivers/USB/Core/USBTask.o
-                                        0x27e (size before relaxing)
- .debug_str     0x0000000000002a8a      0x239 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-                                        0x4fe (size before relaxing)
- .debug_str     0x0000000000002cc3      0x2fa ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                        0x8b2 (size before relaxing)
- .debug_str     0x0000000000002fbd      0x1ed ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                        0x52d (size before relaxing)
- .debug_str     0x00000000000031aa      0x23d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-                                        0x68e (size before relaxing)
- .debug_str     0x00000000000033e7      0x118 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-                                        0x515 (size before relaxing)
- .debug_str     0x00000000000034ff      0x6e8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                        0xbc6 (size before relaxing)
- .debug_str     0x0000000000003be7       0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
-                                         0xe1 (size before relaxing)
- .debug_str     0x0000000000003c25       0x33 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
-                                         0xd6 (size before relaxing)
- .debug_str     0x0000000000003c58       0x31 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
-                                         0xd4 (size before relaxing)
- .debug_str     0x0000000000003c89       0x31 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
-                                         0xd4 (size before relaxing)
- .debug_str     0x0000000000003cba       0x39 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
-                                         0xdc (size before relaxing)
- .debug_str     0x0000000000003cf3       0x32 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
-                                         0xd5 (size before relaxing)
- .debug_str     0x0000000000003d25       0x35 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
-                                         0xd8 (size before relaxing)
- .debug_str     0x0000000000003d5a       0x33 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
-                                         0xd6 (size before relaxing)
- .debug_str     0x0000000000003d8d       0x38 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-                                         0xdb (size before relaxing)
-
-.debug_loc      0x0000000000000000     0x4b8d
- *(.debug_loc)
- .debug_loc     0x0000000000000000      0xaf1 USBtoSerial.o
- .debug_loc     0x0000000000000af1       0xd3 Descriptors.o
- .debug_loc     0x0000000000000bc4      0x88f ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_loc     0x0000000000001453     0x1982 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_loc     0x0000000000002dd5      0x390 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_loc     0x0000000000003165      0x190 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_loc     0x00000000000032f5      0x2bc ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_loc     0x00000000000035b1      0x22a ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_loc     0x00000000000037db       0x27 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_loc     0x0000000000003802      0x16d ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_loc     0x000000000000396f      0x52b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_loc     0x0000000000003e9a      0x249 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_loc     0x00000000000040e3      0x152 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_loc     0x0000000000004235      0x1f6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_loc     0x000000000000442b      0x762 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-.debug_macinfo
- *(.debug_macinfo)
-OUTPUT(USBtoSerial.elf elf32-avr)
-LOAD linker stubs
-
-.debug_pubtypes
-                0x0000000000000000     0x1111
- .debug_pubtypes
-                0x0000000000000000      0x15a USBtoSerial.o
- .debug_pubtypes
-                0x000000000000015a      0x1f1 Descriptors.o
- .debug_pubtypes
-                0x000000000000034b      0x145 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_pubtypes
-                0x0000000000000490       0x1e ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_pubtypes
-                0x00000000000004ae       0xab ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_pubtypes
-                0x0000000000000559       0x9e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_pubtypes
-                0x00000000000005f7       0x12 ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
- .debug_pubtypes
-                0x0000000000000609       0x12 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
- .debug_pubtypes
-                0x000000000000061b       0x12 ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
- .debug_pubtypes
-                0x000000000000062d       0x68 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_pubtypes
-                0x0000000000000695       0x58 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_pubtypes
-                0x00000000000006ed       0xb4 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_pubtypes
-                0x00000000000007a1       0xd7 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_pubtypes
-                0x0000000000000878       0x12 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_pubtypes
-                0x000000000000088a       0x12 ../../LUFA/Drivers/USB/Core/HostStandardReq.o
- .debug_pubtypes
-                0x000000000000089c       0x5c ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_pubtypes
-                0x00000000000008f8       0xb2 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_pubtypes
-                0x00000000000009aa      0x151 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_pubtypes
-                0x0000000000000afb       0xc6 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_pubtypes
-                0x0000000000000bc1      0x132 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_pubtypes
-                0x0000000000000cf3       0xe0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_pubtypes
-                0x0000000000000dd3      0x29c ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
- .debug_pubtypes
-                0x000000000000106f       0x12 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o
- .debug_pubtypes
-                0x0000000000001081       0x12 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o
- .debug_pubtypes
-                0x0000000000001093       0x12 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o
- .debug_pubtypes
-                0x00000000000010a5       0x12 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o
- .debug_pubtypes
-                0x00000000000010b7       0x12 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o
- .debug_pubtypes
-                0x00000000000010c9       0x12 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o
- .debug_pubtypes
-                0x00000000000010db       0x12 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o
- .debug_pubtypes
-                0x00000000000010ed       0x12 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o
- .debug_pubtypes
-                0x00000000000010ff       0x12 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o
-
-.debug_ranges   0x0000000000000000      0x868
- .debug_ranges  0x0000000000000000      0x1d0 USBtoSerial.o
- .debug_ranges  0x00000000000001d0       0x10 Descriptors.o
- .debug_ranges  0x00000000000001e0      0x100 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
- .debug_ranges  0x00000000000002e0       0x10 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
- .debug_ranges  0x00000000000002f0      0x298 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
- .debug_ranges  0x0000000000000588       0xa8 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
- .debug_ranges  0x0000000000000630       0x20 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
- .debug_ranges  0x0000000000000650       0x28 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
- .debug_ranges  0x0000000000000678       0x28 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
- .debug_ranges  0x00000000000006a0       0x10 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
- .debug_ranges  0x00000000000006b0       0x10 ../../LUFA/Drivers/USB/Core/Events.o
- .debug_ranges  0x00000000000006c0       0x10 ../../LUFA/Drivers/USB/Core/USBTask.o
- .debug_ranges  0x00000000000006d0       0x20 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
- .debug_ranges  0x00000000000006f0       0x88 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
- .debug_ranges  0x0000000000000778       0x20 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
- .debug_ranges  0x0000000000000798       0x20 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
- .debug_ranges  0x00000000000007b8       0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
- .debug_ranges  0x00000000000007e8       0x80 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-
-Cross Reference Table
-
-Symbol                                            File
-Audio_Device_ConfigureEndpoints                   ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-Audio_Device_Event_Stub                           ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-Audio_Device_ProcessControlRequest                ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-CALLBACK_Audio_Device_GetSetEndpointProperty      ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-CALLBACK_Audio_Device_GetSetInterfaceProperty     ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-CALLBACK_HIDParser_FilterHIDReportItem            ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
-CALLBACK_HID_Device_CreateHIDReport               ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-CALLBACK_HID_Device_ProcessHIDReport              ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-CALLBACK_MS_Device_SCSICommandReceived            ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-CALLBACK_USB_GetDescriptor                        Descriptors.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-CDC_Device_BytesReceived                          ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_ConfigureEndpoints                     ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-CDC_Device_CreateBlockingStream                   ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_CreateStream                           ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_Event_Stub                             ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_Flush                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_ProcessControlRequest                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-CDC_Device_ReceiveByte                            ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-CDC_Device_SendByte                               ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-CDC_Device_SendControlLineStateChange             ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_SendData                               ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_SendString                             ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-CDC_Device_USBTask                                ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-ConfigurationDescriptor                           Descriptors.o
-DeviceDescriptor                                  Descriptors.o
-EVENT_Audio_Device_StreamStartStop                ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-EVENT_CDC_Device_BreakSent                        ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-EVENT_CDC_Device_ControLineStateChanged           ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-EVENT_CDC_Device_LineEncodingChanged              USBtoSerial.o
-EVENT_USB_Device_ConfigurationChanged             USBtoSerial.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-EVENT_USB_Device_Connect                          USBtoSerial.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-EVENT_USB_Device_ControlRequest                   USBtoSerial.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-EVENT_USB_Device_Disconnect                       USBtoSerial.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-EVENT_USB_Device_Reset                            ../../LUFA/Drivers/USB/Core/Events.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-EVENT_USB_Device_StartOfFrame                     ../../LUFA/Drivers/USB/Core/Events.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-EVENT_USB_Device_Suspend                          ../../LUFA/Drivers/USB/Core/Events.o
-EVENT_USB_Device_WakeUp                           ../../LUFA/Drivers/USB/Core/Events.o
-Endpoint_ClearEndpoints                           ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-Endpoint_ClearStatusStage                         ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-Endpoint_ConfigureEndpointTable                   ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-Endpoint_ConfigureEndpoint_Prv                    ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-Endpoint_Discard_Stream                           ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Null_Stream                              ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Control_EStream_BE                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Control_EStream_LE                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Control_Stream_BE                   ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Control_Stream_LE                   ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-Endpoint_Read_EStream_BE                          ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_EStream_LE                          ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Stream_BE                           ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Read_Stream_LE                           ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-Endpoint_WaitUntilReady                           ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Control_EStream_BE                 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Control_EStream_LE                 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Control_PStream_BE                 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Control_PStream_LE                 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-Endpoint_Write_Control_Stream_BE                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Control_Stream_LE                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-Endpoint_Write_EStream_BE                         ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_EStream_LE                         ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_PStream_BE                         ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_PStream_LE                         ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Stream_BE                          ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-Endpoint_Write_Stream_LE                          ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-HID_Device_ConfigureEndpoints                     ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-HID_Device_ProcessControlRequest                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-HID_Device_USBTask                                ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-LanguageString                                    Descriptors.o
-MIDI_Device_ConfigureEndpoints                    ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-MIDI_Device_Flush                                 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-MIDI_Device_ReceiveEventPacket                    ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-MIDI_Device_SendEventPacket                       ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-MIDI_Device_USBTask                               ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o
-MS_Device_ConfigureEndpoints                      ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-MS_Device_ProcessControlRequest                   ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-MS_Device_USBTask                                 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-ManufacturerString                                Descriptors.o
-ProductString                                     Descriptors.o
-RNDIS_Device_ConfigureEndpoints                   ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-RNDIS_Device_IsPacketReceived                     ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-RNDIS_Device_ProcessControlRequest                ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-RNDIS_Device_ReadPacket                           ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-RNDIS_Device_SendPacket                           ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-RNDIS_Device_USBTask                              ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-SetupHardware                                     USBtoSerial.o
-USB_ControlRequest                                ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Core/USBTask.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-USB_Device_ConfigurationNumber                    ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-USB_Device_CurrentlySelfPowered                   ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-USB_Device_ProcessControlRequest                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  ../../LUFA/Drivers/USB/Core/USBTask.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-USB_Device_RemoteWakeupEnabled                    ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
-USB_Device_SendRemoteWakeup                       ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
-USB_Disable                                       ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.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/ConfigDescriptors.o
-USB_GetNextDescriptorOfType                       ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
-USB_GetNextDescriptorOfTypeAfter                  ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o
-USB_GetNextDescriptorOfTypeBefore                 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.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
-                                                  USBtoSerial.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
-USB_SetHIDReportItemInfo                          ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
-USB_USBTask                                       ../../LUFA/Drivers/USB/Core/USBTask.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-Usb2SerialTask                                    USBtoSerial.o
-VirtualSerial_CDC_Interface                       USBtoSerial.o
-__addsf3                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                                                  USBtoSerial.o
-__addsf3x                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-__bad_interrupt                                   /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__bss_end                                         /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
-__bss_start                                       /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
-__cmpsf2                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-__data_end                                        /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-__data_load_start                                 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-__data_start                                      /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-__divmodhi4                                       /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-                                                  USBtoSerial.o
-__divsf3                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                                                  USBtoSerial.o
-__divsf3_pse                                      /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-__divsf3x                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-__do_clear_bss                                    /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_clear_bss.o)
-                                                  ../../LUFA/Drivers/USB/Core/USBTask.o
-                                                  ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
-                                                  USBtoSerial.o
-__do_copy_data                                    /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_copy_data.o)
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o
-                                                  USBtoSerial.o
-__eerd_byte_m32u2                                 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eerd_byte_atmega32u2.o)
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-__eeupd_byte_m32u2                                /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
-                                                  ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
-__eeupd_r18_m32u2                                 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(eeupd_byte_atmega32u2.o)
-__eqsf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-__fixunssfsi                                      /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                                                  USBtoSerial.o
-__floatsisf                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-__floatunsisf                                     /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o)
-                                                  USBtoSerial.o
-__fp_cmp                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-__fp_inf                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__fp_nan                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__fp_pscA                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__fp_pscB                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__fp_round                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-__fp_split3                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__fp_splitA                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-__fp_szero                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o)
-__fp_zero                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o)
-__gesf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-__gtsf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o)
-                                                  USBtoSerial.o
-__heap_end                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__init                                            /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__lesf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-__ltsf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-                                                  USBtoSerial.o
-__mulhi3                                          /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulhi3.o)
-                                                  ../../LUFA/Drivers/USB/Class/Common/HIDParser.o
-                                                  USBtoSerial.o
-__mulhi_const_10                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(mul10.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
-__mulsi3                                          /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_mulsi3.o)
-                                                  USBtoSerial.o
-__nesf2                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o)
-__stack                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__subsf3                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o)
-                                                  USBtoSerial.o
-__udivmodhi4                                      /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodhi4.o)
-                                                  /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-                                                  USBtoSerial.o
-__udivmodsi4                                      /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o)
-                                                  USBtoSerial.o
-__vector_1                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_10                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_11                                       ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_12                                       ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_13                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_14                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_15                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_16                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_17                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_18                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_19                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_2                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_20                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_21                                       USBtoSerial.o
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_22                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_23                                       USBtoSerial.o
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_24                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_25                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_26                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_27                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_28                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_29                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_3                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_30                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_31                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_32                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_33                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_34                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_35                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_36                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_37                                       /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_4                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_5                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_6                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_7                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_8                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_9                                        /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vector_default                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-__vectors                                         /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-_div                                              /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_divmodhi4.o)
-_exit                                             /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
-adb                                               USBtoSerial.o
-adb_data_length                                   USBtoSerial.o
-adb_werte                                         USBtoSerial.o
-atoi                                              /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(atoi.o)
-                                                  USBtoSerial.o
-decode_field                                      USBtoSerial.o
-delta_x                                           USBtoSerial.o
-delta_y                                           USBtoSerial.o
-exit                                              /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o)
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-init_leds                                         USBtoSerial.o
-init_motors                                       USBtoSerial.o
-init_sw                                           USBtoSerial.o
-main                                              USBtoSerial.o
-                                                  /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o
-memcmp                                            /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcmp.o)
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-memcpy                                            /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy.o)
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-memcpy_P                                          /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memcpy_P.o)
-                                                  ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o
-memset                                            /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(memset.o)
-                                                  ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o
-motor_step                                        USBtoSerial.o
-move_plate                                        USBtoSerial.o
-my_uitoa                                          USBtoSerial.o
-parse_command                                     USBtoSerial.o
-phase_pattern                                     USBtoSerial.o
-plate_pos_x                                       USBtoSerial.o
-plate_pos_y                                       USBtoSerial.o
-pos_report                                        USBtoSerial.o
-print_steps_in_mm                                 USBtoSerial.o
-set_led0                                          USBtoSerial.o
-set_led1                                          USBtoSerial.o
-set_led2                                          USBtoSerial.o
-set_x                                             USBtoSerial.o
-set_y                                             USBtoSerial.o
-sign                                              USBtoSerial.o
-stringbuffer                                      USBtoSerial.o
-strncpy                                           /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libc.a(strncpy.o)
-                                                  USBtoSerial.o
-sw0_state                                         USBtoSerial.o
-sw1_state                                         USBtoSerial.o
-sw2_state                                         USBtoSerial.o
-t0ext                                             USBtoSerial.o
-t0ovfcount                                        USBtoSerial.o
-t0rst                                             USBtoSerial.o
-times_ten_pow                                     USBtoSerial.o
-touchpad_init                                     USBtoSerial.o
-touchpad_read                                     USBtoSerial.o
-touchpad_set_abs_mode                             USBtoSerial.o
-touchpad_set_rel_mode_100dpi                      USBtoSerial.o
-touchpad_set_rel_mode_200dpi                      USBtoSerial.o
-uart_print_number                                 USBtoSerial.o
-uart_print_number_wlzeros                         USBtoSerial.o
-uart_print_signed_number                          USBtoSerial.o
-uart_putc                                         USBtoSerial.o
-uart_puts                                         USBtoSerial.o
-x_abs                                             USBtoSerial.o
-y_abs                                             USBtoSerial.o
-z_pressure                                        USBtoSerial.o
diff --git a/firmware/USBtoSerial.o b/firmware/USBtoSerial.o
deleted file mode 100644 (file)
index 6fb4646..0000000
Binary files a/firmware/USBtoSerial.o and /dev/null differ
diff --git a/firmware/USBtoSerial.sym b/firmware/USBtoSerial.sym
deleted file mode 100644 (file)
index 853f2c0..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-         U CALLBACK_Audio_Device_GetSetEndpointProperty
-         U CALLBACK_Audio_Device_GetSetInterfaceProperty
-         U CALLBACK_HIDParser_FilterHIDReportItem
-         U CALLBACK_HID_Device_CreateHIDReport
-         U CALLBACK_HID_Device_ProcessHIDReport
-         U CALLBACK_MS_Device_SCSICommandReceived
-00000000 W __heap_end
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 a __tmp_reg__
-00000000 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__
-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__
-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__
-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__
-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__
-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 DeviceDescriptor
-000000aa T ConfigurationDescriptor
-000000e8 T LanguageString
-000000ec T ManufacturerString
-00000106 T ProductString
-00000136 T __ctors_end
-00000136 T __ctors_start
-00000136 T __dtors_end
-00000136 T __dtors_start
-00000136 W __init
-00000136 T __trampolines_end
-00000136 T __trampolines_start
-00000142 T __do_copy_data
-00000158 T __do_clear_bss
-00000160 t .do_clear_bss_loop
-00000162 t .do_clear_bss_start
-0000016e T __bad_interrupt
-0000016e W __vector_1
-0000016e W __vector_10
-0000016e W __vector_13
-0000016e W __vector_14
-0000016e W __vector_15
-0000016e W __vector_16
-0000016e W __vector_17
-0000016e W __vector_18
-0000016e W __vector_19
-0000016e W __vector_2
-0000016e W __vector_20
-0000016e W __vector_22
-0000016e W __vector_24
-0000016e W __vector_25
-0000016e W __vector_26
-0000016e W __vector_27
-0000016e W __vector_28
-0000016e W __vector_29
-0000016e W __vector_3
-0000016e W __vector_30
-0000016e W __vector_31
-0000016e W __vector_32
-0000016e W __vector_33
-0000016e W __vector_34
-0000016e W __vector_35
-0000016e W __vector_36
-0000016e W __vector_37
-0000016e W __vector_4
-0000016e W __vector_5
-0000016e W __vector_6
-0000016e W __vector_7
-0000016e W __vector_8
-0000016e W __vector_9
-00000170 t RingBuffer_Insert
-000001a6 t RingBuffer_Remove
-000001d8 T set_x
-0000024e T set_y
-000002c2 t RingBuffer_InitBuffer.clone.0
-000002ec T __vector_21
-0000030e T t0ext
-0000031e T t0rst
-00000326 T adb
-000004ff W __stack
-00000546 T touchpad_init
-00000556 T touchpad_read
-00000568 T touchpad_set_rel_mode_100dpi
-00000590 T delta_y
-000005b0 T delta_x
-000005d0 T init_leds
-000005d8 T set_led0
-000005ec T set_led1
-000005f8 T set_led2
-00000612 T init_sw
-00000620 T sw0_state
-00000634 T sw1_state
-00000648 T sw2_state
-0000065c T Usb2SerialTask
-000006f2 T SetupHardware
-0000071c T EVENT_USB_Device_Connect
-0000071e T EVENT_USB_Device_Disconnect
-00000720 T EVENT_USB_Device_ConfigurationChanged
-00000728 T EVENT_USB_Device_ControlRequest
-00000730 T __vector_23
-00000784 T EVENT_CDC_Device_LineEncodingChanged
-00000850 T uart_putc
-00000860 T uart_puts
-00000886 T my_uitoa
-00000952 T sign
-0000096a T uart_print_number_wlzeros
-00000992 T uart_print_signed_number
-000009d8 T init_motors
-000009f2 T motor_step
-00000a56 T move_plate
-00000af8 T print_steps_in_mm
-00000b4c T pos_report
-00000b72 T parse_command
-00000ed0 T main
-00000f82 T CALLBACK_USB_GetDescriptor
-00000fdc T Endpoint_Write_Control_Stream_LE
-00001090 T Endpoint_Write_Control_PStream_LE
-00001146 T Endpoint_ConfigureEndpoint_Prv
-000011b4 T Endpoint_ConfigureEndpointTable
-0000123c T Endpoint_ClearStatusStage
-0000127a T Endpoint_WaitUntilReady
-000012e0 T USB_ResetInterface
-00001350 T USB_Init
-00001362 T USB_INT_DisableAllInterrupts
-00001368 T USB_INT_ClearAllInterrupts
-0000136e T __vector_11
-000014b6 T __vector_12
-0000152c T USB_Device_ProcessControlRequest
-000017f0 W EVENT_USB_Device_Reset
-000017f0 W EVENT_USB_Device_StartOfFrame
-000017f0 W EVENT_USB_Device_Suspend
-000017f0 W EVENT_USB_Device_WakeUp
-000017f0 T USB_Event_Stub
-000017f2 T USB_USBTask
-00001828 T CDC_Device_ProcessControlRequest
-00001982 T CDC_Device_ConfigureEndpoints
-000019ca T CDC_Device_SendByte
-00001a24 T CDC_Device_Flush
-00001a7e T CDC_Device_USBTask
-00001aac T CDC_Device_ReceiveByte
-00001b06 T CDC_Device_Event_Stub
-00001b06 W EVENT_CDC_Device_BreakSent
-00001b06 W EVENT_CDC_Device_ControLineStateChanged
-00001b08 T __subsf3
-00001b0a T __addsf3
-00001b2c T __addsf3x
-00001bd2 T __cmpsf2
-00001bd2 T __eqsf2
-00001bd2 T __lesf2
-00001bd2 T __ltsf2
-00001bd2 T __nesf2
-00001bda T __divsf3
-00001bf4 T __divsf3x
-00001bf8 T __divsf3_pse
-00001caa T __fixunssfsi
-00001d02 T __floatunsisf
-00001d06 T __floatsisf
-00001d7c T __fp_cmp
-00001dc4 T __fp_inf
-00001dd0 T __fp_nan
-00001dd6 T __fp_pscA
-00001de4 T __fp_pscB
-00001df2 T __fp_round
-00001e14 T __fp_split3
-00001e24 T __fp_splitA
-00001e58 T __fp_zero
-00001e5a T __fp_szero
-00001e66 T __gesf2
-00001e66 T __gtsf2
-00001e6e T __mulhi3
-00001e72 t __mulhi3_loop
-00001e7a t __mulhi3_skip1
-00001e8c t __mulhi3_exit
-00001e92 T __udivmodhi4
-00001e9a t __udivmodhi4_loop
-00001ea8 t __udivmodhi4_ep
-00001eba T __divmodhi4
-00001eba T _div
-00001ece t __divmodhi4_neg2
-00001ed4 t __divmodhi4_exit
-00001ed6 t __divmodhi4_neg1
-00001ee0 T __udivmodsi4
-00001eec t __udivmodsi4_loop
-00001f06 t __udivmodsi4_ep
-00001f24 T atoi
-00001f5e T strncpy
-00001f7c T __mulhi_const_10
-00001f90 T _exit
-00001f90 W exit
-00001f92 t __stop_program
-00001f94 A __data_load_start
-00001f94 T _etext
-00001fe2 A __data_load_end
-00800100 D __data_start
-00800128 D VirtualSerial_CDC_Interface
-00800143 D phase_pattern
-00800147 d CSWTCH.36
-00800149 d CSWTCH.39
-0080014e B __bss_start
-0080014e D __data_end
-0080014e D _edata
-0080014e B plate_pos_x
-00800150 B plate_pos_y
-00800152 b USBtoUSART_Buffer
-0080015e b USBtoUSART_Buffer_Data
-008001de b USARTtoUSB_Buffer
-008001ea b USARTtoUSB_Buffer_Data
-0080026a b nums_found.4257
-0080026b b num_start.4256
-0080026c b curCmdLen.4255
-0080026d b cmdPos.4254
-0080026e b postdot.4253
-00800270 b predot.4252
-00800272 b numbuffer.4251
-00800282 b cmdbuffer.4250
-008002a2 b todo_y.4236
-008002a4 b todo_x.4235
-008002a6 b phase_memory.4217
-008002a8 b y_mem.4090
-008002aa b x_mem.4089
-008002ac b last_pressure.4084
-008002ad B adb_werte
-008002b6 B stringbuffer
-008002c6 B t0ovfcount
-008002c7 B adb_data_length
-008002c8 B USB_Device_ConfigurationNumber
-008002c9 B USB_Device_CurrentlySelfPowered
-008002ca B USB_Device_RemoteWakeupEnabled
-008002cb B USB_IsInitialized
-008002cc B USB_ControlRequest
-008002d4 B __bss_end
-008002d4 N _end
-00810000 N __eeprom_end
index ef205405094f91e79b678cd2f1dbdbf95a5863da..e43f97f8a90ece615d2814704e990de52371ccd6 100644 (file)
@@ -8,17 +8,17 @@ void init_leds(void) {
 
 void set_led0(uint8_t value){
   PORTLED0 &= ~(1<<LED0);
-  PORTLED0 |= (value & 0x01)<<LED0;
+  PORTLED0 |= (!(value) & 0x01)<<LED0;
 }
 
 void set_led1(uint8_t value){
   PORTLED1 &= ~(1<<LED1);
-  PORTLED1 |= (value & 0x01)<<LED1;
+  PORTLED1 |= (!(value) & 0x01)<<LED1;
 }
 
 void set_led2(uint8_t value){
   PORTLED2 &= ~(1<<LED2);
-  PORTLED2 |= (value & 0x01)<<LED2;
+  PORTLED2 |= (!(value) & 0x01)<<LED2;
 }
 
 
diff --git a/firmware/leds.c~ b/firmware/leds.c~
deleted file mode 100644 (file)
index ef20540..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-
-void init_leds(void) {
-  DDRLED0 |= 1<<LED0;
-  DDRLED1 |= 1<<LED1;
-  DDRLED2 |= 1<<LED2;
-}
-
-
-void set_led0(uint8_t value){
-  PORTLED0 &= ~(1<<LED0);
-  PORTLED0 |= (value & 0x01)<<LED0;
-}
-
-void set_led1(uint8_t value){
-  PORTLED1 &= ~(1<<LED1);
-  PORTLED1 |= (value & 0x01)<<LED1;
-}
-
-void set_led2(uint8_t value){
-  PORTLED2 &= ~(1<<LED2);
-  PORTLED2 |= (value & 0x01)<<LED2;
-}
-
-
-void init_sw(void) {
- DDRSW0 &= ~(1<<SW0);
- DDRSW1 &= ~(1<<SW1);
- DDRSW2 &= ~(1<<SW2);
- PORTSW0 |= (1<<SW0);
- PORTSW1 |= (1<<SW1);
- PORTSW2 |= (1<<SW2);
-}
-
-
-uint8_t sw0_state(void){
-  return (PINSW0 & (1<<SW0))>>SW0;
-}
-
-uint8_t sw1_state(void){
-  return (PINSW1 & (1<<SW1))>>SW1;
-}
-
-uint8_t sw2_state(void){
-  return (PINSW2 & (1<<SW2))>>SW2;
-}
\ No newline at end of file
index e9a153cb836475894562a44797232fa56353c102..6a9fd09c9b9d696e85bb29d82e3eb5adba028ac4 100644 (file)
@@ -19,7 +19,7 @@ F_USB        = $(F_CPU)
 OPTIMIZATION = s\r
 TARGET       = USBtoSerial\r
 SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)\r
-LUFA_PATH    = ../../LUFA\r
+LUFA_PATH    = ../LUFA/LUFA-130303/LUFA\r
 CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/\r
 LD_FLAGS     =\r
 \r
diff --git a/firmware/makefile~ b/firmware/makefile~
deleted file mode 100644 (file)
index b3122e3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#\r
-#             LUFA Library\r
-#     Copyright (C) Dean Camera, 2013.\r
-#\r
-#  dean [at] fourwalledcubicle [dot] com\r
-#           www.lufa-lib.org\r
-#\r
-# --------------------------------------\r
-#         LUFA Project Makefile.\r
-# --------------------------------------\r
-\r
-# Run "make help" for target help.\r
-\r
-MCU          = atmega32u2\r
-ARCH         = AVR8\r
-BOARD        = USBKEY\r
-F_CPU        = 16000000\r
-F_USB        = $(F_CPU)\r
-OPTIMIZATION = s\r
-TARGET       = USBtoSerial\r
-SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)\r
-LUFA_PATH    = ../../LUFA\r
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/\r
-LD_FLAGS     =\r
-\r
-# Default target\r
-all:\r
-\r
-# Include LUFA build script makefiles\r
-include $(LUFA_PATH)/Build/lufa_core.mk\r
-include $(LUFA_PATH)/Build/lufa_sources.mk\r
-include $(LUFA_PATH)/Build/lufa_build.mk\r
-include $(LUFA_PATH)/Build/lufa_cppcheck.mk\r
-include $(LUFA_PATH)/Build/lufa_doxygen.mk\r
-include $(LUFA_PATH)/Build/lufa_dfu.mk\r
-include $(LUFA_PATH)/Build/lufa_hid.mk\r
-include $(LUFA_PATH)/Build/lufa_avrdude.mk\r
-include $(LUFA_PATH)/Build/lufa_atprogram.mk\r
-\r
-.PHONY: all\r
-\r
-program: all\r
-\r
-       dfu-programmer $(MCU) erase && dfu-programmer $(MCU) flash $(TARGET).hex && dfu-programmer $(MCU) start
\ No newline at end of file
index 49c1856125f38461bb777231103d9ac11d100391..e02e6c1cde2448279074eccb2d7ed0f81e6928e2 100644 (file)
@@ -1,29 +1,31 @@
 
-#define X0 2
-#define DDRX0 DDRB
-#define PORTX0 PORTB
-#define PINX0 PINB
 
-#define X1 3
-#define DDRX1 DDRB
-#define PORTX1 PORTB
-#define PINX1 PINB
+
+#define X0 4
+#define DDRX0 DDRC
+#define PORTX0 PORTC
+#define PINX0 PINC
+
+#define X1 5
+#define DDRX1 DDRC
+#define PORTX1 PORTC
+#define PINX1 PINC
 
 #define X2 4
-#define DDRX2 DDRB
-#define PORTX2 PORTB
-#define PINX2 PINB
+#define DDRX2 DDRD
+#define PORTX2 PORTD
+#define PINX2 PIND
 
-#define X3 5
-#define DDRX3 DDRB
-#define PORTX3 PORTB
-#define PINX3 PINB
+#define X3 6
+#define DDRX3 DDRC
+#define PORTX3 PORTC
+#define PINX3 PINC
 
 
 #define Y0 7
-#define DDRY0 DDRB
-#define PORTY0 PORTB
-#define PINY0 PINB
+#define DDRY0 DDRC
+#define PORTY0 PORTC
+#define PINY0 PINC
 
 #define Y1 6
 #define DDRY1 DDRB
 #define PINY1 PINB
 
 #define Y2 7
-#define DDRY2 DDRC
-#define PORTY2 PORTC
-#define PINY2 PINC
-
-#define Y3 6
-#define DDRY3 DDRC
-#define PORTY3 PORTC
-#define PINY3 PINC
+#define DDRY2 DDRB
+#define PORTY2 PORTB
+#define PINY2 PINB
+
+#define Y3 5
+#define DDRY3 DDRB
+#define PORTY3 PORTB
+#define PINY3 PINB
+
+
+#define XEND1 7
+#define DDRXEND1 DDRD
+#define PORTXEND1 PORTD
+#define PINXEND1 PIND
+
+#define XEND2 0
+#define DDRXEND2 DDRB
+#define PORTXEND2 PORTB
+#define PINXEND2 PINB
+
+
+#define YEND1 4
+#define DDRYEND1 DDRB
+#define PORTYEND1 PORTB
+#define PINYEND1 PINB
+
+#define YEND2 3
+#define DDRYEND2 DDRB
+#define PORTYEND2 PORTB
+#define PINYEND2 PINB
+
 
 
 
diff --git a/firmware/pins.h~ b/firmware/pins.h~
deleted file mode 100644 (file)
index a1c5389..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-
-#define X0 2
-#define DDRX0 DDRB
-#define PORTX0 PORTB
-#define PINX0 PINB
-
-#define X1 3
-#define DDRX1 DDRB
-#define PORTX1 PORTB
-#define PINX1 PINB
-
-#define X2 4
-#define DDRX2 DDRB
-#define PORTX2 PORTB
-#define PINX2 PINB
-
-#define X3 5
-#define DDRX3 DDRB
-#define PORTX3 PORTB
-#define PINX3 PINB
-
-
-#define Y0 7
-#define DDRY0 DDRB
-#define PORTY0 PORTB
-#define PINY0 PINB
-
-#define Y1 6
-#define DDRY1 DDRB
-#define PORTY1 PORTB
-#define PINY1 PINB
-
-#define Y2 7
-#define DDRY2 DDRC
-#define PORTY2 PORTC
-#define PINY2 PINC
-
-#define Y3 6
-#define DDRY3 DDRC
-#define PORTY3 PORTC
-#define PINY3 PINC
-
-#define X 0
-#define Y 1
-
diff --git a/firmware/rfm70.c b/firmware/rfm70.c
deleted file mode 100644 (file)
index eeda2f4..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-/*\r
-       Diese Library bassiert auf der Arduino RFM70 Library, ich habe sie lediglich so\r
-       angepasst, dass man sie auf einem AVR und ohne zusätzliche Libs von Arduino\r
-       verwenden kann.\r
-\r
-       Es sind nur die wichtigstens Funktionen implementiert!\r
-       Bei Fragen oder Anregungen:\r
-       Mein Blog: http:://projects.web4clans.com\r
-       Meine Email: daniel.weber@web4clans.com\r
-\r
-*/\r
-\r
-#include "rfm70.h"\r
-///////////////////////////////////////////////////////////////////////////////\r
-// Register initialization values and command macros //\r
-///////////////////////////////////////////////////////////////////////////////\r
\r
-//************ Address definition commands\r
-const uint8_t PROGMEM RFM70_cmd_adrRX0[] = { (0x20|0x0A), 0x34,0x43,0x10,0x10,0x01};\r
-const uint8_t PROGMEM RFM70_cmd_adrTX[]  = { (0x20|0x10), 0x34,0x43,0x10,0x10,0x01};\r
-const uint8_t PROGMEM RFM70_cmd_adrRX1[] = { (0x20|0x0B), 0x35,0x43,0x10,0x10,0x02};\r
\r
-//************ Bank0 register initialization commands\r
- const uint8_t PROGMEM RFM70_bank0Init[][2] = {\r
-  // address data\r
-  { (0x20|0x00), 0x0F }, //Disable CRC ,CRC=1byte, POWER UP, TX\r
-  { (0x20|0x01), 0x3F }, //Enable auto acknowledgement data pipe0-5\r
-  { (0x20|0x02), 0x3F }, //Enable RX Addresses pipe0-5\r
-  { (0x20|0x03), 0x03 }, //RX/TX address field width 5byte\r
-  { (0x20|0x04), 0x08 }, //x = 250 ms = 4000ms, y = 15 tries\r
-  { (0x20|0x05), 0x17 }, //channel = 0x17\r
-  { (0x20|0x06), 0x3F }, //air data rate-2M,out power 5dbm,setup LNA gain high (0dBM)\r
-  { (0x20|0x07), 0x07 }, //\r
-  { (0x20|0x08), 0x00 }, //\r
-  { (0x20|0x09), 0x00 }, //\r
-  { (0x20|0x0C), 0xc3 }, //LSB Addr pipe 2\r
-  { (0x20|0x0D), 0xc4 }, //LSB Addr pipe 3\r
-  { (0x20|0x0E), 0xc5 }, //LSB Addr pipe 4\r
-  { (0x20|0x0F), 0xc6 }, //LSB Addr pipe 5\r
-  { (0x20|0x11), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x12), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x13), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x14), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x15), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x16), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x17), 0x20 }, //Payload len pipe0\r
-  { (0x20|0x1C), 0x3F }, //Enable dynamic payload legth data pipe0-5\r
-  { (0x20|0x1D), 0x07 } //Enables Dynamic Payload Length,Enables Payload with ACK\r
-};\r
\r
-//************ Bank1 register initialization commands\r
- const uint8_t PROGMEM RFM70_bank1Init[][5] = {\r
-  // address data\r
-  { (0x20|0x00), 0x40, 0x4B, 0x01, 0xE2 },\r
-  { (0x20|0x01), 0xC0, 0x4B, 0x00, 0x00 },\r
-  { (0x20|0x02), 0xD0, 0xFC, 0x8C, 0x02 },\r
-  { (0x20|0x03), 0x99, 0x00, 0x39, 0x41 },\r
-  { (0x20|0x04), 0xb9, 0x9E, 0x86, 0x0B }, // b9? f9?\r
-  { (0x20|0x05), 0x24, 0x06, 0x7F, 0xA6 },\r
-  { (0x20|0x06), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x07), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x08), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x09), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x0a), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x0b), 0x00, 0x00, 0x00, 0x00 },\r
-  { (0x20|0x0C), 0x00, 0x12, 0x73, 0x00 },\r
-  { (0x20|0x0D), 0x36, 0xb4, 0x80, 0x00 }\r
-};\r
\r
-//************ Bank1 register 14 initialization commands\r
- const uint8_t PROGMEM RFM70_bank1R0EInit[] = {\r
-  // address Data...\r
-  (0x20|0x0E), 0x41,0x20,0x08,0x04,0x81,0x20,0xCF,0xF7,0xFE,0xFF,0xFF\r
-};\r
-\r
-\r
-//************ other commands: { <command>, <data>, ... }\r
-const uint8_t PROGMEM RFM70_cmd_switch_cfg[] = { 0x50, 0x53 }; // switch Register Bank\r
-const uint8_t PROGMEM RFM70_cmd_flush_rx[] = { 0xe2, 0x00 }; // flush RX FIFO\r
-const uint8_t PROGMEM RFM70_cmd_flush_tx[] = { 0xe1, 0x00 }; // flush TX FIFO\r
-const uint8_t PROGMEM RFM70_cmd_activate[] = { 0x50, 0x73 }; // Activation command\r
-const uint8_t PROGMEM RFM70_cmd_tog1[]={ (0x20|0x04), 0xd9 | 0x06, 0x9e, 0x86, 0x0b }; //assosciated with set1[4]!\r
-const uint8_t PROGMEM RFM70_cmd_tog2[]={ (0x20|0x04), 0xd9 & ~0x06, 0x9e, 0x86, 0x0b}; //assosciated with set1[4]!\r
-\r
-\r
-\r
-void initSPI(uint8_t clk_div)\r
-{\r
-       // set the pin direction to output\r
-       DDR_SPI |= (1<<SCK)|(1<<MOSI)|(1<<CSN);\r
-\r
-       // chip select to high\r
-       PORT_SPI |= (1<<CSN);\r
-       // other to low\r
-       PORT_SPI &=~((1<<MOSI)|(1<<SCK));\r
-       \r
-       // init SPI\r
-       SPCR = (1<<SPE)|(1<<MSTR);\r
-\r
-       // det clock divider\r
-       spiSetClockDivider(clk_div);\r
-\r
-\r
-}\r
-\r
-void initHardware(uint8_t irq)\r
-{\r
-       // set the CE ddr to output\r
-       DDR_SPI |= (1<<CE);\r
-       // and set it to low\r
-       PORT_SPI &=~(1<<CE);\r
-\r
-       if (irq != -1) \r
-       DDRD &=~ (1<<IRQ);\r
-\r
-\r
-}\r
-\r
-void initRegisters(void)\r
-{\r
-       // init bank 0 registers\r
-       selectBank(0);\r
-\r
-       for (int i = 0; i < 20; i++)\r
-       writeRegVal(pgm_read_byte(&RFM70_bank0Init[i][0]), pgm_read_byte(&RFM70_bank0Init[i][1]));\r
-\r
-\r
-       // init address registers in bank 0\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_adrRX0, sizeof(RFM70_cmd_adrRX0));\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_adrRX1, sizeof(RFM70_cmd_adrRX1));\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_adrTX, sizeof(RFM70_cmd_adrTX));\r
-\r
-       // activate Feature register\r
-       if(!readRegVal(RFM70_REG_FEATURE))\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_activate, sizeof(RFM70_cmd_activate));\r
-\r
-       // now set Registers 1D and 1C\r
-       writeRegVal(pgm_read_byte(&RFM70_bank0Init[22][0]), pgm_read_byte(&RFM70_bank0Init[22][1]));\r
-       writeRegVal(pgm_read_byte(&RFM70_bank0Init[21][0]), pgm_read_byte(&RFM70_bank0Init[21][1]));\r
-\r
-       // init bank 1 registers\r
-       selectBank(1);\r
-\r
-       for (int i=0; i < 14; i++)\r
-       writeRegPgmBuf((uint8_t *)RFM70_bank1Init[i], sizeof(RFM70_bank1Init[i]));\r
-\r
-       // set ramp curve\r
-       writeRegPgmBuf((uint8_t *)RFM70_bank1R0EInit, sizeof(RFM70_bank1R0EInit));\r
-\r
-\r
-       // do we have to toggle some bits here like in the example code?\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_tog1, sizeof(RFM70_cmd_tog1));\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_tog2, sizeof(RFM70_cmd_tog2));\r
-\r
-       _delay_ms(RFM70_END_INIT_WAIT_MS);\r
-\r
-       //Check the ChipID\r
-       if (readRegVal(0x08) != 0x63) \r
-       debug(RFM70_DEBUG_WRONG_CHIP_ID);\r
-       else\r
-       //uart_puts("load rfm70 register successful\n");\r
-\r
-       selectBank(0);\r
-       setModeRX();\r
-}\r
-\r
-void Begin(void) \r
-{\r
-  setBegin(-1, RFM77_DEFAULT_SPI_CLOCK_DIV);\r
-}\r
-\r
-\r
-void setBegin(uint8_t irq, uint8_t clk_div) \r
-{\r
-       initHardware(irq);\r
-       initSPI(clk_div);\r
-       _delay_ms(RFM70_BEGIN_INIT_WAIT_MS);\r
-       initRegisters();\r
- }\r
-\r
-\r
-\r
-uint8_t transmitSPI(uint8_t val) \r
-{\r
-  SPDR = val;\r
-  while (!(SPSR & _BV(SPIF)))\r
-    ;\r
-  return SPDR;\r
-}\r
-\r
-void selectBank(uint8_t bank) \r
-{\r
-       uint8_t tmp = readRegVal(0x07) & 0x80;\r
-       if(bank) \r
-       {\r
-       if(!tmp)\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_switch_cfg, sizeof(RFM70_cmd_switch_cfg));\r
-       } \r
-       else \r
-       {\r
-       if(tmp)\r
-               writeRegPgmBuf((uint8_t *)RFM70_cmd_switch_cfg, sizeof(RFM70_cmd_switch_cfg));\r
-       }\r
-}\r
-\r
-void setMode(uint8_t mode) \r
-{\r
-  if (mode == 1)\r
-    setModeRX();\r
-  else\r
-    setModeTX();\r
-}\r
-\r
-\r
-void setModeRX(void)\r
-{\r
-  uint8_t val;\r
-\r
-  writeRegPgmBuf((uint8_t *)RFM70_cmd_flush_rx, sizeof(RFM70_cmd_flush_rx)); // Flush RX FIFO\r
-  val = readRegVal(RFM70_REG_STATUS); // Read Status\r
-  writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_STATUS, val); // Reset IRQ bits\r
-  PORT_SPI &=~ (1<<CE); // RFM chip disable\r
-  // set PRIM_RX bit to 1\r
-  val=readRegVal(RFM70_REG_CONFIG);\r
-  val |= RFM70_PIN_PRIM_RX;\r
-  writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_CONFIG, val);\r
-  PORT_SPI |= (1<<CE); // RFM chip enable\r
-}\r
-\r
-\r
-void setModeTX(void)\r
-{\r
-       uint8_t val;\r
-\r
-       writeRegPgmBuf((uint8_t *)RFM70_cmd_flush_tx, sizeof(RFM70_cmd_flush_tx)); // Flush TX FIFO\r
-       PORT_SPI &=~ (1<<CE); // disable rfm70\r
-       // set PRIM_RX bit to 0\r
-       val=readRegVal(RFM70_REG_CONFIG);\r
-       val &= ~RFM70_PIN_PRIM_RX;\r
-       writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_CONFIG, val);\r
-       PORT_SPI |= (1<<CE); // RFM chip enable\r
-}\r
-\r
-uint8_t getMode(void) \r
-{\r
-  return readRegVal(RFM70_REG_CONFIG) & RFM70_PIN_PRIM_RX;\r
-}\r
-\r
-\r
-void setChannel(uint8_t cnum)\r
-{\r
-  writeRegVal( RFM70_CMD_WRITE_REG | RFM70_REG_RF_CH, cnum);\r
-}\r
-\r
-uint8_t getChannel(void) \r
-{\r
-  return readRegVal(RFM70_REG_RF_CH);\r
-}\r
-\r
-\r
-uint8_t configRxPipe(uint8_t pipe_nr, uint8_t * adr, uint8_t plLen, uint8_t en_aa) \r
-{\r
-\r
-       uint8_t tmp;\r
-       uint8_t nr = pipe_nr -1;\r
-  \r
-       if(plLen > 32 || nr > 5 || en_aa > 1)\r
-       return 0;\r
-\r
-       // write address\r
-       if(nr<2)      // full length for rx pipe 0 an 1\r
-       writeRegCmdBuf(RFM70_CMD_WRITE_REG | (RFM70_REG_RX_ADDR_P0 + nr), adr, sizeof(adr));\r
-       else // only LSB for pipes 2..5\r
-       writeRegVal(RFM70_CMD_WRITE_REG | (RFM70_REG_RX_ADDR_P0 + nr), adr[0]); //ODO:check this\r
-  \r
-       // static\r
-       if (plLen) {\r
-       // set payload len\r
-       writeRegVal(RFM70_CMD_WRITE_REG | (RFM70_REG_RX_PW_P0 + nr), plLen);\r
-               // set EN_AA bit\r
-        tmp = readRegVal(RFM70_REG_EN_AA);\r
-               if (en_aa)\r
-               tmp |= 1 << nr;\r
-               else\r
-                tmp &= ~(1 << nr);\r
-        writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_EN_AA, tmp);\r
-        // clear DPL bit\r
-        tmp = readRegVal(RFM70_REG_DYNPD);\r
-        tmp &= ~(1 << nr);\r
-        writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_DYNPD, tmp);        \r
-        // set Enable pipe bit\r
-        enableRxPipe(nr);\r
-       }\r
-       // dynamic\r
-       else \r
-       {\r
-               // set payload len to default\r
-               writeRegVal(RFM70_CMD_WRITE_REG | (RFM70_REG_RX_PW_P0 + nr), 0x20);\r
-               // set EN_AA bit\r
-               tmp = readRegVal(RFM70_REG_EN_AA);\r
-               tmp |= 1 << nr;\r
-               writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_EN_AA, tmp);\r
-               // set DPL bit\r
-               tmp = readRegVal(RFM70_REG_DYNPD);\r
-               tmp |= 1 << nr;\r
-               writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_DYNPD, tmp);\r
-               // set Enable pipe bit\r
-               enableRxPipe(nr);\r
-       }\r
-  return 1;\r
-}\r
-\r
-void enableRxPipe(uint8_t pipe_nr) \r
-{\r
-       uint8_t nr = pipe_nr - 1;\r
-       if (nr > 5) return;\r
-       uint8_t tmp;\r
-       // set Enable pipe bit\r
-       tmp = readRegVal(RFM70_REG_EN_RXADDR);\r
-       tmp |= 1 << nr;\r
-       writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_EN_RXADDR, tmp);\r
-}\r
-\r
-void disableRxPipe(uint8_t pipe_nr) \r
-{\r
-  uint8_t nr = pipe_nr - 1;\r
-  if (nr > 5) return;\r
-  uint8_t tmp;\r
-  // set Enable pipe bit\r
-  tmp = readRegVal(RFM70_REG_EN_RXADDR);\r
-  tmp &= ~(1 << nr);\r
-  writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_EN_RXADDR, tmp);\r
-\r
-}\r
-\r
-void configTxPipe(uint8_t * adr, uint8_t pltype) \r
-{\r
-  // write TX address\r
-  writeRegCmdBuf(RFM70_CMD_WRITE_REG | RFM70_REG_TX_ADDR, adr, sizeof(adr));\r
-  // write RX0 address\r
-  writeRegCmdBuf(RFM70_CMD_WRITE_REG | RFM70_REG_RX_ADDR_P0, adr, sizeof(adr));\r
-  // set static or dynamic payload\r
-  uint8_t tmp;\r
-  tmp = readRegVal(RFM70_REG_DYNPD);\r
-  if(pltype == TX_DPL) // dynamic\r
-        tmp |= 1;\r
-  else  \r
-    tmp &= ~(1 << 0);\r
-  writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_DYNPD, tmp);\r
-}\r
-\r
-uint8_t sendPayload(uint8_t * payload, uint8_t len, uint8_t toAck)     // choose 0=nAck, 1=AckRequest\r
-{\r
-\r
-       // check TX_FIFO\r
-       uint8_t status;\r
-\r
-       status = readRegVal(RFM70_REG_FIFO_STATUS); \r
-\r
-       if (status & RFM70_FIFO_STATUS_TX_FULL) \r
-       {\r
-       debug(RFM70_DEBUG_FIFO_FULL);\r
-       return 0;\r
-       }\r
-\r
-\r
-       // send payload\r
-       PORT_SPI &=~ (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-\r
-       if(toAck == -1)\r
-       transmitSPI(RFM70_CMD_W_ACK_PAYLOAD);\r
-       else if (toAck == 0)\r
-       transmitSPI(RFM70_CMD_W_TX_PAYLOAD_NOACK);\r
-       else\r
-       transmitSPI(RFM70_CMD_WR_TX_PLOAD);\r
-\r
-       \r
-       while(len--) \r
-       {\r
-       transmitSPI(*(payload++));\r
-               //uart_putc(*payload);\r
-               //uart_puts(", ");\r
-       }\r
-       PORT_SPI |= (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-       //uart_puts("\n");\r
-       //PORTA ^= (1<<PA4);\r
-       return 1;\r
-}\r
-\r
-uint8_t receivePayload(uint8_t *payload)\r
-{\r
-       uint8_t len;\r
-       // check RX_FIFO\r
-       uint8_t status;\r
-       status = readRegVal(RFM70_REG_STATUS);\r
-       if (status & RFM70_IRQ_STATUS_RX_DR) { // RX_DR\r
-               //PORTA ^= (1<<PA4);\r
-       //while(1) {\r
-       uint8_t fifo_sta;\r
-       len = readRegVal(RFM70_CMD_RX_PL_WID); // Payload width\r
-       readRegBuf(RFM70_CMD_RD_RX_PLOAD, payload, len);\r
-       fifo_sta = readRegVal(RFM70_REG_FIFO_STATUS);\r
-       //if (fifo_sta & RFM70_FIFO_STATUS_RX_EMPTY) break; // read until RX_FIFO empty\r
-       //}\r
-               \r
-        if (fifo_sta & RFM70_FIFO_STATUS_RX_EMPTY) {\r
-               status|= 0x40 & 0xCF; // clear status bit rx_dr\r
-               writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_STATUS, status); \r
-        }\r
-       return len;\r
-       }\r
-       else\r
-       {\r
-               \r
-       return 0;\r
-       }\r
-}\r
-\r
-\r
-void flushTxFIFO() \r
-{\r
-  writeRegPgmBuf((uint8_t *)RFM70_cmd_flush_tx, sizeof(RFM70_cmd_flush_tx)); // Flush TX FIFO\r
-}\r
-\r
-void flushRxFIFO() \r
-{\r
-  writeRegPgmBuf((uint8_t *)RFM70_cmd_flush_rx, sizeof(RFM70_cmd_flush_rx)); // Flush RX FIFO\r
-}\r
-\r
-\r
-\r
-\r
-\r
-uint8_t readRegVal(uint8_t cmd) \r
-{\r
-       uint8_t res;\r
-       PORT_SPI &=~ (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-\r
-       transmitSPI(cmd);\r
-\r
-       res=transmitSPI(0);\r
-       PORT_SPI |= (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-       return res;\r
-}\r
-\r
-uint8_t writeRegVal(uint8_t cmd, uint8_t val) \r
-{\r
-  PORT_SPI &=~ (1<<CSN);\r
-  _delay_ms(RFM70_CS_DELAY);\r
-  transmitSPI(cmd);\r
-  transmitSPI(val);\r
-  PORT_SPI |= (1<<CSN);\r
-  _delay_ms(RFM70_CS_DELAY);\r
-  return 1;\r
-}\r
-\r
-void readRegBuf(uint8_t reg, uint8_t * buf, uint8_t len) \r
-{\r
-       uint8_t status, byte_ctr;\r
-       PORT_SPI &=~ (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-       status = transmitSPI(reg); // Select register to write, and read status UINT8\r
-       for(byte_ctr = 0; byte_ctr < len; byte_ctr++)\r
-               buf[byte_ctr] = transmitSPI(0); // Perform SPI_RW to read UINT8 from RFM70\r
-       PORT_SPI |= (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-}\r
-\r
-\r
-\r
-uint8_t writeRegPgmBuf(uint8_t * cmdbuf, uint8_t len) \r
-{\r
-  PORT_SPI &=~ (1<<CSN);\r
-  _delay_ms(RFM70_CS_DELAY);\r
-  while(len--) {\r
-    transmitSPI(pgm_read_byte(cmdbuf++));\r
-  }\r
-  PORT_SPI |= (1<<CSN);\r
-  _delay_ms(RFM70_CS_DELAY);\r
-  return 1;\r
-}\r
-\r
-uint8_t writeRegCmdBuf(uint8_t cmd, uint8_t * buf, uint8_t len) \r
-{\r
-       PORT_SPI &=~ (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-       transmitSPI(cmd);\r
-       while(len--) \r
-       {\r
-       transmitSPI(*(buf++));\r
-       }\r
-       PORT_SPI |= (1<<CSN);\r
-       _delay_ms(RFM70_CS_DELAY);\r
-       return 1;\r
-}\r
-\r
-void configRfPower(uint8_t pwr) \r
-{\r
-  if (pwr > 3) return;\r
-  uint8_t tmp = readRegVal(RFM70_REG_RF_SETUP);\r
-  tmp &= 0xF9;\r
-  tmp |= pwr << 1;\r
-  writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_RF_SETUP, tmp);\r
-}\r
-\r
-\r
-\r
-\r
-void debug(uint8_t token)\r
-{\r
-       switch(token)\r
-       {\r
-               case 0x01:\r
-               //uart_puts("rfm error: the reseive chip id is invalid!\n");\r
-               break;\r
-\r
-               case 0x02:\r
-               //uart_puts("rfm error: the fifo is full!\n");\r
-               break;\r
-       }\r
-}\r
-\r
-void spiSetClockDivider(uint8_t rate) \r
-{\r
-  SPCR = (SPCR & ~SPI_CLOCK_MASK) | (rate & SPI_CLOCK_MASK);\r
-  SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((rate >> 2) & SPI_2XCLOCK_MASK);\r
-}\r
-\r
-\r
diff --git a/firmware/rfm70.h b/firmware/rfm70.h
deleted file mode 100644 (file)
index 5e76657..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*\r
-       Diese Library bassiert auf der Arduino RFM70 Library, ich habe sie lediglich so\r
-       angepasst, dass man sie auf einem AVR und ohne zusätzliche Libs von Arduino\r
-       verwenden kann.\r
-\r
-       Es sind nur die wichtigstens Funktionen implementiert!\r
-       Bei Fragen oder Anregungen:\r
-       Mein Blog: http:://projects.web4clans.com\r
-       Meine Email: daniel.weber@web4clans.com\r
-\r
-*/\r
-\r
-#include <inttypes.h>\r
-#include <avr/io.h>\r
-#include <avr/interrupt.h>\r
-#include <util/delay.h>\r
-#include <avr/pgmspace.h>\r
-\r
-\r
-//************************RFM function parameter constants********************************//\r
-#define WITH_ACK     0x01 // parameter for sendPayload(..): send with ack expectation\r
-#define NO_ACK       0x00 // parameter for sendPayload(..): send without ack expectation\r
-#define MODE_PTX     0x00 // parameter for setMode(mode): set to transmitter\r
-#define MODE_PRX     0x01 // parameter for setMode(mode): set to receiver\r
-#define EN_AA        0x01 // parameter for configRxPipe(..): enable pipe auto ack\r
-#define NO_AA        0x00 // parameter for configRxPipe(..): disable pipe auto ack\r
-#define TX_DPL       0x01 // parameter for configTxPipe(..): enable dynamic payload for PTX\r
-#define TX_SPL       0x00 // parameter for configTxPipe(..): enable static payload for PTX\r
-#define CRC0         0x00 // parameter for configCRC(crc): disable CRC\r
-#define CRC1         0x01 // parameter for configCRC(crc): 1 byte CRC\r
-#define CRC2         0x02 // parameter for configCRC(crc): 2 byte CRC\r
-#define MBPS1        0x01 // parameter for configSpeed(speed): 1Mbps\r
-#define MBPS2        0x02 // parameter for configSpeed(speed): 2Mbps\r
-#define DBMM10       0x00 // parameter for confRfPwr(pwr): -10 dBm\r
-#define DBMM5        0x01 // parameter for confRfPwr(pwr): -5 dBm\r
-#define DBM0         0x02 // parameter for confRfPwr(pwr): 0 dBm\r
-#define DBM5         0x03 // parameter for confRfPwr(pwr): +5 dBm\r
-#define ADR_WIDTH3   0x03 // parameter for confAdrWidth(width): 3 byte\r
-#define ADR_WIDTH4   0x03 // parameter for confAdrWidth(width): 4 byte\r
-#define ADR_WIDTH5   0x03 // parameter for confAdrWidth(width): 5 byte\r
-#define PWR_OFF      0x00 // parameter for setPower(pwr): off\r
-#define PWR_ON       0x01 // parameter for setPower(pwr): on\r
-\r
-\r
-//************************RFM Definitions************************************************//\r
-#define RFM70_MAX_PACKET_LEN 32// max value is 32\r
-#define RFM70_BEGIN_INIT_WAIT_MS 3000 // pause before Init Registers\r
-#define RFM70_END_INIT_WAIT_MS 100 // pause after init registers\r
-#define RFM70_CS_DELAY 0 // wait ms after CS pin state change default 0\r
-\r
-//************************RFM COMMAND and REGISTER****************************************//\r
-// SPI(RFM70) commands\r
-#define RFM70_CMD_READ_REG 0x00 // Define read command to register\r
-#define RFM70_CMD_WRITE_REG 0x20 // Define write command to register\r
-#define RFM70_CMD_RD_RX_PLOAD 0x61 // Define RX payload command\r
-#define RFM70_CMD_WR_TX_PLOAD 0xA0 // Define TX payload command\r
-#define RFM70_CMD_FLUSH_TX 0xE1 // Define flush TX register command\r
-#define RFM70_CMD_FLUSH_RX 0xE2 // Define flush RX register command\r
-#define RFM70_CMD_REUSE_TX_PL 0xE3 // Define reuse TX payload register command\r
-#define RFM70_CMD_W_TX_PAYLOAD_NOACK 0xb0 // Define TX payload NOACK command\r
-#define RFM70_CMD_W_ACK_PAYLOAD 0xa8 // Define Write ack command\r
-#define RFM70_CMD_ACTIVATE 0x50 // Define feature activation command\r
-#define RFM70_CMD_RX_PL_WID 0x60 // Define received payload width command\r
-#define RFM70_CMD_NOP_NOP 0xFF // Define No Operation, might be used to read status register\r
-\r
-// SPI(RFM70) registers(addresses)\r
-#define RFM70_REG_CONFIG 0x00 // 'Config' register address\r
-#define RFM70_REG_EN_AA 0x01 // 'Enable Auto Acknowledgment' register address\r
-#define RFM70_REG_EN_RXADDR 0x02 // 'Enabled RX addresses' register address\r
-#define RFM70_REG_SETUP_AW 0x03 // 'Setup address width' register address\r
-#define RFM70_REG_SETUP_RETR 0x04 // 'Setup Auto. Retrans' register address\r
-#define RFM70_REG_RF_CH 0x05 // 'RF channel' register address\r
-#define RFM70_REG_RF_SETUP 0x06 // 'RF setup' register address\r
-#define RFM70_REG_STATUS 0x07 // 'Status' register address\r
-#define RFM70_REG_OBSERVE_TX 0x08 // 'Observe TX' register address\r
-#define RFM70_REG_CD 0x09 // 'Carrier Detect' register address\r
-#define RFM70_REG_RX_ADDR_P0 0x0A // 'RX address pipe0' register address\r
-#define RFM70_REG_RX_ADDR_P1 0x0B // 'RX address pipe1' register address\r
-#define RFM70_REG_RX_ADDR_P2 0x0C // 'RX address pipe2' register address\r
-#define RFM70_REG_RX_ADDR_P3 0x0D // 'RX address pipe3' register address\r
-#define RFM70_REG_RX_ADDR_P4 0x0E // 'RX address pipe4' register address\r
-#define RFM70_REG_RX_ADDR_P5 0x0F // 'RX address pipe5' register address\r
-#define RFM70_REG_TX_ADDR 0x10 // 'TX address' register address\r
-#define RFM70_REG_RX_PW_P0 0x11 // 'RX payload width, pipe0' register address\r
-#define RFM70_REG_RX_PW_P1 0x12 // 'RX payload width, pipe1' register address\r
-#define RFM70_REG_RX_PW_P2 0x13 // 'RX payload width, pipe2' register address\r
-#define RFM70_REG_RX_PW_P3 0x14 // 'RX payload width, pipe3' register address\r
-#define RFM70_REG_RX_PW_P4 0x15 // 'RX payload width, pipe4' register address\r
-#define RFM70_REG_RX_PW_P5 0x16 // 'RX payload width, pipe5' register address\r
-#define RFM70_REG_FIFO_STATUS 0x17 // 'FIFO Status Register' register address\r
-#define RFM70_REG_DYNPD 0x1c // 'Enable dynamic payload length' register address\r
-#define RFM70_REG_FEATURE 0x1d // 'Feature' register address\r
-\r
-//************************RFM Debug Tokens******************************************//\r
-#define RFM70_DEBUG_WRONG_CHIP_ID 0x01\r
-#define RFM70_DEBUG_FIFO_FULL 0x02\r
-\r
-//************************RFM SPI Constants****************************************//\r
-#define RFM77_SPI_CLOCK_DIV4 0x00\r
-#define RFM77_SPI_CLOCK_DIV16 0x01\r
-//#define RFM77_SPI_CLOCK_DIV64 0x02\r
-#define RFM77_SPI_CLOCK_DIV128 0x03\r
-#define RFM77_SPI_CLOCK_DIV2 0x04\r
-#define RFM77_SPI_CLOCK_DIV8 0x05\r
-#define RFM77_SPI_CLOCK_DIV32 0x06\r
-#define RFM77_SPI_CLOCK_DIV64 0x07\r
-#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR\r
-#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR\r
-\r
-#define RFM77_DEFAULT_SPI_CLOCK_DIV RFM77_SPI_CLOCK_DIV2\r
-\r
-\r
-//interrupt status\r
-#define RFM70_IRQ_STATUS_RX_DR 0x40 // Status bit RX_DR IRQ\r
-#define RFM70_IRQ_STATUS_TX_DS 0x20 // Status bit TX_DS IRQ\r
-#define RFM70_IRQ_STATUS_MAX_RT 0x10 // Status bit MAX_RT IRQ\r
-\r
-#define RFM70_IRQ_STATUS_TX_FULL 0x01 \r
-\r
-\r
-#define RFM70_PIN_PRIM_RX 0x01\r
-#define RFM70_PIN_POWER 0x02\r
-\r
-//FIFO_STATUS\r
-#define RFM70_FIFO_STATUS_TX_REUSE 0x40\r
-#define RFM70_FIFO_STATUS_TX_FULL 0x20\r
-#define RFM70_FIFO_STATUS_TX_EMPTY 0x10\r
-\r
-#define RFM70_FIFO_STATUS_RX_FULL 0x02\r
-#define RFM70_FIFO_STATUS_RX_EMPTY 0x01\r
-\r
-// PIN SETUP\r
-\r
-#define DDR_SPI DDRB\r
-#define PORT_SPI PORTB\r
-#define CE   PB4\r
-#define CSN  PB0\r
-#define SCK  PB1\r
-#define MISO PB3\r
-#define MOSI PB2\r
-#define IRQ  PB5\r
-\r
-void initSPI(uint8_t clk_div);\r
-void initHardware(uint8_t irq);\r
-void initRegisters(void);\r
-uint8_t transmitSPI(uint8_t val);\r
-uint8_t readRegVal(uint8_t cmd);\r
-uint8_t writeRegVal(uint8_t cmd, uint8_t val);\r
-uint8_t writeRegPgmBuf(uint8_t * cmdbuf, uint8_t len);\r
-void readRegBuf(uint8_t reg, uint8_t * buf, uint8_t len);\r
-void selectBank(uint8_t bank);\r
-void setModeTX(void);\r
-void setModeRX(void);\r
-void setMode(uint8_t mode);\r
-uint8_t getMode(void);\r
-void setChannel(uint8_t cnum);\r
-uint8_t getChannel(void);\r
-uint8_t configRxPipe(uint8_t pipe_nr, uint8_t * adr, uint8_t plLen, uint8_t en_aa);\r
-void enableRxPipe(uint8_t pipe_nr);\r
-void debug(uint8_t token);\r
-void setModeRX(void);\r
-void spiSetClockDivider(uint8_t rate);\r
-void setBegin(uint8_t irq, uint8_t clk_div);\r
-void Begin(void);\r
-uint8_t writeRegCmdBuf(uint8_t cmd, uint8_t * buf, uint8_t len);\r
-void disableRxPipe(uint8_t pipe_nr);\r
-void configTxPipe(uint8_t * adr, uint8_t pltype);\r
-void flushTxFIFO();\r
-void flushRxFIFO();\r
-uint8_t receivePayload(uint8_t *payload);\r
-uint8_t sendPayload(uint8_t * payload, uint8_t len, uint8_t toAck);\r
-void configRfPower(uint8_t pwr);\r