From c4b89e4632fa7765aa94d50b5ac80ee9b8daf0c0 Mon Sep 17 00:00:00 2001 From: Jonathan Vetter Date: Sat, 24 Jul 2021 17:55:13 +0200 Subject: [PATCH 1/4] Update lufa to version 170418 --- avr/bootloaders/HoodLoader2/makefile | 2 +- .../HID_EEPROM_Loader/HID_EEPROM_Loader.c | 61 -- .../LUFA/Build/HID_EEPROM_Loader/makefile | 42 - .../LUFA/Build/lufa_atprogram.mk | 103 -- .../LUFA/Build/lufa_avrdude.mk | 86 -- .../LUFA/Build/lufa_cppcheck.mk | 107 -- .../lufa-LUFA-140928/LUFA/Build/lufa_dfu.mk | 95 -- .../LUFA/Build/lufa_doxygen.mk | 100 -- .../lufa-LUFA-140928/LUFA/Build/lufa_hid.mk | 96 -- .../LUFA/CodeTemplates/DeviceTemplate/asf.xml | 55 - .../LUFA/CodeTemplates/HostTemplate/asf.xml | 41 - .../LUFA/DoxygenPages/BuildSystem.txt | 975 ------------------ .../LUFA/DoxygenPages/ExportingLibrary.txt | 112 -- .../AS5_AS6_Import/AS5_AS6_Import_Step1.png | Bin 98201 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step2.png | Bin 100532 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step3.png | Bin 32987 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step4.png | Bin 161824 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step5_1.png | Bin 43666 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step5_2.png | Bin 28918 -> 0 bytes .../AS5_AS6_Import/AS5_AS6_Import_Step5_3.png | Bin 23561 -> 0 bytes .../HV1/helpcontentsetup.msha | 27 - .../HV1/lufa_docbook_transform.xslt | 808 --------------- .../HV1/lufa_helpcontentsetup_transform.xslt | 43 - .../HV1/lufa_hv1_transform.xslt | 45 - .../HV1/lufa_studio_help_styling.css | 53 - .../LUFA/StudioIntegration/VSIX/LUFA.dll | Bin 749056 -> 0 bytes .../LUFA/StudioIntegration/VSIX/LUFA.pkgdef | Bin 2242 -> 0 bytes .../VSIX/[Content_Types].xml | 13 - .../StudioIntegration/VSIX/asf-manifest.xml | 18 - .../VSIX/extension.vsixmanifest | 33 - .../StudioIntegration/VSIX/generate_caches.py | 38 - .../VSIX/lufa_asfmanifest_transform.xslt | 36 - .../VSIX/lufa_vsmanifest_transform.xslt | 33 - .../XDK/lufa_extension_transform.xslt | 68 -- .../XDK/lufa_filelist_transform.xslt | 35 - .../XDK/lufa_indent_transform.xslt | 23 - .../XDK/lufa_module_transform.xslt | 66 -- .../LUFA/StudioIntegration/lufa.xml | 96 -- .../LUFA/StudioIntegration/lufa_common.xml | 34 - .../StudioIntegration/lufa_drivers_board.xml | 114 -- .../lufa_drivers_board_names.xml | 853 --------------- .../StudioIntegration/lufa_drivers_misc.xml | 57 - .../lufa_drivers_peripheral.xml | 198 ---- .../StudioIntegration/lufa_drivers_usb.xml | 32 - .../lufa_drivers_usb_class.xml | 32 - .../lufa_drivers_usb_class_android.xml | 54 - .../lufa_drivers_usb_class_audio.xml | 109 -- .../lufa_drivers_usb_class_cdc.xml | 99 -- .../lufa_drivers_usb_class_hid.xml | 99 -- .../lufa_drivers_usb_class_midi.xml | 99 -- .../lufa_drivers_usb_class_ms.xml | 99 -- .../lufa_drivers_usb_class_printer.xml | 99 -- .../lufa_drivers_usb_class_rndis.xml | 99 -- .../lufa_drivers_usb_class_si.xml | 56 - .../lufa_drivers_usb_core.xml | 85 -- .../lufa_drivers_usb_core_avr8.xml | 43 - .../lufa_drivers_usb_core_uc3.xml | 42 - .../lufa_drivers_usb_core_xmega.xml | 36 - .../LUFA/StudioIntegration/lufa_platform.xml | 60 -- .../StudioIntegration/lufa_platform_uc3.xml | 26 - .../StudioIntegration/lufa_platform_xmega.xml | 23 - .../LUFA/StudioIntegration/lufa_toolchain.xml | 43 - .../LUFA/StudioIntegration/makefile | 140 --- .../lufa-LUFA-140928/LUFA/makefile | 53 - .../LUFA/Build/DMBS/.gitignore | 9 + .../HID_EEPROM_Loader/HID_EEPROM_Loader.c | 39 + .../DMBS/DMBS/HID_EEPROM_Loader/makefile | 39 + .../LUFA/Build/DMBS/DMBS/License.txt | 32 + .../LUFA/Build/DMBS/DMBS/ModulesOverview.md | 38 + .../Build/DMBS/DMBS/WritingYourOwnModules.md | 93 ++ .../LUFA/Build/DMBS/DMBS/atprogram.md | 119 +++ .../LUFA/Build/DMBS/DMBS/atprogram.mk | 66 ++ .../LUFA/Build/DMBS/DMBS/avrdude.md | 190 ++++ .../LUFA/Build/DMBS/DMBS/avrdude.mk | 99 ++ .../LUFA/Build/DMBS/DMBS/core.md | 136 +++ .../LUFA/Build/DMBS/DMBS/core.mk} | 139 ++- .../LUFA/Build/DMBS/DMBS/cppcheck.md | 134 +++ .../LUFA/Build/DMBS/DMBS/cppcheck.mk | 64 ++ .../LUFA/Build/DMBS/DMBS/dfu.md | 122 +++ .../LUFA/Build/DMBS/DMBS/dfu.mk | 60 ++ .../LUFA/Build/DMBS/DMBS/doxygen.md | 118 +++ .../LUFA/Build/DMBS/DMBS/doxygen.mk | 58 ++ .../LUFA/Build/DMBS/DMBS/gcc.md | 224 ++++ .../LUFA/Build/DMBS/DMBS/gcc.mk} | 179 +--- .../LUFA/Build/DMBS/DMBS/hid.md | 129 +++ .../LUFA/Build/DMBS/DMBS/hid.mk | 53 + .../LUFA/Build/DMBS/Readme.md | 123 +++ .../LUFA/Build/DMBS/Template/Template.c | 12 + .../Template/lib/TEMPLATE_LIB/TEMPLATE_LIB.mk | 50 + .../lib/TEMPLATE_LIB/include/template_lib.h | 24 + .../lib/TEMPLATE_LIB/src/template_lib.c | 10 + .../TEMPLATE_LIB/src/template_lib_private.h | 14 + .../LUFA/Build/DMBS/Template/makefile | 36 + .../LUFA/Build/LUFA/lufa-gcc.mk | 48 + .../LUFA/Build/LUFA/lufa-sources.mk} | 69 +- .../LUFA/Build/lufa_atprogram.mk | 10 + .../LUFA/Build/lufa_avrdude.mk | 10 + .../lufa-LUFA-170418/LUFA/Build/lufa_build.mk | 12 + .../lufa-LUFA-170418/LUFA/Build/lufa_core.mk | 10 + .../LUFA/Build/lufa_cppcheck.mk | 10 + .../lufa-LUFA-170418/LUFA/Build/lufa_dfu.mk | 10 + .../LUFA/Build/lufa_doxygen.mk | 10 + .../lufa-LUFA-170418/LUFA/Build/lufa_hid.mk | 10 + .../LUFA/Build/lufa_sources.mk | 10 + .../DeviceTemplate/Descriptors.c | 6 +- .../DeviceTemplate/Descriptors.h | 4 +- .../DeviceTemplate/DeviceApplication.c | 4 +- .../DeviceTemplate/DeviceApplication.h | 4 +- .../LUFA/CodeTemplates/DriverStubs/Board.h | 7 +- .../LUFA/CodeTemplates/DriverStubs/Buttons.h | 4 +- .../CodeTemplates/DriverStubs/Dataflash.h | 4 +- .../LUFA/CodeTemplates/DriverStubs/Joystick.h | 4 +- .../LUFA/CodeTemplates/DriverStubs/LEDs.h | 4 +- .../HostTemplate/HostApplication.c | 6 +- .../HostTemplate/HostApplication.h | 4 +- .../LUFA/CodeTemplates/LUFAConfig.h | 4 +- .../CodeTemplates/WindowsINF/LUFA CDC-ACM.inf | 0 .../CodeTemplates/WindowsINF/LUFA RNDIS.inf | 0 .../LUFA/CodeTemplates/makefile_template | 27 +- .../LUFA/Common/ArchitectureSpecific.h | 4 +- .../LUFA/Common/Architectures.h | 4 +- .../LUFA/Common/Attributes.h | 4 +- .../LUFA/Common/BoardTypes.h | 10 +- .../LUFA/Common/Common.h | 5 +- .../LUFA/Common/CompilerSpecific.h | 4 +- .../LUFA/Common/Endianness.h | 16 +- .../LUFA/DoxygenPages/BuildSystem.txt | 281 +++++ .../BuildingLinkableLibraries.txt | 0 .../LUFA/DoxygenPages/ChangeLog.txt | 96 ++ .../LUFA/DoxygenPages/CompileTimeTokens.txt | 4 +- .../LUFA/DoxygenPages/CompilingApps.txt | 0 .../LUFA/DoxygenPages/ConfiguringApps.txt | 0 .../LUFA/DoxygenPages/DevelopingWithLUFA.txt | 1 - .../LUFA/DoxygenPages/DeviceSupport.txt | 2 + .../LUFA/DoxygenPages/DirectorySummaries.txt | 0 .../LUFA/DoxygenPages/Donating.txt | 12 +- .../LUFA/DoxygenPages/FutureChanges.txt | 0 .../LUFA/DoxygenPages/GettingStarted.txt | 0 .../LUFA/DoxygenPages/Groups.txt | 0 .../LUFA/DoxygenPages/Images/Author.jpg | Bin .../LUFA/DoxygenPages/Images/LUFA.png | Bin .../LUFA/DoxygenPages/Images/LUFA_thumb.png | Bin .../LUFA/DoxygenPages/KnownIssues.txt | 93 ++ .../LUFA/DoxygenPages/LUFAPoweredProjects.txt | 8 +- .../LUFA/DoxygenPages/LibraryResources.txt | 0 .../LUFA/DoxygenPages/LicenseInfo.txt | 0 .../LUFA/DoxygenPages/MainPage.txt | 0 .../DoxygenPages/MigrationInformation.txt | 14 + .../LUFA/DoxygenPages/OSDrivers.txt | 0 .../LUFA/DoxygenPages/ProgrammingApps.txt | 3 - .../DoxygenPages/SoftwareBootloaderJump.txt | 2 +- .../LUFA/DoxygenPages/Style/Footer.htm | 0 .../LUFA/DoxygenPages/Style/Style.css | 0 .../LUFA/DoxygenPages/VIDAndPIDValues.txt | 2 +- .../LUFA/DoxygenPages/WritingBoardDrivers.txt | 0 .../Drivers/Board/AVR8/ADAFRUITU4/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h | 4 +- .../Drivers/Board/AVR8/ATAVRUSBRF01/Board.h | 4 +- .../Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h | 4 +- .../Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/BENITO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/BENITO/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/BENITO/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/BUI/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/BUI/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h | 4 +- .../Drivers/Board/AVR8/BUMBLEB/Joystick.h | 4 +- .../LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/CULV3/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/CULV3/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/CULV3/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/DUCE/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/DUCE/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/EVK527/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/EVK527/Buttons.h | 4 +- .../Drivers/Board/AVR8/EVK527/Dataflash.h | 4 +- .../LUFA/Drivers/Board/AVR8/EVK527/Joystick.h | 4 +- .../LUFA/Drivers/Board/AVR8/EVK527/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/JMDBU2/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/LEONARDO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h | 13 +- .../LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/MICRO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/MICRO/LEDs.h | 4 +- .../Drivers/Board/AVR8/MICROPENDOUS/Board.h | 4 +- .../Drivers/Board/AVR8/MICROPENDOUS/Buttons.h | 4 +- .../Drivers/Board/AVR8/MICROPENDOUS/LEDs.h | 4 +- .../Drivers/Board/AVR8/MICROSIN162/Board.h | 4 +- .../Drivers/Board/AVR8/MICROSIN162/Buttons.h | 4 +- .../Drivers/Board/AVR8/MICROSIN162/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/MINIMUS/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/MULTIO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h | 4 +- .../Drivers/Board/AVR8/OLIMEX162/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h | 4 +- .../Drivers/Board/AVR8/OLIMEX32U4/Board.h | 4 +- .../Drivers/Board/AVR8/OLIMEX32U4/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h | 4 +- .../Drivers/Board/AVR8/OLIMEXISPMK2/Board.h | 4 +- .../Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h | 4 +- .../Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h | 4 +- .../Drivers/Board/AVR8/OLIMEXT32U4/Board.h | 4 +- .../Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h | 4 +- .../Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h | 4 +- .../Drivers/Board/AVR8/POLOLUMICRO/Board.h | 79 ++ .../Drivers/Board/AVR8/POLOLUMICRO/LEDs.h | 154 +++ .../Drivers/Board/AVR8/RZUSBSTICK/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h | 4 +- .../Drivers/Board/AVR8/SPARKFUN8U2/Board.h | 4 +- .../Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h | 4 +- .../Drivers/Board/AVR8/STANGE_ISP/Board.h | 4 +- .../Drivers/Board/AVR8/STANGE_ISP/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK525/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK525/Buttons.h | 4 +- .../Drivers/Board/AVR8/STK525/Dataflash.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK525/Joystick.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK525/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK526/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK526/Buttons.h | 4 +- .../Drivers/Board/AVR8/STK526/Dataflash.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK526/Joystick.h | 4 +- .../LUFA/Drivers/Board/AVR8/STK526/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/TEENSY/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/TUL/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/TUL/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/TUL/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/U2S/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/U2S/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/U2S/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/UDIP/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/UDIP/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/UDIP/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/UNO/Board.h | 14 +- .../LUFA/Drivers/Board/AVR8/UNO/LEDs.h | 8 +- .../LUFA/Drivers/Board/AVR8/USB2AX/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBFOO/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBKEY/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h | 4 +- .../Drivers/Board/AVR8/USBKEY/Dataflash.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h | 4 +- .../LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h | 4 +- .../Drivers/Board/AVR8/USBTINYMKII/Board.h | 4 +- .../Drivers/Board/AVR8/USBTINYMKII/Buttons.h | 4 +- .../Drivers/Board/AVR8/USBTINYMKII/LEDs.h | 4 +- .../LUFA/Drivers/Board/AVR8/XPLAIN/Board.h | 4 +- .../Drivers/Board/AVR8/XPLAIN/Dataflash.h | 4 +- .../LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h | 4 +- .../Drivers/Board/AVR8/XPLAINED_MINI/Board.h | 78 ++ .../Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h | 135 +++ .../LUFA/Drivers/Board/AVR8/YUN/Board.h | 4 +- .../LUFA/Drivers/Board/AVR8/YUN/LEDs.h | 4 +- .../LUFA/Drivers/Board/Board.h | 8 +- .../LUFA/Drivers/Board/Buttons.h | 9 +- .../LUFA/Drivers/Board/Dataflash.h | 4 +- .../LUFA/Drivers/Board/Joystick.h | 9 +- .../LUFA/Drivers/Board/LEDs.h | 22 +- .../LUFA/Drivers/Board/Temperature.c | 4 +- .../LUFA/Drivers/Board/Temperature.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1100/Board.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1100/Buttons.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1100/Joystick.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1100/LEDs.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1101/Board.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1101/Buttons.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1101/Joystick.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1101/LEDs.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1104/Board.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1104/Buttons.h | 4 +- .../LUFA/Drivers/Board/UC3/EVK1104/LEDs.h | 4 +- .../Drivers/Board/UC3/UC3A3_XPLAINED/Board.h | 4 +- .../Board/UC3/UC3A3_XPLAINED/Buttons.h | 4 +- .../Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h | 4 +- .../Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h | 4 +- .../Board/XMEGA/A3BU_XPLAINED/Buttons.h | 4 +- .../Board/XMEGA/A3BU_XPLAINED/Dataflash.h | 4 +- .../Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h | 4 +- .../Drivers/Board/XMEGA/B1_XPLAINED/Board.h | 4 +- .../Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h | 4 +- .../Board/XMEGA/B1_XPLAINED/Dataflash.h | 4 +- .../Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h | 4 +- .../Drivers/Board/XMEGA/C3_XPLAINED/Board.h | 4 +- .../Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h | 4 +- .../Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h | 4 +- .../LUFA/Drivers/Misc/AT45DB321C.h | 12 +- .../LUFA/Drivers/Misc/AT45DB642D.h | 12 +- .../LUFA/Drivers/Misc/RingBuffer.h | 4 +- .../LUFA/Drivers/Misc/TerminalCodes.h | 20 +- .../LUFA/Drivers/Peripheral/ADC.h | 4 +- .../LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h | 24 +- .../LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h | 24 +- .../Drivers/Peripheral/AVR8/SerialSPI_AVR8.h | 16 +- .../Drivers/Peripheral/AVR8/Serial_AVR8.c | 8 +- .../Drivers/Peripheral/AVR8/Serial_AVR8.h | 7 +- .../LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c | 8 +- .../LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h | 8 +- .../LUFA/Drivers/Peripheral/SPI.h | 4 +- .../LUFA/Drivers/Peripheral/Serial.h | 4 +- .../LUFA/Drivers/Peripheral/SerialSPI.h | 4 +- .../LUFA/Drivers/Peripheral/TWI.h | 4 +- .../LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h | 24 +- .../Peripheral/XMEGA/SerialSPI_XMEGA.h | 16 +- .../Drivers/Peripheral/XMEGA/Serial_XMEGA.c | 20 +- .../Drivers/Peripheral/XMEGA/Serial_XMEGA.h | 15 +- .../LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c | 8 +- .../LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h | 8 +- .../Drivers/USB/Class/AndroidAccessoryClass.h | 4 +- .../LUFA/Drivers/USB/Class/AudioClass.h | 4 +- .../LUFA/Drivers/USB/Class/CCIDClass.h | 82 ++ .../LUFA/Drivers/USB/Class/CDCClass.h | 4 +- .../Common/AndroidAccessoryClassCommon.h | 4 +- .../USB/Class/Common/AudioClassCommon.h | 23 +- .../USB/Class/Common/CCIDClassCommon.h | 293 ++++++ .../Drivers/USB/Class/Common/CDCClassCommon.h | 64 +- .../Drivers/USB/Class/Common/HIDClassCommon.h | 24 +- .../LUFA/Drivers/USB/Class/Common/HIDParser.c | 16 +- .../LUFA/Drivers/USB/Class/Common/HIDParser.h | 4 +- .../Drivers/USB/Class/Common/HIDReportData.h | 12 +- .../USB/Class/Common/MIDIClassCommon.h | 8 +- .../USB/Class/Common/MassStorageClassCommon.h | 20 +- .../USB/Class/Common/PrinterClassCommon.h | 8 +- .../USB/Class/Common/RNDISClassCommon.h | 36 +- .../USB/Class/Common/StillImageClassCommon.h | 4 +- .../USB/Class/Device/AudioClassDevice.c | 6 +- .../USB/Class/Device/AudioClassDevice.h | 6 +- .../USB/Class/Device/CCIDClassDevice.c | 392 +++++++ .../USB/Class/Device/CCIDClassDevice.h | 233 +++++ .../Drivers/USB/Class/Device/CDCClassDevice.c | 106 +- .../Drivers/USB/Class/Device/CDCClassDevice.h | 81 +- .../Drivers/USB/Class/Device/HIDClassDevice.c | 4 +- .../Drivers/USB/Class/Device/HIDClassDevice.h | 4 +- .../USB/Class/Device/MIDIClassDevice.c | 4 +- .../USB/Class/Device/MIDIClassDevice.h | 4 +- .../USB/Class/Device/MassStorageClassDevice.c | 4 +- .../USB/Class/Device/MassStorageClassDevice.h | 4 +- .../USB/Class/Device/PrinterClassDevice.c | 10 +- .../USB/Class/Device/PrinterClassDevice.h | 6 +- .../USB/Class/Device/RNDISClassDevice.c | 4 +- .../USB/Class/Device/RNDISClassDevice.h | 4 +- .../LUFA/Drivers/USB/Class/HIDClass.h | 4 +- .../Class/Host/AndroidAccessoryClassHost.c | 4 +- .../Class/Host/AndroidAccessoryClassHost.h | 4 +- .../Drivers/USB/Class/Host/AudioClassHost.c | 4 +- .../Drivers/USB/Class/Host/AudioClassHost.h | 4 +- .../Drivers/USB/Class/Host/CDCClassHost.c | 129 ++- .../Drivers/USB/Class/Host/CDCClassHost.h | 78 +- .../Drivers/USB/Class/Host/HIDClassHost.c | 5 +- .../Drivers/USB/Class/Host/HIDClassHost.h | 4 +- .../Drivers/USB/Class/Host/MIDIClassHost.c | 4 +- .../Drivers/USB/Class/Host/MIDIClassHost.h | 4 +- .../USB/Class/Host/MassStorageClassHost.c | 4 +- .../USB/Class/Host/MassStorageClassHost.h | 4 +- .../Drivers/USB/Class/Host/PrinterClassHost.c | 4 +- .../Drivers/USB/Class/Host/PrinterClassHost.h | 4 +- .../Drivers/USB/Class/Host/RNDISClassHost.c | 4 +- .../Drivers/USB/Class/Host/RNDISClassHost.h | 4 +- .../USB/Class/Host/StillImageClassHost.c | 4 +- .../USB/Class/Host/StillImageClassHost.h | 4 +- .../LUFA/Drivers/USB/Class/MIDIClass.h | 4 +- .../LUFA/Drivers/USB/Class/MassStorageClass.h | 4 +- .../LUFA/Drivers/USB/Class/PrinterClass.h | 4 +- .../LUFA/Drivers/USB/Class/RNDISClass.h | 4 +- .../LUFA/Drivers/USB/Class/StillImageClass.h | 4 +- .../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c | 4 +- .../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h | 23 +- .../USB/Core/AVR8/EndpointStream_AVR8.c | 26 +- .../USB/Core/AVR8/EndpointStream_AVR8.h | 20 +- .../Drivers/USB/Core/AVR8/Endpoint_AVR8.c | 4 +- .../Drivers/USB/Core/AVR8/Endpoint_AVR8.h | 4 +- .../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c | 4 +- .../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h | 4 +- .../LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h | 4 +- .../Drivers/USB/Core/AVR8/PipeStream_AVR8.c | 4 +- .../Drivers/USB/Core/AVR8/PipeStream_AVR8.h | 20 +- .../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c | 4 +- .../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h | 12 +- .../Template/Template_Endpoint_Control_R.c | 4 +- .../Template/Template_Endpoint_Control_W.c | 4 +- .../AVR8}/Template/Template_Endpoint_RW.c | 4 +- .../USB/Core/AVR8/Template/Template_Pipe_RW.c | 4 +- .../USB/Core/AVR8/USBController_AVR8.c | 4 +- .../USB/Core/AVR8/USBController_AVR8.h | 8 +- .../Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c | 4 +- .../Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h | 4 +- .../LUFA/Drivers/USB/Core/ConfigDescriptors.c | 4 +- .../LUFA/Drivers/USB/Core/ConfigDescriptors.h | 4 +- .../LUFA/Drivers/USB/Core/Device.h | 6 +- .../LUFA/Drivers/USB/Core/DeviceStandardReq.c | 25 +- .../LUFA/Drivers/USB/Core/DeviceStandardReq.h | 4 +- .../LUFA/Drivers/USB/Core/Endpoint.h | 4 +- .../LUFA/Drivers/USB/Core/EndpointStream.h | 4 +- .../LUFA/Drivers/USB/Core/Events.c | 16 +- .../LUFA/Drivers/USB/Core/Events.h | 12 +- .../LUFA/Drivers/USB/Core/Host.h | 4 +- .../LUFA/Drivers/USB/Core/HostStandardReq.c | 4 +- .../LUFA/Drivers/USB/Core/HostStandardReq.h | 4 +- .../LUFA/Drivers/USB/Core/OTG.h | 4 +- .../LUFA/Drivers/USB/Core/Pipe.h | 4 +- .../LUFA/Drivers/USB/Core/PipeStream.h | 4 +- .../LUFA/Drivers/USB/Core/StdDescriptors.h | 33 +- .../LUFA/Drivers/USB/Core/StdRequestType.h | 16 +- .../LUFA/Drivers/USB/Core/UC3/Device_UC3.c | 4 +- .../LUFA/Drivers/USB/Core/UC3/Device_UC3.h | 13 +- .../Drivers/USB/Core/UC3/EndpointStream_UC3.c | 26 +- .../Drivers/USB/Core/UC3/EndpointStream_UC3.h | 12 +- .../LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c | 4 +- .../LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h | 6 +- .../LUFA/Drivers/USB/Core/UC3/Host_UC3.c | 4 +- .../LUFA/Drivers/USB/Core/UC3/Host_UC3.h | 4 +- .../Drivers/USB/Core/UC3/PipeStream_UC3.c | 4 +- .../Drivers/USB/Core/UC3/PipeStream_UC3.h | 12 +- .../LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c | 4 +- .../LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h | 12 +- .../Template/Template_Endpoint_Control_R.c | 4 +- .../Template/Template_Endpoint_Control_W.c | 4 +- .../Core/UC3}/Template/Template_Endpoint_RW.c | 4 +- .../USB/Core/UC3/Template/Template_Pipe_RW.c | 4 +- .../Drivers/USB/Core/UC3/USBController_UC3.c | 4 +- .../Drivers/USB/Core/UC3/USBController_UC3.h | 8 +- .../Drivers/USB/Core/UC3/USBInterrupt_UC3.c | 4 +- .../Drivers/USB/Core/UC3/USBInterrupt_UC3.h | 4 +- .../LUFA/Drivers/USB/Core/USBController.h | 16 +- .../LUFA/Drivers/USB/Core/USBInterrupt.h | 4 +- .../LUFA/Drivers/USB/Core/USBMode.h | 4 +- .../LUFA/Drivers/USB/Core/USBTask.c | 4 +- .../LUFA/Drivers/USB/Core/USBTask.h | 4 +- .../Drivers/USB/Core/XMEGA/Device_XMEGA.c | 4 +- .../Drivers/USB/Core/XMEGA/Device_XMEGA.h | 23 +- .../USB/Core/XMEGA/EndpointStream_XMEGA.c | 26 +- .../USB/Core/XMEGA/EndpointStream_XMEGA.h | 20 +- .../Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c | 4 +- .../Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h | 4 +- .../LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c | 4 +- .../Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c | 4 +- .../LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c | 4 +- .../Template/Template_Endpoint_Control_R.c | 4 +- .../Template/Template_Endpoint_Control_W.c | 4 +- .../XMEGA/Template/Template_Endpoint_RW.c | 4 +- .../USB/Core/XMEGA/USBController_XMEGA.c | 4 +- .../USB/Core/XMEGA/USBController_XMEGA.h | 8 +- .../USB/Core/XMEGA/USBInterrupt_XMEGA.c | 4 +- .../USB/Core/XMEGA/USBInterrupt_XMEGA.h | 4 +- .../LUFA/Drivers/USB/USB.h | 5 +- .../LUFA/License.txt | 2 +- .../LUFA/Platform/Platform.h | 4 +- .../LUFA/Platform/UC3/ClockManagement.h | 4 +- .../LUFA/Platform/UC3/Exception.S | 4 +- .../LUFA/Platform/UC3/InterruptManagement.c | 4 +- .../LUFA/Platform/UC3/InterruptManagement.h | 4 +- .../LUFA/Platform/UC3/UC3ExperimentalInfo.txt | 0 .../LUFA/Platform/XMEGA/ClockManagement.h | 4 +- .../Platform/XMEGA/XMEGAExperimentalInfo.txt | 0 .../LUFA/Version.h | 27 +- .../LUFA/doxyfile | 558 ++++++---- .../lufa-LUFA-170418/LUFA/makefile | 40 + .../README.txt | 0 .../makefile | 3 +- 473 files changed, 6041 insertions(+), 7593 deletions(-) delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/makefile delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_atprogram.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_avrdude.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_cppcheck.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_dfu.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_doxygen.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_hid.mk delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/asf.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/asf.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildSystem.txt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ExportingLibrary.txt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step1.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step2.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step3.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step4.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_1.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_2.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_3.png delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/helpcontentsetup.msha delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/LUFA.dll delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/LUFA.pkgdef delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/[Content_Types].xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/asf-manifest.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/extension.vsixmanifest delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/generate_caches.py delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_common.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board_names.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_misc.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_peripheral.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_uc3.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_xmega.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_toolchain.xml delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/makefile delete mode 100644 avr/bootloaders/lufa-LUFA-140928/LUFA/makefile create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/.gitignore create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/makefile create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/License.txt create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/ModulesOverview.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.md rename avr/bootloaders/{lufa-LUFA-140928/LUFA/Build/lufa_core.mk => lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.mk} (55%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.md rename avr/bootloaders/{lufa-LUFA-140928/LUFA/Build/lufa_build.mk => lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.mk} (60%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Readme.md create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/Template.c create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/TEMPLATE_LIB.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/include/template_lib.h create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib.c create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib_private.h create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/makefile create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-gcc.mk rename avr/bootloaders/{lufa-LUFA-140928/LUFA/Build/lufa_sources.mk => lufa-LUFA-170418/LUFA/Build/LUFA/lufa-sources.mk} (68%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_atprogram.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_avrdude.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_build.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_core.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_cppcheck.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_dfu.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_doxygen.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_hid.mk create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_sources.mk rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h (94%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DriverStubs/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DriverStubs/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DriverStubs/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DriverStubs/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/DriverStubs/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/HostTemplate/HostApplication.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/HostTemplate/HostApplication.h (94%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/LUFAConfig.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/CodeTemplates/makefile_template (52%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/ArchitectureSpecific.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/Architectures.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/Attributes.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/BoardTypes.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/Common.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/CompilerSpecific.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Common/Endianness.h (98%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildSystem.txt rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/BuildingLinkableLibraries.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/ChangeLog.txt (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/CompileTimeTokens.txt (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/CompilingApps.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/ConfiguringApps.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/DevelopingWithLUFA.txt (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/DeviceSupport.txt (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/DirectorySummaries.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Donating.txt (50%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/FutureChanges.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/GettingStarted.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Groups.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Images/Author.jpg (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Images/LUFA.png (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Images/LUFA_thumb.png (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/KnownIssues.txt (63%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/LUFAPoweredProjects.txt (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/LibraryResources.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/LicenseInfo.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/MainPage.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/MigrationInformation.txt (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/OSDrivers.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/ProgrammingApps.txt (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/SoftwareBootloaderJump.txt (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Style/Footer.htm (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/Style/Style.css (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/VIDAndPIDValues.txt (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/DoxygenPages/WritingBoardDrivers.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BENITO/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUI/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUI/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/CULV3/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/DUCE/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/EVK527/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICRO/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MULTIO/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h (98%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK525/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK525/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK525/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK525/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK526/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK526/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK526/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/STK526/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/TEENSY/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/TUL/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/TUL/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/TUL/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/U2S/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/U2S/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/U2S/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/UDIP/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/UNO/Board.h (90%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/UNO/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USB2AX/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBFOO/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBKEY/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h (97%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/YUN/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/AVR8/YUN/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Dataflash.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Joystick.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/LEDs.h (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Temperature.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/Temperature.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1100/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1101/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1104/Board.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Misc/AT45DB321C.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Misc/AT45DB642D.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Misc/RingBuffer.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Misc/TerminalCodes.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/ADC.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/SPI.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/Serial.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/SerialSPI.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/TWI.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c (81%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h (94%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/AudioClass.h (96%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CCIDClass.h rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/CDCClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h (98%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CCIDClassCommon.h rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h (91%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/HIDParser.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/HIDParser.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/HIDReportData.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h (99%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c (76%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h (86%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/HIDClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/AudioClassHost.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/AudioClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/CDCClassHost.c (83%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/CDCClassHost.h (87%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/HIDClassHost.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/HIDClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/MIDIClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/MassStorageClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/PrinterClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/RNDISClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Class/StillImageClass.h (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c (96%) rename avr/bootloaders/{lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3 => lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8}/Template/Template_Endpoint_RW.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/ConfigDescriptors.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/ConfigDescriptors.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Device.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/DeviceStandardReq.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/DeviceStandardReq.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Endpoint.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/EndpointStream.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Events.c (81%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Events.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Host.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/HostStandardReq.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/HostStandardReq.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/OTG.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/Pipe.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/PipeStream.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/StdDescriptors.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/StdRequestType.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Device_UC3.c (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Device_UC3.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Host_UC3.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Host_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c (96%) rename avr/bootloaders/{lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8 => lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3}/Template/Template_Endpoint_RW.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/USBController.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/USBInterrupt.h (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/USBMode.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/USBTask.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/USBTask.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h (93%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c (92%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c (95%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Drivers/USB/USB.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/License.txt (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/Platform.h (97%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/UC3/ClockManagement.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/UC3/Exception.S (96%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/UC3/InterruptManagement.c (94%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/UC3/InterruptManagement.h (98%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/UC3/UC3ExperimentalInfo.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/XMEGA/ClockManagement.h (99%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/Version.h (63%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/LUFA/doxyfile (82%) create mode 100644 avr/bootloaders/lufa-LUFA-170418/LUFA/makefile rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/README.txt (100%) rename avr/bootloaders/{lufa-LUFA-140928 => lufa-LUFA-170418}/makefile (83%) diff --git a/avr/bootloaders/HoodLoader2/makefile b/avr/bootloaders/HoodLoader2/makefile index 9599300..8b70681 100644 --- a/avr/bootloaders/HoodLoader2/makefile +++ b/avr/bootloaders/HoodLoader2/makefile @@ -19,7 +19,7 @@ F_USB = $(F_CPU) OPTIMIZATION = s TARGET = HoodLoader2 SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) -LUFA_PATH = ../lufa/LUFA +LUFA_PATH = ../lufa-LUFA-170418/LUFA CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ $(HOODLOADER2_OPTS) -DBOOT_START_ADDR=$(BOOT_START_OFFSET) $(REGS) LD_FLAGS = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS),--section-start=.data=$(RAM_OFFSET) $(REGS) LTO = Y diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c deleted file mode 100644 index 7ee46b4..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Special application to extract an EEPROM image stored in FLASH memory, and - * copy it to the device EEPROM. This application is designed to be used with - * the HID build system module of LUFA to program the EEPROM of a target device - * that uses the HID bootloader protocol, which does not have native EEPROM - * programming support. - */ - -#include -#include -#include - -/* References to the binary EEPROM data linked in the AVR's FLASH memory space */ -extern const char _binary_InputEEData_bin_start[]; -extern const char _binary_InputEEData_bin_end[]; -extern const char _binary_InputEEData_bin_size[]; - -/* Friendly names for the embedded binary data stored in FLASH memory space */ -#define InputEEData _binary_InputEEData_bin_start -#define InputEEData_size ((int)_binary_InputEEData_bin_size) - -int main(void) -{ - /* Copy out the embedded EEPROM data from FLASH to EEPROM memory space */ - for (uint16_t i = 0; i < InputEEData_size; i++) - eeprom_update_byte((uint8_t*)i, pgm_read_byte(&InputEEData[i])); - - /* Infinite loop once complete */ - for (;;); -} diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/makefile b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/makefile deleted file mode 100644 index e839ba6..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/HID_EEPROM_Loader/makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# -------------------------------------- -# LUFA Project Makefile. -# -------------------------------------- - -# Run "make help" for target help. - -MCU = at90usb1287 -ARCH = AVR8 -F_CPU = 1000000 -F_USB = $(F_CPU) -OPTIMIZATION = s -TARGET = HID_EEPROM_Loader -SRC = $(TARGET).c -LUFA_PATH = ../../../LUFA -CC_FLAGS = -LD_FLAGS = -OBJECT_FILES = InputEEData.o - -# Default target -all: - -# Determine the AVR sub-architecture of the build main application object file -FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) - -# Create a linkable object file with the input binary EEPROM data stored in the FLASH section -InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" - avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ - -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_hid.mk diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_atprogram.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_atprogram.mk deleted file mode 100644 index 9433834..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_atprogram.mk +++ /dev/null @@ -1,103 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += ATPROGRAM -LUFA_BUILD_TARGETS += atprogram atprogram-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += ATPROGRAM_PROGRAMMER ATPROGRAM_INTERFACE ATPROGRAM_PORT -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA ATPROGRAM Programmer Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device using the Atmel atprogram -# utility in AVR Studio 5.x and Atmel Studio 6.0 onwards. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# atprogram - Program target FLASH with application using -# atprogram -# atprogram-ee - Program target EEPROM with application data -# using atprogram -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# ATPROGRAM_PROGRAMMER - Name of programming hardware to use -# ATPROGRAM_INTERFACE - Name of programming interface to use -# ATPROGRAM_PORT - Name of communication port to use -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -ATPROGRAM_PROGRAMMER ?= jtagice3 -ATPROGRAM_INTERFACE ?= jtag -ATPROGRAM_PORT ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) -$(call ERROR_IF_EMPTY, ATPROGRAM_PROGRAMMER) -$(call ERROR_IF_EMPTY, ATPROGRAM_INTERFACE) - -# Output Messages -MSG_ATPROGRAM_CMD := ' [ATPRGRM] :' - -# Construct base atprogram command flags -BASE_ATPROGRAM_FLAGS := --tool $(ATPROGRAM_PROGRAMMER) --interface $(ATPROGRAM_INTERFACE) --device $(MCU) -ifneq ($(ATPROGRAM_PORT),) - BASE_ATPROGRAM_FLAGS += --port $(ATPROGRAM_PORT) -endif - -# Construct the flags to use for the various memory spaces -ifeq ($(ARCH), AVR8) - ATPROGRAM_FLASH_FLAGS := --chiperase --flash - ATPROGRAM_EEPROM_FLAGS := --eeprom -else ifeq ($(ARCH), XMEGA) - ATPROGRAM_FLASH_FLAGS := --erase --flash - ATPROGRAM_EEPROM_FLAGS := --eeprom -else ifeq ($(ARCH), UC3) - ATPROGRAM_FLASH_FLAGS := --erase - ATPROGRAM_EEPROM_FLAGS := --eeprom -else - $(error Unsupported architecture "$(ARCH)") -endif - -# Programs in the target FLASH memory using ATPROGRAM -atprogram: $(TARGET).elf $(MAKEFILE_LIST) - @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" FLASH using \"$(ATPROGRAM_PROGRAMMER)\" - atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_FLASH_FLAGS) --file $< - -# Programs in the target EEPROM memory using ATPROGRAM -atprogram-ee: $(TARGET).elf $(MAKEFILE_LIST) - @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" EEPROM using \"$(ATPROGRAM_PROGRAMMER)\" - atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_EEPROM_FLAGS) --file $< - -# Phony build targets for this module -.PHONY: atprogram atprogram-ee diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_avrdude.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_avrdude.mk deleted file mode 100644 index 4eff418..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_avrdude.mk +++ /dev/null @@ -1,86 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += AVRDUDE -LUFA_BUILD_TARGETS += avrdude avrdude-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA AVRDUDE Programmer Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device using the open source -# avr-dude utility. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# avrdude - Program target FLASH with application using -# avrdude -# avrdude-ee - Program target EEPROM with application data -# using avrdude -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# AVRDUDE_PROGRAMMER - Name of programming hardware to use -# AVRDUDE_PORT - Name of communication port to use -# AVRDUDE_FLAGS - Flags to pass to avr-dude -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -AVRDUDE_PROGRAMMER ?= jtagicemkii -AVRDUDE_PORT ?= usb -AVRDUDE_FLAGS ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) -$(call ERROR_IF_EMPTY, AVRDUDE_PROGRAMMER) -$(call ERROR_IF_EMPTY, AVRDUDE_PORT) - -# Output Messages -MSG_AVRDUDE_CMD := ' [AVRDUDE] :' - -# Construct base avrdude command flags -BASE_AVRDUDE_FLAGS := -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) - -# Programs in the target FLASH memory using AVRDUDE -avrdude: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" FLASH using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" - avrdude $(BASE_AVRDUDE_FLAGS) -U flash:w:$< $(AVRDUDE_FLAGS) - -# Programs in the target EEPROM memory using AVRDUDE -avrdude-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" EEPROM using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" - avrdude $(BASE_AVRDUDE_FLAGS) -U eeprom:w:$< $(AVRDUDE_FLAGS) - -# Phony build targets for this module -.PHONY: avrdude avrdude-ee diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_cppcheck.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_cppcheck.mk deleted file mode 100644 index 0b9b611..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_cppcheck.mk +++ /dev/null @@ -1,107 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += CPPCHECK -LUFA_BUILD_TARGETS += cppcheck cppcheck-config -LUFA_BUILD_MANDATORY_VARS += SRC -LUFA_BUILD_OPTIONAL_VARS += CPPCHECK_INCLUDES CPPCHECK_EXCLUDES CPPCHECK_MSG_TEMPLATE CPPCHECK_ENABLE \ - CPPCHECK_SUPPRESS CPPCHECK_FAIL_ON_WARNING CPPCHECK_QUIET CPPCHECK_FLAGS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA CPPCheck Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to scan a project with the free "cppcheck" static -# analysis tool, to check for code errors at runtime -# (see http://cppcheck.sourceforge.net). -# ----------------------------------------------------------------------------- -# TARGETS: -# -# cppcheck - Scan the project with CPPCheck -# cppcheck-config - Use CPPCheck to look for missing include files -# -# MANDATORY PARAMETERS: -# -# SRC - List of source files to statically analyze -# -# OPTIONAL PARAMETERS: -# -# CPPCHECK_INCLUDES - Extra include paths to search for missing -# header files -# CPPCHECK_EXCLUDES - Source file paths to exclude checking (can be -# a path fragment if desired) -# CPPCHECK_MSG_TEMPLATE - Template for cppcheck error and warning output -# CPPCHECK_ENABLE - General cppcheck category checks to enable -# CPPCHECK_SUPPRESS - Specific cppcheck warnings to disable by ID -# CPPCHECK_FAIL_ON_WARNING - Set to Y to fail the build on cppcheck -# warnings, N to continue even if warnings occur -# CPPCHECK_QUIET - Enable cppcheck verbose or quiet output mode -# CPPCHECK_FLAGS - Additional flags to pass to cppcheck -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -CPPCHECK_INCLUDES ?= -CPPCHECK_EXCLUDES ?= -CPPCHECK_MSG_TEMPLATE ?= {file}:{line}: {severity} ({id}): {message} -CPPCHECK_ENABLE ?= all -CPPCHECK_SUPPRESS ?= variableScope missingInclude -CPPCHECK_FAIL_ON_WARNING ?= Y -CPPCHECK_QUIET ?= Y -CPPCHECK_FLAGS ?= - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, SRC) -$(call ERROR_IF_EMPTY, CPPCHECK_MSG_TEMPLATE) -$(call ERROR_IF_EMPTY, CPPCHECK_ENABLE) -$(call ERROR_IF_NONBOOL, CPPCHECK_FAIL_ON_WARNING) -$(call ERROR_IF_NONBOOL, CPPCHECK_QUIET) - -# Build a default argument list for cppcheck -BASE_CPPCHECK_FLAGS := --template="$(CPPCHECK_MSG_TEMPLATE)" $(CPPCHECK_INCLUDES:%=-I%) $(CPPCHECK_EXCLUDES:%=-i%) --inline-suppr --force --std=c99 - -# Sanity check parameters and construct additional command line arguments to cppcheck -ifeq ($(CPPCHECK_FAIL_ON_WARNING), Y) - BASE_CPPCHECK_FLAGS += --error-exitcode=1 -endif -ifeq ($(CPPCHECK_QUIET), Y) - BASE_CPPCHECK_FLAGS += --quiet -endif - -# Output Messages -MSG_CPPCHECK_CMD := ' [CPPCHECK]:' - -# Checks the CPPCheck configuration as used in the user project, to determine if any paths are missing or invalid -cppcheck-config: $(MAKEFILE_LIST) - @echo $(MSG_CPPCHECK_CMD) Checking cppcheck configuration check on source files - cppcheck $(BASE_CPPCHECK_FLAGS) --check-config $(CPPCHECK_FLAGS) $(SRC) - -# Runs a static analysis using CPPCheck to determine if there are any issues -cppcheck: $(MAKEFILE_LIST) - @echo $(MSG_CPPCHECK_CMD) Performing static analysis on source files - cppcheck $(BASE_CPPCHECK_FLAGS) --enable=$(CPPCHECK_ENABLE) $(CPPCHECK_SUPPRESS:%=--suppress=%) $(CPPCHECK_FLAGS) $(SRC) - -# Phony build targets for this module -.PHONY: cppcheck-config cppcheck diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_dfu.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_dfu.mk deleted file mode 100644 index 956adc8..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_dfu.mk +++ /dev/null @@ -1,95 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += DFU -LUFA_BUILD_TARGETS += flip flip-ee dfu dfu-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA DFU Bootloader Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device currently running a DFU -# class bootloader with a project's FLASH and EEPROM files. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# flip - Program FLASH into target via Atmel FLIP -# flip-ee - Program EEPROM into target via Atmel FLIP -# dfu - Program FLASH into target via dfu-programmer -# dfu-ee - Program EEPROM into target via dfu-programmer -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Sanity-check values of mandatory user-supplied variables -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) - -# Output Messages -MSG_COPY_CMD := ' [CP] :' -MSG_REMOVE_CMD := ' [RM] :' -MSG_DFU_CMD := ' [DFU] :' - -# Programs in the target FLASH memory using BATCHISP, the command line tool used by FLIP -flip: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming FLASH with batchisp using \"$<\" - batchisp -hardware usb -device $(MCU) -operation erase f loadbuffer $< program - batchisp -hardware usb -device $(MCU) -operation start reset 0 - -# Programs in the target EEPROM memory using BATCHISP, the command line tool used by FLIP -flip-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_COPY_CMD) Copying EEP file to temporary file \"$<.hex\" - cp $< $<.hex - @echo $(MSG_DFU_CMD) Programming EEPROM with batchisp using \"$<.hex\" - batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $<.hex program - batchisp -hardware usb -device $(MCU) -operation start reset 0 - @echo $(MSG_REMOVE_CMD) Removing temporary file \"$<.hex\" - rm $<.hex - -# Programs in the target FLASH memory using DFU-PROGRAMMER -dfu: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming FLASH with dfu-programmer using \"$<\" - dfu-programmer $(MCU) erase - dfu-programmer $(MCU) flash $< - dfu-programmer $(MCU) reset - -# Programs in the target EEPROM memory using DFU-PROGRAMMER -dfu-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_DFU_CMD) Programming EEPROM with dfu-programmer using \"$<\" - dfu-programmer $(MCU) eeprom-flash $< - dfu-programmer $(MCU) reset - -# Phony build targets for this module -.PHONY: flip flip-ee dfu dfu-ee diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_doxygen.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_doxygen.mk deleted file mode 100644 index babf287..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_doxygen.mk +++ /dev/null @@ -1,100 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += DOXYGEN -LUFA_BUILD_TARGETS += doxygen doxygen_upgrade doxygen_create -LUFA_BUILD_MANDATORY_VARS += LUFA_PATH -LUFA_BUILD_OPTIONAL_VARS += DOXYGEN_CONF DOXYGEN_FAIL_ON_WARNING DOXYGEN_OVERRIDE_PARAMS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA Doxygen Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to automatically build Doxygen documentation for -# a project (see www.doxygen.org). -# ----------------------------------------------------------------------------- -# TARGETS: -# -# doxygen - Build Doxygen Documentation -# doxygen_create - Create a new Doxygen configuration file using -# the latest template -# doxygen_upgrade - Upgrade an existing Doxygen configuration file -# to the latest template -# -# MANDATORY PARAMETERS: -# -# LUFA_PATH - Path to the LUFA library core -# -# OPTIONAL PARAMETERS: -# -# DOXYGEN_CONF - Doxygen configuration filename -# DOXYGEN_FAIL_ON_WARNING - Set to Y to fail the build on Doxygen warnings, -# N to continue even if warnings occur -# DOXYGEN_OVERRIDE_PARAMS - Parameters to override in the doxygen -# configuration file -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Default values of optionally user-supplied variables -DOXYGEN_CONF ?= doxyfile -DOXYGEN_FAIL_ON_WARNING ?= Y -DOXYGEN_OVERRIDE_PARAMS ?= QUIET=YES HTML_EXTRA_STYLESHEET=$(patsubst %/,%,$(LUFA_PATH))/DoxygenPages/Style/Style.css - -# Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, DOXYGEN_CONF) -$(call ERROR_IF_EMPTY, LUFA_PATH) -$(call ERROR_IF_NONBOOL, DOXYGEN_FAIL_ON_WARNING) - -# Output Messages -MSG_DOXYGEN_CMD := ' [DOXYGEN] :' - -# Determine Doxygen invocation command -BASE_DOXYGEN_CMD := ( cat $(DOXYGEN_CONF) $(DOXYGEN_OVERRIDE_PARAMS:%=; echo "%") ) | doxygen - -ifeq ($(DOXYGEN_FAIL_ON_WARNING), Y) - DOXYGEN_CMD := if ( $(BASE_DOXYGEN_CMD) 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then exit 1; fi; -else - DOXYGEN_CMD := $(BASE_DOXYGEN_CMD) -endif - -# Error if the specified Doxygen configuration file does not exist -$(DOXYGEN_CONF): - $(error Doxygen configuration file $@ does not exist) - -# Builds the project documentation using the specified configuration file and the DOXYGEN tool -doxygen: $(DOXYGEN_CONF) $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Configuration file \"$(DOXYGEN_CONF)\" with parameters \"$(DOXYGEN_OVERRIDE_PARAMS)\" - $(DOXYGEN_CMD) - -# Upgrades an existing Doxygen configuration file to the latest Doxygen template, preserving settings -doxygen_upgrade: $(DOXYGEN_CONF) $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Upgrading configuration file \"$(DOXYGEN_CONF)\" with latest template - doxygen -u $(DOXYGEN_CONF) > /dev/null - -# Creates a new Doxygen configuration file with the set file name -doxygen_create: $(MAKEFILE_LIST) - @echo $(MSG_DOXYGEN_CMD) Creating new configuration file \"$(DOXYGEN_CONF)\" with latest template - doxygen -g $(DOXYGEN_CONF) > /dev/null - -# Phony build targets for this module -.PHONY: doxygen doxygen_upgrade doxygen_create diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_hid.mk b/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_hid.mk deleted file mode 100644 index e79b7bf..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_hid.mk +++ /dev/null @@ -1,96 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# - -LUFA_BUILD_MODULES += HID -LUFA_BUILD_TARGETS += hid hid-ee teensy teensy-ee -LUFA_BUILD_MANDATORY_VARS += MCU TARGET -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA HID Bootloader Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to re-program a device currently running a HID -# class bootloader with a project's FLASH files. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# hid - Program FLASH into target via -# hid_bootloader_cli -# hid-ee - Program EEPROM into target via a temporary -# AVR application and hid_bootloader_cli -# teensy - Program FLASH into target via -# teensy_loader_cli -# teensy-ee - Program EEPROM into target via a temporary -# AVR application and teensy_loader_cli -# -# MANDATORY PARAMETERS: -# -# MCU - Microcontroller device model name -# TARGET - Application name -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- - -SHELL = /bin/sh - -LUFA_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) - -# Sanity-check values of mandatory user-supplied variables -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) -$(call ERROR_IF_EMPTY, MCU) -$(call ERROR_IF_EMPTY, TARGET) - -# Output Messages -MSG_HID_BOOTLOADER_CMD := ' [HID] :' -MSG_OBJCPY_CMD := ' [OBJCPY] :' -MSG_MAKE_CMD := ' [MAKE] :' - -# Programs in the target FLASH memory using the HID_BOOTLOADER_CLI tool -hid: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with hid_bootloader_cli using \"$<\" - hid_bootloader_cli -mmcu=$(MCU) -v $< - -# Programs in the target EEPROM memory using the HID_BOOTLOADER_CLI tool (note: clears target FLASH memory) -hid-ee: $(TARGET).eep $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" - avr-objcopy -I ihex -O binary $< $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.bin - @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - $(MAKE) -C $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean hid - -# Programs in the target FLASH memory using the TEENSY_BOOTLOADER_CLI tool -teensy: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\" - teensy_loader_cli -mmcu=$(MCU) -v $< - -# Programs in the target EEPROM memory using the TEENSY_BOOTLOADER_CLI tool (note: clears target FLASH memory) -teensy-ee: $(TARGET).hex $(MAKEFILE_LIST) - @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" - avr-objcopy -I ihex -O binary $< $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.bin - @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - $(MAKE) -s -C $(LUFA_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean teensy - -# Phony build targets for this module -.PHONY: hid hid-ee teensy teensy-ee diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/asf.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/asf.xml deleted file mode 100644 index e952714..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/asf.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - Template for a LUFA USB device mode application. - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/asf.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/asf.xml deleted file mode 100644 index c3860c0..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/asf.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - Template for a LUFA USB host mode application. - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildSystem.txt b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildSystem.txt deleted file mode 100644 index 0ae1dd6..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildSystem.txt +++ /dev/null @@ -1,975 +0,0 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \page Page_BuildSystem The LUFA Build System - * - * \section Sec_BuildSystem_Overview Overview of the LUFA Build System - * The LUFA build system is an attempt at making a set of re-usable, modular build make files which - * can be referenced in a LUFA powered project, to minimize the amount of code required in an - * application makefile. The system is written in GNU Make, and each module is independent of - * one-another. - * - * For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA - * build system, see \ref Sec_CompilingApps_Prerequisites. - * - * To use a LUFA build system module, simply add an include to your project makefile. All user projects - * should at a minimum include \ref Page_BuildModule_CORE for base functionality: - * \code - * include $(LUFA_PATH)/Build/lufa_core.mk - * \endcode - * - * Once included in your project makefile, the associated build module targets will be added to your - * project's build makefile targets automatically. To call a build target, run make {TARGET_NAME} - * from the command line, substituting in the appropriate target name. - * - * \see \ref Sec_ConfiguringApps_AppMakefileParams for a copy of the sample LUFA project makefile. - * - * Each build module may have one or more mandatory parameters (GNU Make variables) which must - * be supplied in the project makefile for the module to work, and one or more optional parameters which - * may be defined and which will assume a sensible default if not. - * - * \section SSec_BuildSystem_Modules Available Modules - * - * The following modules are included in this LUFA release: - * - * \li \subpage Page_BuildModule_ATPROGRAM - Device Programming - * \li \subpage Page_BuildModule_AVRDUDE - Device Programming - * \li \subpage Page_BuildModule_BUILD - Compiling/Assembling/Linking - * \li \subpage Page_BuildModule_CORE - Core Build System Functions - * \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis - * \li \subpage Page_BuildModule_DFU - Device Programming - * \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation - * \li \subpage Page_BuildModule_HID - Device Programming - * \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables - * - * If you have problems building using the LUFA build system, see \subpage Page_BuildTroubleshooting for resolution steps. - */ - - /** \page Page_BuildModule_BUILD The BUILD build module - * - * The BUILD LUFA build system module, providing targets for the compilation, - * assembling and linking of an application from source code into binary files - * suitable for programming into a target device, using the GCC compiler. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_build.mk - * \endcode - * - * \section SSec_BuildModule_BUILD_Requirements Requirements - * This module requires the the architecture appropriate binaries of the GCC compiler are available in your - * system's PATH variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio - * 5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages. - * - * \section SSec_BuildModule_BUILD_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
sizeDisplay size of the compiled application FLASH and SRAM segments.
symbol-sizesDisplay a size-sorted list of symbols from the compiled application, in decimal bytes.
libBuild and archive all source files into a library A binary file.
allBuild and link the application into ELF debug and HEX binary files.
elfBuild and link the application into an ELF debug file.
binBuild and link the application and produce a BIN binary file.
hexBuild and link the application and produce HEX and EEP binary files.
lssBuild and link the application and produce a LSS source code/assembly code mixed listing file.
cleanRemove all intermediary files and binary output files.
mostlycleanRemove all intermediary files but preserve any binary output files.
<filename>.sCreate an assembly listing of a given input C/C++ source file.
- * - * \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
TARGETName of the application output file prefix (e.g. TestApplication).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
MCUName of the Atmel processor model (e.g. at90usb1287).
SRCList of relative or absolute paths to the application C (.c), C++ (.cpp) and Assembly (.S) source files.
F_USBSpeed in Hz of the input clock frequency to the target's USB controller.
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
- * - * \section SSec_BuildModule_BUILD_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
BOARDLUFA board hardware drivers to use (see \ref Page_DeviceSupport).
OPTIMIZATIONOptimization level to use when compiling source files (see GCC manual).
C_STANDARDVersion of the C standard to apply when compiling C++ source files (see GCC manual).
CPP_STANDARDVersion of the C++ standard to apply when compiling C++ source files (see GCC manual).
DEBUG_FORMATFormat of the debug information to embed in the generated object files (see GCC manual).
DEBUG_LEVELLevel of the debugging information to embed in the generated object files (see GCC manual).
F_CPUSpeed of the processor CPU clock, in Hz.
C_FLAGSFlags to pass to the C compiler only, after the automatically generated flags.
CPP_FLAGSFlags to pass to the C++ compiler only, after the automatically generated flags.
ASM_FLAGSFlags to pass to the assembler only, after the automatically generated flags.
CC_FLAGSCommon flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.
COMPILER_PATHDirectory where the C/C++ toolchain is located, if not available in the system PATH.
LD_FLAGSFlags to pass to the linker, after the automatically generated flags.
LINKER_RELAXATIONSEnables or disables linker relaxations when linking the application binary. This can reduce the total size - * of the application by replacing full \c CALL instructions with smaller \c RCALL instructions where possible. - * \note On some unpatched versions of binutils, this can cause link failures in some circumstances. If you - * receive a link error relocation truncated to fit: R_AVR_13_PCREL, disable this setting.
OBJDIRDirectory to place the generated object and dependency files. If set to "." the same folder as the source file will be used. - * \note When this option is enabled, all source filenames must be unique.
OBJECT_FILESList of additional object files that should be linked into the resulting binary.
- * - * \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_BUILD_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_CORE The CORE build module - * - * The core LUFA build system module, providing common build system help and information targets. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_core.mk - * \endcode - * - * \section SSec_BuildModule_CORE_Requirements Requirements - * This module has no requirements outside a standard *nix shell like environment; the sh - * shell, GNU make and *nix CoreUtils (echo, printf, etc.). - * - * \section SSec_BuildModule_CORE_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
helpDisplay build system help and configuration information.
list_targetsList all available build targets from the build system.
list_modulesList all available build modules from the build system.
list_mandatoryList all mandatory parameters required by the included modules.
list_optionalList all optional parameters required by the included modules.
list_providedList all variables provided by the included modules.
list_macrosList all macros provided by the included modules.
- * - * \section SSec_BuildModule_CORE_MandatoryParams Mandatory Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CORE_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_ATPROGRAM The ATPROGRAM build module - * - * The ATPROGRAM programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_atprogram.mk - * \endcode - * - * \section SSec_BuildModule_ATPROGRAM_Requirements Requirements - * This module requires the atprogram.exe utility to be available in your system's PATH - * variable. The atprogram.exe utility is distributed in Atmel AVR Studio 5.x and Atmel Studio 6.x - * inside the application install folder's "\atbackend" subdirectory. - * - * \section SSec_BuildModule_ATPROGRAM_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
atprogramProgram the device FLASH memory with the application's executable data.
atprogram-eeProgram the device EEPROM memory with the application's EEPROM data.
- * - * \section SSec_BuildModule_ATPROGRAM_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_ATPROGRAM_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
ATPROGRAM_PROGRAMMERName of the Atmel programmer or debugger tool to communicate with (e.g. jtagice3).
ATPROGRAM_INTERFACEName of the programming interface to use when programming the target (e.g. spi).
ATPROGRAM_PORTName of the communication port to use when when programming with a serially connected tool (e.g. COM2).
- * - * \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_ATPROGRAM_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildModule_AVRDUDE The AVRDUDE build module - * - * The AVRDUDE programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_avrdude.mk - * \endcode - * - * \section SSec_BuildModule_AVRDUDE_Requirements Requirements - * This module requires the avrdude utility to be available in your system's PATH - * variable. The avrdude utility is distributed in the old WinAVR project releases for - * Windows (http://winavr.sourceforge.net) or can be installed on *nix systems via the project's - * source code (https://savannah.nongnu.org/projects/avrdude) or through the package manager. - * - * \section SSec_BuildModule_AVRDUDE_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
avrdudeProgram the device FLASH memory with the application's executable data.
avrdude-eeProgram the device EEPROM memory with the application's EEPROM data.
- * - * \section SSec_BuildModule_AVRDUDE_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_AVRDUDE_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
AVRDUDE_PROGRAMMERName of the programmer or debugger tool to communicate with (e.g. jtagicemkii).
AVRDUDE_PORTName of the communication port to use when when programming with the connected tool (e.g. COM2, /dev/ttyUSB0 or usb).
AVRDUDE_FLAGSAdditional flags to pass to avrdude when programming, applied after the automatically generated flags.
- * - * \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_AVRDUDE_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_CPPCHECK The CPPCHECK build module - * - * The CPPCHECK programming utility LUFA build system module, providing targets to statically - * analyze C and C++ source code for errors and performance/style issues. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_cppcheck.mk - * \endcode - * - * \section SSec_BuildModule_CPPCHECK_Requirements Requirements - * This module requires the cppcheck utility to be available in your system's PATH - * variable. The cppcheck utility is distributed through the project's home page - * (http://cppcheck.sourceforge.net) for Windows, and can be installed on *nix systems via - * the project's source code or through the package manager. - * - * \section SSec_BuildModule_CPPCHECK_Targets Targets - * - * - * - * - * - * - * - * - * - * - *
cppcheckStatically analyze the project source code for issues.
cppcheck-configCheck the cppcheck configuration - scan source code and warn about missing header files and other issues.
- * - * \section SSec_BuildModule_CPPCHECK_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - *
SRCList of source files to statically analyze.
- * - * \section SSec_BuildModule_CPPCHECK_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
CPPCHECK_INCLUDESPath of extra directories to check when attemting to resolve C/C++ header file includes.
CPPCHECK_EXCLUDESPaths or path fragments to exclude when analyzing.
CPPCHECK_MSG_TEMPLATEOutput message template to use when printing errors, warnings and information (see cppcheck documentation).
CPPCHECK_ENABLEAnalysis rule categories to enable (see cppcheck documentation).
CPPCHECK_SUPPRESSSpecific analysis rules to suppress (see cppcheck documentation).
CPPCHECK_FAIL_ON_WARNINGSet to Y to fail the analysis job with an error exit code if warnings are found, N to continue without failing.
CPPCHECK_QUIETSet to Y to suppress all output except warnings and errors, N to show verbose output information.
CPPCHECK_FLAGSExtra flags to pass to cppcheck, after the automatically generated flags.
- * - * \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_CPPCHECK_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_DFU The DFU build module - * - * The DFU programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. - * This module requires a DFU class bootloader to be running in the target, compatible with - * the DFU bootloader protocol as published by Atmel. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_dfu.mk - * \endcode - * - * \section SSec_BuildModule_DFU_Requirements Requirements - * This module requires either the batchisp utility from Atmel's FLIP utility, or the open - * source dfu-programmer utility (http://dfu-programmer.sourceforge.net/) to be - * available in your system's PATH variable. On *nix systems the dfu-programmer utility - * can be installed via the project's source code or through the package manager. - * - * \section SSec_BuildModule_DFU_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
dfuProgram the device FLASH memory with the application's executable data using dfu-programmer.
dfu-eeProgram the device EEPROM memory with the application's EEPROM data using dfu-programmer.
flipProgram the device FLASH memory with the application's executable data using batchisp.
flip-eeProgram the device EEPROM memory with the application's EEPROM data using batchisp.
- * - * \section SSec_BuildModule_DFU_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_DFU_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DFU_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_DOXYGEN The DOXYGEN build module - * - * The DOXYGEN code documentation utility LUFA build system module, providing targets to generate - * project HTML and other format documentation from a set of source files that include special - * Doxygen comments. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_doxygen.mk - * \endcode - * - * \section SSec_BuildModule_DOXYGEN_Requirements Requirements - * This module requires the doxygen utility from the Doxygen website - * (http://www.doxygen.org/) to be available in your system's PATH variable. On *nix - * systems the doxygen utility can be installed via the project's source code or through - * the package manager. - * - * \section SSec_BuildModule_DOXYGEN_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
doxygenGenerate project documentation.
doxygen_createCreate a new Doxygen configuration file using the latest template.
doxygen_upgradeUpgrade an existing Doxygen configuration file to the latest template
- * - * \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
- * - * \section SSec_BuildModule_DOXYGEN_OptionalParams Optional Parameters - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
DOXYGEN_CONFName and path of the base Doxygen configuration file for the project.
DOXYGEN_FAIL_ON_WARNINGSet to Y to fail the generation with an error exit code if warnings are found other than unsupported configuration parameters, N to continue without failing.
DOXYGEN_OVERRIDE_PARAMSExtra Doxygen configuration parameters to apply, overriding the corresponding config entry in the project's configuration file (e.g. QUIET=YES).
- * - * \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_DOXYGEN_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_HID The HID build module - * - * The HID programming utility LUFA build system module, providing targets to reprogram an - * Atmel processor's FLASH memory with a project's compiled binary output file. This module - * requires a HID class bootloader to be running in the target, using a protocol compatible - * with the PJRC "HalfKay" protocol (http://www.pjrc.com/teensy/halfkay_protocol.html). - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_hid.mk - * \endcode - * - * \section SSec_BuildModule_HID_Requirements Requirements - * This module requires either the hid_bootloader_cli utility from the included LUFA HID - * class bootloader API subdirectory, or the teensy_loader_cli utility from PJRC - * (http://www.pjrc.com/teensy/loader_cli.html) to be available in your system's PATH - * variable. - * - * \section SSec_BuildModule_HID_Targets Targets - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
hidProgram the device FLASH memory with the application's executable data using hid_bootloader_cli.
hid-eeProgram the device EEPROM memory with the application's EEPROM data using hid_bootloader_cli and - * a temporary AVR application programmed into the target's FLASH. - * \note This will erase the currently loaded application in the target.
teensyProgram the device FLASH memory with the application's executable data using teensy_loader_cli.
teensy-eeProgram the device EEPROM memory with the application's EEPROM data using teensy_loader_cli and - * a temporary AVR application programmed into the target's FLASH. - * \note This will erase the currently loaded application in the target.
- * - * \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
MCUName of the Atmel processor model (e.g. at90usb1287).
TARGETName of the application output file prefix (e.g. TestApplication).
- * - * \section SSec_BuildModule_HID_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - - /** \page Page_BuildModule_SOURCES The SOURCES build module - * - * The SOURCES LUFA build system module, providing variables listing the various LUFA source files - * required to be build by a project for a given LUFA module. This module gives a way to reference - * LUFA source files symbolically, so that changes to the library structure do not break the library - * makefile. - * - * To use this module in your application makefile, add the following code: - * \code - * include $(LUFA_PATH)/Build/lufa_sources.mk - * \endcode - * - * \section SSec_BuildModule_SOURCES_Requirements Requirements - * None. - * - * \section SSec_BuildModule_SOURCES_Targets Targets - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_SOURCES_MandatoryParams Mandatory Parameters - * - * - * - * - * - * - * - * - * - * - *
LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
- * - * \section SSec_BuildModule_SOURCES_OptionalParams Optional Parameters - * - * - * - * - * - *
None
- * - * \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
LUFA_SRC_USBList of LUFA USB driver source files.
LUFA_SRC_USBCLASSList of LUFA USB Class driver source files.
LUFA_SRC_TEMPERATUREList of LUFA temperature sensor driver source files.
LUFA_SRC_SERIALList of LUFA Serial U(S)ART driver source files.
LUFA_SRC_TWIList of LUFA TWI driver source files.
LUFA_SRC_PLATFORMList of LUFA architecture specific platform management source files.
- * - * \section SSec_BuildModule_SOURCES_ProvidedMacros Module Provided Macros - * - * - * - * - * - *
None
- */ - -/** \page Page_BuildTroubleshooting Troubleshooting Information - * - * LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and surrounding binaries. This can sometimes lead to problems compiling applications if one of these - * features is buggy in the version of the tools used in a build environment. Missing utilities and incorrectly set makefile configuration options can also result in different - * errors being produced when compilation or other operations are attempted. The table below lists a set of commonly encountered errors and their resolutions. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
ProblemResolution
Error "relocation truncated to fit: R_AVR_13_PCREL against symbol {X}" shown when compiling.Try compiling with the setting LINKER_RELAXATIONS=N in your LUFA Build System 2.0 makefile, or remove the line -Wl,--relax - * from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.
Error "error: ld terminated with signal 11 [Segmentation fault]" shown when compiling.Try compiling with the setting DEBUG_LEVEL=2 in your LUFA Build System 2.0 makefile, or make sure you are using binutils version 2.22 or later.
Error "EMERGENCY ABORT: INFINITE RECURSION DETECTED" shown when compiling.Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with - * GNU make or other variants of Make causing an infinitely recursive build.
Error "Unsupported architecture "{X}"" shown when compiling.Ensure your makefile's ARCH setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.
Error "Makefile {X} value not set" shown when compiling.The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA - * build system modules. Define the value in your project makefile and try again.
Error "Makefile {X} option cannot be blank" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration - * option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.
Error "Makefile {X} option must be Y or N" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No"). - * This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.
Error "Unknown input source file formats: {X}" shown when compiling.The nominated source files, specified in your project's makefile in the SRC configuration option, has an extension that the LUFA build system does not - * recognise. The file extensions are case sensitive, and must be one of the supported formats (*.c, *.cpp or *.S).
Error "Cannot build with OBJDIR parameter set - one or more object file name is not unique" shown when compiling.When a project is built with a non-empty OBJDIR object directory name set, all input source files must have unique names, excluding extension and path. - * This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.
Error "Source file does not exist: {X}" shown when compiling.The nominated input source file, specified in the user project's SRC parameter, could not be found. Ensure the source file exists and the absolute or - * relative path given in the user project makefile is correct and try again.
Error "Doxygen configuration file {X} does not exist" shown when upgrading a Doxygen configuration file.The nominated Doxygen configuration file, specified in the user project's DOXYGEN_CONF parameter, could not be found. Ensure the configuration file exists - * and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration - * file.
Error "avr-gcc: error: unrecognized option '{X}'" shown when compiling.An unrecognised option was supplied to the compiler, usually in the C_FLAGS, CPP_FLAGS, ASM_FLAGS or CC_FLAGS configuration - * options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or - * upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.
Error "makefile:{X}: {Y}.mk: No such file or directory" shown when make is invoked.The path to the nominated makefile module was incorrect. This usually indicates that the makefile LUFA_PATH option is not set to a valid relative or - * absolute path to the LUFA library core.
Error "fatal error: LUFAConfig.h: No such file or directory" shown when compiling.The USE_LUFA_CONFIG_HEADER compile time option was set in the user project makefile, but the user supplied LUFAConfig.h header could not be - * found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile CC_FLAGS - * parameter.
Error "ld.exe: section .apitable_trampolines loaded at {X} overlaps section .text" shown when compiling a bootloader.The bootloader is compiling too large for the given FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB parameters set in the bootloader makefile. This - * usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the - * compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.
Error "unknown MCU '{X}' specified" shown when compiling.The specified microcontroller device model name set in the user application's makefile as the MCU parameter is incorrect, or unsupported by the - * version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.
Error "undefined reference to `{X}'" shown when compiling.This is usually caused by a missing source file in the user application's SRC configuration parameter. If the indicated symbol is one from the LUFA - * library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_SOURCES).
- * - * For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp. - */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ExportingLibrary.txt b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ExportingLibrary.txt deleted file mode 100644 index 0951848..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ExportingLibrary.txt +++ /dev/null @@ -1,112 +0,0 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \page Page_ExportingLibrary Exporting the Library for IDE Use - * - * While LUFA was designed to allow for easy compilation in a makefile driven environment, - * it is possible to export the library into a form suitable for drop-in use inside of an - * IDE. - * - * \note LUFA is also available as a native Atmel Studio 6.1 extension, which integrates LUFA into - * Atmel Studio including all demos and projects. If you are running Atmel Studio 6.1 or later, the - * below instructions are not required; download and install the native LUFA extension from the - * Atmel Gallery instead. - * - * \section Sec_LibraryExport Exporting the Library - * An export of the library is at its most basic, a direct copy of the main "LUFA" source folder from the - * root download folder; this contains the library core which can be re-used within external projects. - * However, as many IDEs attempt to automatically compile all included source files, it is necessary to - * exclude some directories and files from the library core export to allow for easier integration into - * an IDE project. - * - * \subsection SSec_ManualExport Manual Export - * To manually export the library core, copy over the main LUFA library folder from the LUFA root directory, - * renaming as desired. Within the library core folder, the following directories should be removed or - * excluded from your IDE import: - * - Documentation/ - * - DoxygenPages/ - * - CodeTemplates/ - * - StudioIntegration/ - * - * If required, files from the CodeTemplates/ subdirectory may be copied to your IDE project as needed. - * - * The resulting copy of the library may then be imported into your chosen IDE according to the instructions - * shown in \ref Sec_LibraryImport. - * - * \subsection SSec_AutomaticExport Automatic Export - * If desired, the steps indicated in \ref SSec_ManualExport may be automatically performed, by running the - * command make export_tar from the command line. This will generate two .tar files in the - * current directory, named LUFA_YYMMDD.tar and LUFA_YYMMDD_Code_Templates.tar (where - * "YYMMDD" is the version of the library being exported). The first archive contains the exported LUFA core - * with the non-required files removed, while the second contains an archived copy of the code template files - * for the current LUFA version. - * - * The resulting archived copy of the library may then be extracted to your chosen IDE project source directory - * and imported according to the instructions shown in \ref Sec_LibraryImport. - * - * \section Sec_LibraryImport Importing the Library - * An exported copy of the library may be imported wholesale into an IDE project, if the instructions detailed - * in \ref Sec_LibraryExport are followed. - * - * Specific instructions for importing an exported version of LUFA into various IDEs are listed below. - * - * \subsection SSec_AS56_Import Importing into AVRStudio 5.x/Atmel Studio 6.0 - * To import LUFA into a new or existing project, the following steps must be followed. - * - * \subsubsection SSSec_AS56_Import_Step1 Copy over the exported library - * Copy over the exported library archive created via the steps listed in \ref Sec_LibraryExport to your AS5/AS6 - * project directory. - * - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step1.png - * - * \subsubsection SSSec_AS56_Import_Step2 Extract exported library - * Extract out the contents of the archive to a new folder. This may be any name you wish, however keep in mind - * that this name will need to be referenced within your user application under most circumstances. It is - * suggested that this folder be named "LUFA", or "LUFA" followed by the version string for easy reference. - * - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step2.png - * - * \subsubsection SSSec_AS56_Import_Step3 Add the library files - * Open your AVRStudio 5/Atmel Studio 6 project. From the "Solution Explorer" pane, click the "Show All Files" - * button on the toolbar to display ghosted icons of files and folders located in the project source directory - * that are not currently added to the project. - * - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step3.png - * - * Right-click the ghosted version of the extracted LUFA export folder in the Solution Explorer pane, and - * choose the "Add to Project" option from the context menu. This will add the entire LUFA source tree to the - * current project. - * - * \subsubsection SSSec_AS56_Import_Step4 Open Project Toolchain Properties - * In the Solution Explorer pane, click the project node, and press the "Properties" button in the toolbar to - * open the Project Properties window. This window allows you to configure the various project global compiler, - * assembler and linker options. - * - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step4.png - * - * Click the "Toolchain" tab on the left side of the Project Properties window. - * - * \subsubsection SSSec_AS56_Import_Step5 Configure Project Toolchain Properties - * - * In the GNU C Compiler section, open the "Symbols" page. Click the "Add Item" button to the top-right of the - * "Defined Symbols" section to add new symbols. - * - * At a minimum, you will need to define the following symbols (for more information on these symbols, see - * \ref Page_ConfiguringApps): - * - ARCH - * - F_CPU - * - F_USB - * - BOARD - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step5_1.png - * - * Next, open the GNU C Compiler section's "Optimization" page. Ensure that the option to prepare functions for - * garbage collection is enabled. - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step5_2.png - * - * Finally, in the GNU C Linker section, open the "Optimization" page. Ensure that the option to garbage collect - * unused sections is selected. - * \image html Images/AS5_AS6_Import/AS5_AS6_Import_Step5_3.png - */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step1.png b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step1.png deleted file mode 100644 index 4f0c26f374ca20ea74c22fc47a66264cb8d1897a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98201 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�Qmf0fBjLJ~U8);@9@%%svH$AUGTvKBo5^ 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
FPqH^r|^y4RA)#RWsuiSb%AAf1zTW*g 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 YNg#YQXZJ!({000eE2zt(WnTsU57kNqO#lD@ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step2.png b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step2.png deleted file mode 100644 index 6e309ae4151a4e02a859aca3a48319dd43807a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100532 zcmV)@K!LxBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0094gNklG% z&d%(&J3F&8_GCwbfW-zUJdAB@V{Bs#HVB(+l1P$35=rDNl0e2J5d&c5J;Q!12P_9H2P_9H2P_9H2P_9H2P_9H2P_B1nFF`na?1k`Jg|82;`iTwf7Pm0 zC*l9sUw{4Sr=P}sPe1+irAwC{o$$|*iTWI#1fN4A_#8fT=2U>JoW)T#_mmrpBzct(^26NOj=(mQQKSy9$rV z%6xD{AKzP>&GUWOfL%ID#*U1oqhV&MEcD*X)#lM~FCdd`u^=2kM_hmX^`jXZzSq9; z$}3}A=i*zh8`}y;Q`_Y~IuCpU>;m`#1e-N$)^pE2_s%=-oU~-g5}>j#e({R{YNMRw z0WUvH5`y!=@sT6m2h+26*za>7&SxmuXVC96;P>et=qKv$>+S37>nFk&`Y!*tKPVLa z^vb7C{j2}!>FL2S{>J%qclUJT)79OD5BauR=gdV5eO-3F}~=pPsy7<8WZ!0<3Q zX0kEL;DEg{xr$*_FvYySQkN@ZA4)1abO@X}IDByU!0-Xk5RWA=5<>$6fx4JKx~G`? z+%LgCy1eTke!nOG#XXXY?=d6K{|gUAb2Q2*!Z?cm@tqW|lfJVl)sxAltowKG)E}bW z+eitgrGHA6a#M zmyr>Gx?{ScL{|@NX~mL$^&Ha%9$z;Xp6X}viu#VslyB76M&!;2y(;olR7W**^N*$=1-|XEY3CIeJr;u4G(@;;qlps?)_QqqZ zyz-otE6P-1sq3|%S(=!c-q)k%WpEyPxofg62=}}UJieydq<$IzGw?s){Pn)Vyiy0M zTC`{phIbHwBuE)l_{vRJ^;MQOtz8akUAMe#JyGZSgepkT8_V1&WRYV5l&Ne zqAgg~A%2OxbzsO`*0p|Z0_U+pQzN^h1H)K~V(jE09v)hA$jB|Fd!am6L8y#?nS;kj zq-InGX5u|5*i1T2IxAIRCeWHcs_%3sMr8uj>QFLdrb?>D7#BtdgWd~Z3`Wh@PvDF= z=XNqsdF#L#>HgxmXK2DVAWIxDZCLKtFSt8^1`ZX~zXIz|hDs&_(8N~+Cz;?P)b18aT-lT94 z+5wp$Ak0CvDD%8aX}TSg!m^A+*AVAH^b^TL(Nj6^9flMEAI;n?a^XE^#g!eUpcNhy zCXLHY6JxW)z|8foPyBM%Bj2?wjToExZo0VuS`cXA0%rK?!e&yZi7qrS)7Z@197!sC znFSJXSj$m9yIN{jNikKk)Wl|qfth|kdf$>G;9)#qX2Mz*velbS8rcdqi`mp2mmzN} zb#uT4%w)W|US#oP0@?<#B`uroImd`(GTLoIyxoTP0 zs%1T^mi4VB8eF|>h-o-QlB+H>f_c`A2%~~=Ve`bUKE&# z>P+-zC*6GW%}}E0LCmi!U$NNlqzJlr53=IR^Ky&oJ)Bj8E1?g+^=Se*JG2HalQIcb z6Y6Yqw}c<3Z|}gOPDJYzeI?RcN9N*AAdM7g{L%1CF*(|0 zo^4~dRACe_7BqheBf)O8Pqps13lEj(-m0?^pkyf;7%U?W4-J8I7elp0C-tyV126t_ z#opEs*HFJyi%}s+OoUnm$q0MXW~QJr>URU1Ij?Zf8wWtzAoQd9>hzuNMD$`5W;4=` zPih3J0#0F#@uCMZKFtreozXt(cY{L>?`1cE9#oNm73C*KT^v=e#p1M>spMW%nWF|J zST|`w*5FE48ar*Z2%)r_qTmGPi9tbpM+5f6t_+4=iz<&U3kizFtQ}DeE3Y}+2Hvj$ zv%0&9y1K9wcnRlwyYMTQ>FMbs?KjWd7}a;on&tq`DClyy64*a=7pM8diRUiqt=!kwpdCiUnW?Hyg#`o zwO1pKTZ=xN_U>c>iG4NDnPGY~2cc<@7OW+D!^i{qoQVaaur~q%Y`o@AAaz z&5|l1UA7^{u4D`sgMeFKuKG(pj@HpsImXjEPNj)7mD?HwnEB3PnaIAt?8O&f99xaq zOV?c9Q(D;Y$$Oy4C+{_V@?Ohl@3nsRUfXByb$<3<*YbCJmcQG_G`Qm3A)8 zVEl@&xC9pta1Fi7-$jKW)ZD&&Y1{Ipt)DJ!{&Z>6r%S`1F73`rzvTPhcFk+Rv0we_ zS0@3Vz4zXG@;*~0UXElewqCJBuQWv{MlUDz&h{w6ST|wnJ%F{iW|9LA41%bhgX*o1 z*S#dmmuIm%vFM{1IQSR37R4u7k#1#s+}Mf%j=~3a)e_kFS;+bR%BAD6%=Mj*3#0} z+}zp(!a+-0OLJ>;OKVF@YjZQc;@9?;*7nx6jy5z8ZR>*g#o9Ca4EEDA9vCE4!@|c1 z$RlC6Mh*!U44yTJ@{SWe6TQ2Jh+1liZUtyaCW6%9(7?b@KZrVXu&-~hj}Q9$>Acu{ zDACGqd>S`ZV=pQv@$km*LnQ+|T3Ci<1rZq7+poYj39OS;ZlyC;;QKn5nHS}N<(cxGq2Ilcs9#{0Y4gF5HFo;G1el>>~jWM|j z<+(|U+FEJY(14T&WRS+-jmJDH!Jt9`s;wJk03;j@8{<_G?v*mlm~d?O8>6LB%4E^q zIV6U-ZsJ~02E(R~PUbixC_xU&+H?ST29+rI!E?5=v!@d?mtYSjGWRA`7>f)|l<0Tt z(Rb;~4UL@hUJ)%BngRY`#h~S)t+TbYgQ%sWC6;hT{nXmo+J=RtyQ2f_b!M)p&P?K+ zf>_My<(t|>5cU$-V}LE2MADlW6*Mr~xo6R#3=3%;6Idul(F_jdUc$6K;vSgH^KM{> z@Eao;!Z5LGfwL6wY9QNfzU1t|#qREnXm#THotI8bYgp4xCdybMXpYlE(X;gQF!c`f zf@nSACz54^w|nF@#9DNEsVVY%5NFRwZ5TznOd)E9d}f6Sm)|(6;?&f(>8^0u$RyC} zNQar91g3Z9*1HKLe3d-fB3;`)jMApj1uC4Ey+1mOXVa)Ffy5BdpfNZ$^9o==7@NSL z(X?sw#b)MCU=Zuj5d$;fvR0ZUHE8s;2%XA!XUeo4zzody#rg5{+g^7HbFiVR7hZS) zqtrYpbNS`PZ~f|$>k|+Pczrui;Y+{&bys0-?fb9Sz5jXx=!4fIAH3f5!Rsx{UTxXYNFMA`h?2Rz! zgE#6wc%wai_r>2m+a+F$((I(^r%%U}rniyWV&qqv5{~5{9uWW-4Si!=r?MHvg3o5UnQ_>mGHmHa1?htesjtzueq z9DgE#WP-;a$Fz5nEZf@N(%jzM)YjAlNgC2EL{(94K=^a?W2_iym%bBKiDm@|nzlLOcUkHvy0 z;HX%VVWYR?qhgS^P6hA?k^zbJ_CvNN^+H!KN!vs?ps(Fsece6iaTz>(JHNrHlmL83 z8r5oR9H!5-DZr=Z_o;7F>&)MnDm&iU@5`*srY_Ls3ZZ zJg_|#mXa+^AR043h6Lnjvp}If8uM}$HK2*xAmASx69nXdB6#F0M@J13WKTmO1m4;p zU;s|C)=2Q4Lvm6ZaOwl6u+}EAHKu5jWE)L%M`9~Tc#N?Jb)14jgo5zYfS`B~2lik( zV9YpBB*=kR(?wSi;1L+Zx;O_QqJ0F1pajFB(c00{+y)L~Vq%^)G&DEVH`UiSyNJ$* zTf&X45pcK}>jqF07=nk58aJAcNhr%-|K@1qO!k5sJZNbJLwj1<(Unb1)SywSsmNLe@F*jNf&%M0U7wF2-@F*Xj)>ww+} zG4B`8GDY>6FCdhsmkv#BZImdB6AAe|!RbxW+k<6<7LbniZVZXG_HKaT_V%6*EGD#! zI0(&Lrg*W6xtDiCP~MEZVT6T<@Lo4=#HdegAxRBB>ut=VIo!~@oQC0O3Z|8lPGU>R zpmD^&%=AhajX|SnhL@_dS#YJ93%yN#XS1X%HFb|(&%Fek^y1qDK6_riB`|12n?;~; z88n*6cGAt3;)SZ@IUBP9+=f&yNLe^mJ5 zZ-3F5n^FDNqMElB)iO0KA&M+n)U;$#>ykxnOBQu3S=6=UrJf}(^)7j-Z^?^7<{feT z@|?R}XPlCBAujJ+@)D{7wQ$XiOBRLSez{@E%OR%PB`>$_-hRyRtSyJI{+JD zY)B`413iqO1UPke^Z*hA-RI> z4&fNGCNvWKfaYE3Ml3<{prSj{qv4K@l1+@VKy156cj@T^9)nEZ27w-Y1GvSFM8yGx z25UUsHUc&rj|Pt zi&U zW6-3=`nm`J0}4P`Z{gwB4)i7JSw?!)074YphUmCunO;_I?7-Wb0O`$N(M)k1>+OY;9_b01E-|@I(lQ z0gW&pX+MR!mHH7Ks&5zfK-5{R=Ax?<8Ay+IJxI~ysF)N!#5nH;Dr=6kV66a$F*m7~ z(cM+`Rh5b=E9({EWOYMzEqbJ>z5#nH0Mby9Vn2mfC(&84{+3v(9+L*7)3BJf0f-VY zhtWaKOu+)e%U2^nAnw9ck5S6}p+2RBNNpjBeos9nRCz#jTw8N{1hWr(AgciYPoPsQ z!wQ>eofxeKg9m7l@8g{ggIIkhM6V33z;s>&?1?Am^+F^XEk82fLA|n=khLn=1!xU9 z%$y;TVS>}nP8ZE?^m}ttI|f6fu@$Vw3fa_zWu&u()(~2z=pDoh6t5W0I*B!niGSi> zX$5nLc60i$;B<8M0O_^0b+@(RMqRBqkVOegkWnqIx&}q-Q7=$72jCZ|NR$d~vOnKc zaOv|%mPz$yi4{AJpF@o1ENVFuyO*dp=1m~s>m2104dbbLyv}AL^O72YvzfMOObjiO zdYz5NpfMiY^*ZmFa<&(kxtz^L#>2!mjiNL&wT`|9jpA%(vDt(HKmaq0mf!($FjHEw z%gukipO%&uj4njM!0f=W>k|Z+;SyK1sPNfe{-|~T?&24pD1GsXvKOByfANW`MNd>O zdc1bg<8_N33om-CanWPVFF)4u@?-5UKh{C?XcyC>+wXKCF^vpy9>1bY=gW`c5?qMO zK}|1HZ4HYaL(Qlkcd2^uiHet=EPv_AvX`EWY+e8JGf#0%YSc-QQ42EDojr^y>vUaS22p`S=lR)RaJK16V*olER$gCLP~(RQq0 zGk(iD0ODooaTa103%-z{Nt$VHg&@l+6kO6t4S;M*0$GD2`vN=FLiiSHsI94oTn<5v#bTC> z>qLTQzy{q#Glq<~kf{&GXG;?RVFY45s;UN&OkY=BRaaFNs;mUnR#eoMSA;4w;U^OH zNII`?XbuwsB$2eag|JNvY^%t;N<=QwC&cgyD2|B43+yEm+UbD6;Q%UfgMmd8$qmun zZtN%z(uOhAO&BD!F%KCI!ZGBYNE>8g5`cst28nE^&=gg!(0H^?HTtElQgw}V z5K~2MMR`qGS#@b?bxCP;aY=QFP-%5(8FgPJ^%|o!8X-iEG*1;W)q@N;rwZVw3Q%PT zm6Vs)mX$G;^N^@SOX@1CA^J0+l1dsUs#rNjPN=G~uDTkKK0?@xcL&ttkOUvW5UQO?D~ z(>#JzTtBUuM1q9n7{zEmh@L_{6wc6|5k>_dUpU;_0HQ@nRy?{yEwgHYm1S0wJgKvX zMSDr4a3d=Kf|_hUqGA_JL7T>;z)T7R#1DxBeI@pca!jk0HIr-4J}I1VVmBr7k{XRc zqYeb3RR?IOi7sM7dAUu9;{vqcj5VFj;)Q2W8`%yrOYCeG&(qAs$(K_fa> zhf&eU)*3WU7#`C%0x&~gctMnTra8{1$?t<+e(I^GP-n#R(HO~V%_w*Y=j9@^VpRC- zh3B>G+gbR`L!jbk9x8q2q4I?fRW4irs$ICC?zsgG&n;+tenHdo3tFFF(8ko^&`Y=8 z?gfN6gY!~G%Hu*@4r%~BM|GlR)L*f1LHRQel|B1#$+Hg^J^OHY)0&@6|C&EAJLS|< zV4A`z4ti_So3gW&UrtJgK$;5YEd^Bu`$#y_ycmbDeuk{V*mOjo7t|5-+M`#Lv$IR} zC^ZPb!|=XmOCHgiv00;7JhD9-%ROvYLt-Cob+aOckO1C@Ob`J9r3{ga-i~yVw#-=v zBAeyxh$Y@K>?cF}xB~XNI_P2Bn+1|#&zoga(sDq*QN>gPK^BS#NU&@I#5yi``_P7c zb87?wdWbg2NhYqW6FC@E!GGxh5_36;(GaFl0OB$V*VHzIu!jv{7m5o={3P_#2U`a? z6|M&$gp?VosKQl{xlvCIgzvJln$nW0;^NBUqRJwnVtlP4xxW+zLgf&=Y8q>5BO!=f zWHf~h@>YT|B03P%X@RiCn5P9_aWWhR3IdJ-xMHb71Ph2h+{NgfD7JwN1k*tn@bnD; zy#qnDHnl;FtE-Jb4z9s{Ye?o}YOJYltgc2&NEoWCqkG{l)Z-9Y0GT=!ULuDvR@GwL z7~)-LJEO9O=GxjwRZU}6Rk*UUp`xN5R9VqLR0$C?jGC(Vo6RxhTuYf`Wcj3PTNWjJ_^l7*j{SJ5r!@m|L zF<%67MhDf@RhFYWDvLqI6-7mEDl8~3$S=#wE6vR>#oxR<9GB(imlYIN6rl$dNUJGz z#z|SJ>Ri>c+`q*|=wE?zfO$1#fO#cVxE%dnSX7Cs3JO5w^cTm4l{i^Qf2*XDLMl+6 zpI@GrU!ITq7FCrL*OZrss%pZahNebV-V(?R)3C>w#Nfn;EiI|mgGyjz1wllh$HqEb z1$_$;9d;<-b?G>yVE_Xup+?ftIjEq9Ac5ckr7vP&fFT+N-XpEAi)tEcu@wRk2p|Ln zHK~%=3rqadSc60;sHGhSnFPr~q?;mOj7bM9R9b^sP+E!u%oI#RfKp6J!MAi@V|=nw zi}YID9s;q1V`ctgw#u%DMyF^Ma2m!i<_M|H1w`@c1Xn#gJ083qjR9INtwDbk6;>AH zSLElG=jD{==9J}Rmt_lO5oO_IK~+&nsH}pp8RjE&Q*D4fSek;aDD!FqptF8q#&>I4m0I!IBbcl_DU<65>)>Ip94j^cboUh15g_GRIGV zjun{5p{BY9f*dXF+!p{30796vSfU4D%g5UsP;ob7LbYR#g8)n z+Q*^tbP4~(U1%Y~tHC*-uk;gDXi{Tids9nSTL(IUjY~P!3lysW%&dKGLCAsDFjP#g#(~1=J{Dvh%bhXlAixay@gw0?ws)9yNylge< zJG!tL>hr>g;P@dy1m<|IEb)|Prrs^@L8L0su2iB43DQp7f$DIn(I*VE^KYC!WCU z2s@t!=L0w-V+;p4rwf?p^+{bZDt!7U-)-K#E$^{=K?RT9TlCnyB~RR2_Qd@1C+1f_ zF~9c7`E^guZ+L2c<5TmSpPJvo)Mn6&x6IVHkh|lIE+FM`Aub2ifu5u~Q8Vf3JC6yqDUMsW=KZjK1=-hB<`2wLgJ@moGFJ~ zUIdW~`V%z1vZ0bC;A#k4p{ClJ2t+_^mJ`l_XyOn~0@8$NBN?&? z)!?ZyLIBV32qeID@rHCCRJbreYJ-6j;9pY+*sm-Eo2xMjR3}=cc2X`0^3V-b4zk^O0u(yv$KlnZ#ItUYgSfqW@b@FM&W+^%`D2y z#8*0*ol}yFE-NfAEUEx8x@L@BsA{8YsUD)7?2_DE>f!>FFRUm;833(R#6u2n_E_p4;WbkvAYH~jZN(51~gTVVF1t@0!qZVEd-Fu zEz8XVoU6z$KqG-7M9~K=U$_?fUa*3+$DJLpLKL?&m_b74h8YB4fazmujTjQp;D`DM z#{dQdpBQH<5~UwQDc}U?k;vE*pb;jHq^Ri6if+857G;Gk_a==9A(ff>B&_a|iET9XWYk4F9|PlOez0n1tq>O_NUih(&r1t$-}>=KUA$OkA@#Pfxwj67F006dlj@FWjS z$}P)5w}Nu;mpZqAmL{%Q_+J4mCw)g;Dh7Wro2sxDMS#sB%~mE=@bnwh~rqS1HVL1SXzL*fu1F1=Y|^^P|dNYcO+rl;9hh0f>LP%)px z9#i6Plh~lqWtEq}tT7%oiMpVZF(fmxRgfy|)h@)Hvv1xR1k3uO~XR{RW z)R+|oFare2_xsGg>!HN4I#3|T_+)2i<6Cug^}YAr3(S_~`JgrddpIzEjCUSoP$w#U z;Gh5BiVxpe^|SA;{n>ZdUHILN7k+okh2PzF;dgfa;yb&4@$K|qoRjs-bFwcwC;y^z ziZ42+^rCahW9jK%|4QFN?v68NnKHhxkZV9a`+s@PzF(Y!no&RQvgyL_Zn%){yY9m8 z6)bx8JOAU);sCQ#2$+eA3~Im2yla8Y0L<9*i!F|53%?7% z3>q^6X0)qKAgUIoWwbL55rpJ0CoBT4A} zpm~#EeK>&FTMrdn738Fvl5)slkj6*>f(r8?ltTkU5_w5Zc2O1)OW}~eA(7`oIa8hw z5ubO&OYsO`2=Pax2NK$N?;H{vBuED}krD&UgiyuAq65n-Ee-Xw(c46r7T}q^wm4b_ zWM$ZrHHBNCZmKG)EiSCiFQ{^aKgfSfIpsOI5C<#s3t+^BJ3@{GZ(&>21i7ScPFpHH8Khsmm}#A^6q+`=Nf+Q&0gpH7~b32l@@jta%X4A+rMFLbnNVoW~C| zMZhrValjb#PH{zHZb^0)pjScq{(|&<`3@DNr{inEzJ2+iy`c1heK-T!U${S`C{m$G4-EkE zjc|$FnkjGJULsVOo`KPVO3ERm(%6H)85`3!Ls3jxVu+RCHrQB^pHm8KiNe|0rP(>S z9dIB9Gqwhxm949)ZN#9BkVdPc4c<*+yNDAVgAL_v211(y>j2)io4xByX=SOK8M#8aag zStVH-lI<(px3_RFQNi9l1$%+evdVJuNofXA9y1Qhpwx-&3a}K;ez1Ws#Wh9PSb+|ifDj%Wkf*y-`NEO;A_Pe+r(`r3ZmGi_M`Z)R2|<){Xs84+ zI=d(G)mc{w{t3~F%?lJ(a#r;N{qimwBNF`8HS2)}V3BP*;G80L-Ag%JusM zaR~!(a^bJ4s;c?(=L48!#D4bg-;WCG`QycV`n>BZd_{%#{r#VpzyH>XAANJxkG{G3 z{BN#1|C<}n|K{fNzp?!%-`Mq&v-bYv%#5F&nR&sPxfh&Sc)^*)7o1sY&{G%vLf=>J zA`QTKU95yJ%;y?V&%U3Yx#uTmqGr^OyR1L|n`_Uf`>sC!?7SDA{MKLo=Xk*E>i}kA z#wKbm$6ttTFc_FACk?}%gj8W-f8rRzIc6tfzCs2eYO_=J3pLTEV;vM44lskUnFeMO zpqZT(dU%7Jb$4RTLMk$H7+}2?Uf6`h@OBqbfT0vy4666N<7Ce^NQBKC-x%7NjtW&U zLz2yD$F)W*4;?!why`rH1uOxFGKz6aaz0U8VHUMxJjuJRl0xm4M}qbz#z&F))KG4ovmJ)fKg6#T5nFP=){t0YT;M-IKRxPwpQ2YtY`j zJwyz&0F%-I%+PTFX2k$z(3=69Ufa&h^-{kV#- z84n>M05fRD0NBv)gvtny0n5>?cY}84YC>&9fM@$LLI{|FMGVYfgsU}Xm{Y7VD+M=z zD}YZJ?F#{+IoJ#WYehAiL4qNeP!#SDsFf@j>#(mOKmuS)^fL^Q014crl!_S1m=py3 zXhVUp0V$CLn2~}S^^?X-BD@o5AqWJ0GVAxCm!k>7`yepmbbuK{O7tUCRRA7zYYoz{ zQ-FqP7$!)Jz?f4WxCI>wY)qg9yuweo1Pz1U3^F&yBxL9Yb_pX8Meb6fa*qNt%>9JG zjNw^&(f;f*v1Y{FgudDVX5F1omm%^{Beq4tv^7&wT}U&l6bK4kK*v+{_T9M7a>dY8^(5?O`khP;r;ni9%8|=Sl^wb`i5dOh}5GpGntydNL0$`?%y_7lF25Iuqo=6+47-}l&uyhc-EUcmx zgJ3z7hlDl>aREM6G?c?q8u~GYXTVF)#Syk7pjC@@Vl)Kr3JxQhN7 zz)S%-fpaE_GGDNn#-D=9$mE+4DXI4x$dXf5+Md3_0r*<$6uAM!p~+ihG(j2@htAj0 z^Me>P28o^@B;b2IV3xq9F+m^@-}GEsZ{||_Xlxb)m?ib%GxNln#-hH6H*rFO;J_@1 z+g`vRjV@<1@i#M7j)|3KlXt>Q@s>HjEH5|LO+YWcIVbc<6o8Tp1kIKv4a_n#vobO= zO+tC7zY=^M?{B?QdE1kBh* z&H!eJDglid&;^`}*rA9$g&@R}wj_@gCTyPuNJf-Vz}T#a%;X?IW7NY`Ny30{oKV9ZGmUL_hc@(WVhIo6nQU;r{@BnPt^v>(zN+j^1C z1Ts3X1nXEJ%oP?n8Z$!9?J(WMRft;%U_jnP0A@MRijb;`^i+(^6ycb`7>mD-t_VDVpSUt2H-T(l(NBO0pOX&W&{oe zo9)TnE5sTz03ke@m@<-yri?nr#|&X+;L1qQA`im47-TZGVSGYLGq|V`Fl%6IMgnF) z5oE*&oJ4kHE}?wUp+H6i^;urXZgv^(j+*Qk*@h5Cn1<4fG+>0jSP_bGXaFLfe$?_0?6)GcD zA=&#yHD=ImL8oPC%sR;OP@6KA`j|47kSU`{nWb5|75PONs4xx1!#2Z`4W^8=2V%hsDbeZ=gOR7OBq3@6yQl(gKf@HoXn4O2!6U zb6}(mOLb@(J-`eL2rI*B#S?uy;Vagt^GyN%OWEJ7qN))Fjn&wPf@vbm1n?Jdi*TT5 z%y2Ch2d#%Ea7D(AVyQ^R;f^UIR##RMGA`A`@Jw`Q!bVZh0g|yv0_`y3saacylXdlY zrNSyW3e2W({0~#MObpC?1A%DuPCUhqZ;-~s)^{c_bH(rWbvASPM>)AtqULzP)0%mK z8O~_<;dM3>bm1Ea#Op4V7^Ec)fT=m`8weyR;`NP$o>KID%0CnP2?)$a;B4kawo@Dg zO~&Q}nAO*Zb93{(B%WXiJ}8irlb4;H3(Cp@JR_>Cs=nvm`;hP_Gc!9Q1K2D|C|{oN z!@w-&5`3+wthyJbj32+Z`WNS}zUbU_7oEHQqH{O@>fCJ?pS$zobJH$9ci+Y5W?p=5 z_QmJsUUF{XCEqK)^n0b3epkr6BWcMl{k7|i6f3#(dxe*NFaHv%0afk4_}sl*^Y)9+ z-Fh+I3wOkQareSMKKrfz@&CjN{=q(G6sL~e!_2T$PP}p*`;L9gqMl~4ri^0QDAD-{ zzlk-YnaqcjY3yJIREGE*$ukYLL7^nCZSrv^YzDm$ zkz*c1Z$WbUXD6#hau4Ik6STpPhy`rQ$hoSNDI*NA5NjLmF$lnj_y-gskE6PA;4%u! zh6kZg1ju7XIi}e`Uj?Jg^L>`Mm0Hxqg-O)yzxzcQt9BKSd?E`n76>Okz!tWwk#CRnS| zASq{TR=8iOzw!y@?ahY)B$RBhQzcI`z7`Qa*tAsz7a>nG;3&cBjL?V#5T?^HwFQl1i13F@>#T;eCXxK5bj}xiLG&%N-#B;7346lXro1@=WhQ}P2A4*Sz9D$CSgQjxW z589U@|1=K!LB5@&?4Nt)W6_%p71=4YyUyRx!~;M-U_< z3r6xWgO*7GfzZwc`Iy0Nj}>UqARl7i$PQ*ygQG|!M@Pb+0?EXb5l_nAYa9_oS#i^z zjs*XpB^1$gR3kgt$Ba^{a6o@7iO`rqc~0({+K!RHiQ~mb_Jl%e*gNq2+I*X zQ_B?lq_N?mkSNMX!$y#dV?rYKQY%(J3JQW(<7_5SEh#nwm=v|oXaeYu%vdzltkb?xK;kiTJfi2v zGY3tob)4F>Yx1?8HD;0Aydp2%J@1jkK4y2#eIz@lKqxCaU#P0O_TGE%hmet(mFJ>I zAAccng(%>?su`uxJH&o93E{8ERWy8O5LjyT47?-`sd;R`{zSDv4J<@p&`p1<$+=kNL5 zPj=1tDekhB?}+>2?uD-}`p#edMZ9qNDk>udGNusuL@IKzj%aL#Sfs#=LMj@v6H1uB zs@RDVeNh`mYW6L;)Tpx+CBjLqsU?*t(L#CsM!< zj{N2(j!_mSUvmls0-+PuRvhGw&7xF^_RANFa@4CzjP9f*fEH z1^9NBKc2B`;W<%ST0 zjG{ns-e-7MP|c(!g<+3$Gy{9~R20ith=3AojRQ6+;%JQ`{ZL?i6$BEB2#U(c$X}u| zQc#(GNYw~lLQ(z+n?VjkFaV1E2+t695y9gSe=vk78YczfqofPi%9c#x&=HaSDnNKC zV!A+?DGr3CfK})bBHbwk45h@?5JX^%<1qras{r>Ds}texVG3K0E=K=SG!ZDrIQR$5 z7ZLx1AQ@vhQr*xHk_e3w5+*kKA_sva=x&m7?t;e=gm2|5MFS81jFguQXoox-VU9?# z8DS*M4wKMCaeROBnIr`)?nsJg?CygnxVDK?t}|Fwri?HKMx=@|!bRk>#33R%_J)ML zF^D}diR2_Rgu;Gs_;{c)fFF+fD6#S>VFP8aMlVvhLKXajV?T0OMUF!#fgdS6BkzoG zJPacYhK~F}s&%D(W%oq~%n+h;qT4gb=eUj>m{Gz}V&F+sMhYBHNvk=oy~O|EaQPhJ z(+QU^;Ws!|el)HO&jrFx_!WVL06~Gu$VQs#Y^TiT>|@5JjCeW<^h&0oQ1viyVjVaK zN5Rx4Mo~IDidV!;;5dq8DIgkVQr#$9M}lXx<3RC0n8enR4HrejjE80OZ!#8;wG?Xw zmR2kpyr)K}j2emclcO?9c1pMb_ps6odo*M{2#5j<2`6zA_?bP@OTE-1sgOxF6FQ z>kO744$9xu+=&<%L~Op!+i)t#6NTkKlMty0yG4lnQI9o5`Hph_H)RfurHLZDveupb zkSPKO`LF?rk*h5kE|Qi^kQK+x2md9;JzMfqPCP9Blr6vrWCBZX4*DwSks~y6I7e}% zW}|&k^f_0V0b}JVcF)#HM6lCG4~PpToGiR~vHt~}iB%EXRs9tF15p|IGx=n%5wz&o zI-BXJ6+sLdMd72(8k4Hd0_uE5X3*%0p6}}}m6FmdagddOsz}p$&&$#v;Vxa+EFcff zcq*pGOh;%m1L$j&qhK>(ov+Gq1moFW5|0D7-F6!!Uq$k*%~SpLLNR(2sspLBiomWK-EfvN2?OQ|N8vAnMhD86}AsUdezZ9A}@v7zZR| zod6&iqJ02^8A){k&m;#L))P)Qq!Kq##vx83L^;refR0E7C-L_o!67`T9T4Ye# zI>V+rCCI|xR?d+{N;3+R&H1b-FIGhbqq{PwJE{n$l~$578>!=1uEjw~RcTo@iIS+_ zfn=yZEXj5#JrU(-Qt64bDJkS3N+;l?NoDklL{cJiAb4g3UL4|J2Db+wX9|H)7xJH zGfKF8sFj>_+ngBCA;~>R#Ig8wKzvSa1_d<{g@#x03h1vA$8l_Z&h+JELPKsq z72K6$(g5sU;%L%5nb#ye17<1CtFv9j0S!@c@Bds8%Xd{q} zM?l-4!XnKQb%7Jj2qt{kE}?uOlv$heo2fM7`jN>si*?H!E}t}t%0`i47)8esV{gg) z2DU&gCJ}C(c(&LR;nX955SW16-RxjSNliFQdq2gdCxb=~a|$e^b8_%zib;-HyAFXU zHWZYQkOK2cy60#TMPzNElr0E%Nnpt_!Qd$TY&?%esi_GQ9I4Fu$sJ49CBQ{)6^HLf z%vc~F@rdSl{U$N2a zMA@JCucQMKg3NLMf=8fN(Pua{P?RVp9_@dtGp?_$!uSeN#iHp z?k3td_YeE${vmVjAF}6PpMUT5h4)@xa__aJ_g`D_z_pd21=rTZr|Q_B@D=586)p!A zb8V;-HKTsq2qZV%yI^+Vicfy|<$sjbPfuZ$V0!xW(+(dwEH;D`yIc`D|2Y0Xl02HC z5+j#1+l|B$5=>KAMcUqWNEPr$dU&H#N=>}xkrf9KsF1b=|6@;siLn_H8B=>yom893 zlg62^38b;e&e93;5gWv>Ll)D?T2c}si6J6XUXZA;ln^{)a3w~GBw})&G|EiPd8au{`Kd|O2J3JBOPVumt04^;T)k3f#VR-n+btEC`l9~HUex+ zk|h@66s7A$f-K5lhREX-d>nVAs-QH3+~0u0E?fsGO41pVI8M4aA}6CUi~D4Xi8RwJ z-~#eNCDH=eN%;mKJ&;zNpxqdT2f|E8)Tn%}Dn(UMa={0w@!ZU=TLi0uzjCRoJ2M^(|#^hv}MA^v| z)R!FrBF?ji)Z|E!7ft^vX&Wf_8b1z#`%^Fgw!JhmSyS$EG@istrILkAN!i%Mc2@m#pF>(@RIQucJa@oTi+iK5Ic~6wz>^GYmo~6ST@|C3&kE7^nln zfn*|x3n{NOT+1jCnV9BwV+>>bb6!4Df054^;2F#MBJRr_(ONW;hBuq_Qg~98nH?P} zBNn!=zo2!2Vu!LAtEB1}`B4N#+8$#@0Qsn?DgXe}O~s8S!Gvf4S`jj6R0*b8 z(M>2FhLjY2M6w#nSC!sSmW7z4(iFQTdd4qDGoFG}<*;6s4H`@tnkKY)ftjuoUUQRx z82hl?VWc559xq1;wMN_B|g z$Ll9nOXeQ()Y1BY$|W&9ZK6p+IjE+vnIfhQoM@gS)RX2=zy{}NCW@NGYuk7_5QUh` zT*?+rIWT#94vfabVp z0T9K_=wjJ~q4HvDt->&n|spcKH*tDxaEF{q(Hb zXYK^mKXZFSDpdQ-?YOG?={qZ*o>lS0tWqMX8TIErLbuC&d~VLdhblgP_wzSif9lH1 z_0lKU%mHSnPsgYbu@&#OsQj%3aXt_`Lrw=Q+mmF_LSA7w7=le2p9dYFJkimTqGJ)F zyj8j+mBBle@Yo^PZO{j#aRb*Xi!0r9*i`;X_kbf zU$mJY2_?WkOzfRS;hU+a0GsZ2<2H8tO==&3Oni{LWX3Lf{gYlDESMGVFbis%U+&M?NEZLwlPk__5nnH%qCVK<64Q7$fkEr zHe^oq&e^3&Wkl*P0fDspK=6hT4s8dJ@>9NQA`HONKUd2;AU&994921#Y=4uAhMmnM z2_b?aGB}|<8jN#Ia+2aDGIZfh7GJ_m#qL^@F6Pw9`!aY;j@M5bJW=2A>Ic0B4GB>k zF=8ZmMw>gl5JguZI_A~MxskvsjwGZOB^qNqy0EedHiI6XkS7HK1!N*UFm0naSD`%| z5JkFxT-{Ki?7ujBRRj(Zmk0=r)(U~gv>!yZMKPzKFCuz&;uwtqdVJJLHN%FPpIs&b z9vP^NbQJiHUlt66#JpK8%X~o7CxQJ1|D@&@FFrh5`K>{9@>_<^^KKxaUrhNZahNEw zf+jUMuShhnnP~MGJV2^5S|w<^kaqL{y@<3i2#^?W3t};m_YodS-g>-i!Xk&=5AEK&|Nk0{%?9yV#cwC5T zF%OY65XdMUq7r*X`5H7P2m}&5NMmqIyu``PMD3H3yHvmkjlMxvyc)9v`Qpq#AhIqe z%|;MV1F6j#gJUzVKFx%+E`!E^TF2vWx*d}zLYRb`Zo28EmtHC@E64JRMK&>EA$Ac~ zXBR#F^g@Vn=1JM#8ZkZd-P3xiD;hSfYTUFcvgz}t%|tDmKX2XqdD~W^uI(#8J=<6G zGWDfSxC)m`J)PTDP_iwOGOb-z%06=5YQ40n8*`M>_z4RW2%_KV_d)yYUS>vKp>zf#7U?% zPJ@`mI1K_Qe+aGNSma{`$*?2~0ot)}jLc>%e?wjuah#-ZM-UfT93noE63THvVmizE zEw~*ZA}VCV2qBTNNTlPPX;wtAq{VUx>yg+-kuZ-UQaV9w5&?)nGs7DqrPyRM2aew1 zh%zFV#6mSfdZsR`w=bqn>Uz@U9;W&gb}~BMy;Bgqqod>Hz#beqCMsho%+GQg2cA~Q zpX=v6h#^=uLSqXNFiI?N(-`A@2eFc3;*&u2zzo1Ma5w~e;T#x2w3e2Z#%4qlZwfbq z`v5@j*V0|a2lz@PAWD8>WKPDbGBDVjmGX=;fOjyP0`m;)IW~-3;*fJ*6_Y{201U+U zGO!$t3X#7>*+p9q^x|a2FJUu6J2Z?jX4spK2Q3kFYXWsJuz4yGq62)QOITyfC_=YvJ1L^;rp*)vPHGQD%}TK} zW>Z5#FR7DS2gK}|_F{OlP?KmND1UsKI6N*$o5$;eGz`{#dQnmbWCw0GgX(uGSJP02 zoJRg|sFQU}Y46#DGRhwmR84Z0F9p&hfj)G3V zbj0}CnA+;yVQ#*NPEYOYDa6HJWyRz7molD@xwU#I!$2T*gHkO=u`edmnn2aBH-@x{ zzFO0;*wTV23Od=pwTz$^vG-) z6F8emdM*KG8eN!bpQP?mNpV^{4#(3*n!NSKz4XOqsYX>9lUN|G==lPw&8*Ww!l)b* zBy*hI6axmMV(r?s4?p}c0)YhoT<3hQ^?a_n>gphL<&{@~bV=7&vxaNF{I?hVi=tos z>)-zBOMmz4FMZ+HU;g4HU-{ytU;X<_zy6QE`T9To_T+#1?J56q*{T0BT>m?`u%dfxwPZxjvpMLe#f4t}` z|L}`1|NYOu^aao#&iu-&*Ika;jm63}D={R_IOB|y6fn~=cf14Hl4N+M6=*JaMmwqe zqII+@Zj2Z60(KN-+PKnbA1lp7xe-I8Mw8c`XzeIInApHTDiT-)0fpQiXct*+`pV8U zi*B^_tA#C5nt4Ag7m`Cc%Vb)&W*{*VWKG#iw(v#OMg$ES<1_`jI)IRPr;L5c6v5{W zr)e4He-tVcU`E(XtJ+wd;t;SJr1oY+aul(fv?U-mKZD~Ct5X=5K}|>4j8}SckYiz5 z6n*Nsc*|LcN&pg~12C&) zUBECM@JZ*dSZ)nKfTExWP(-5tz~ZJ>U^9e=12zLfgZ(Iw72+HMSL3gsEC-}D11u@b zMty`L0?EXXl@zTpBgDZ)>Q{~Pr7)p)AsJBw(xPfEN1sLrP}FM*uJc|13*`jE7>{XE z=$(hIgP@#YDMGwlMN^4_-zZ>4S}9WRC?j4{*~w6Zl1F)IvUW(JFAr#u2FOl_D59Nt z=e+e98aX>7%Cn1Lq0B)O&PmCr^`nDc)S2L41ttk8aYW>7Cqx32sbufcmpI^nBCXaF z;}oSBWG`!iWW-q6MLHh!Wh{XvRhk7iXmoj+na*Y|e=~EBC#jyt#Ab=JPA3Isc(Et- zm5LXkQR~eTv)PDw>#TH9wV5}wSyG@o-dU&PC4~b6T}m_FR8mvT^zAv$Fw)d| zoOpW*-jojs&X^vUI_pMCHKbZN=~hV60^U3N0W_9Tdyg@WzF=mZg`=PZZ z-U9|^nh2OF37deKQopd$jBFjnRVnJT1Zzh40trGR(Vq+^AyTuEn6U+}jIwwOnI%gB zW<(5i811mU#hbW-ZG5y_>~$u_f!d_U<%P)lYH{RHAW9n<3W5@nG2@_d9zyCT5#VG; zTrM?re3dYh@(I05ga`9BgEm_O6*2fRVE!ooA9WK&2qW@+b2nP~QOj zY@oSl>+EiB>p;x-24ry}YOP1EaRh-8!$f#%kv%GPnP{;hO%doe*+3CphMXJx=CNLwk@7T)1%8@i?;@rp-)tedEjQuCg;p!YKMHVZ~Oj2zS ze5K$S8}D(XN`7btW;_Ua9FpsoHh|QMYdskm;Av9uL%}nil`>G(Bvr9?fFwQhn(Yj= zkzrJ+C0IhEm(&h40@Fy0XMz7mye=JtrofUT!Nk9>`yO0LEXH#@*|f4Q1{{hpp{j;f zLS<=Nt_q0PyKRj3~FS9 zZRZ82wm2O~CO}b8*>PycC}QFWfSDGslA7N6s&{-n&Ak3mX2AF0*etQOCqdTf1U8LY z`4hw>FI8+dGM%Jeth@$|Nex7O4H~@~$W#p)<00O75gH};fUIWbBIaz{s%bj4z|8T~ zTD?w6kC>BPj?Faa@lvAe9U0e%^}NyjPx!v!z3Dn!XIvhe3BCqIeF~UO7auc68)oh- z8j1_Yf>Eie$fVvad{e$)vAk!utl}TLbxSWlDCBjBs3bo^hauQ>qMSvO0qbMn9sg*ZN z)Nh1M5Tg!e&gK}a%MO{S43TI00Jgn%5 zFvsq`w$7fWwytn&@ z5P^^p8UUM8YB?^50-xB>k+2yfu_)kY{i^8JVhkEtH7CwysF`}-@kM06M0R^4MHU%4 zio+NXJ2@AbCX1X5fJnuLkunZZNe+#pEF0;7gHKQ@Gl67e#OUOlKr=X)A%?vZMML{C ziPM*=iv60RmW|@t6eax=JB(4R3%Es@o>3gqke#4dE5)e7Sasu|sc|~(YyXzQy%fT8 zp}VLRPCRf(+5(n3co`H0nzp`Xg97Cr%j!hNUPAsKQ{kX_scaaXmy&+{xHcyB`*rdO z4JQ0MHmzgkh*`C%L(?0Sq5wSpKZ)U)SA0njtilx0yf%$`eEUXdl()P2Not0dIJBVG z*=z(#Gcjm1!wi}xd3uFQ5dS^ZP5PvW*A!!evs9QFBznF}_ZZOG%om&a#!wNhqxo{s zN;7X5mE(WL>f>*2-wJqunJlDDE$D5fTlN^vif5K zAw)-@&SB6K>@5yU}=vPE;eIElXx2M>zJ;Dog1Fn3H8^-e`aBR?@D zLzBRFtmPngvZ$w!QnrwIt-u&Z;g=BnDx^LI)<+yagv&=9KV$)>pz0JipQGv_R+|$P zgnj)TM}Ndy<0#b>5nhEoG@um6(jZh!=vv3ma4dWz!l6W;=MZWXFOed%Nst2y^}*3T z;M%V4!b3&HG?T!I9I?akXLAShpdM$CFAz&LKnz?Nl_4S=rIe+}kd$_h$05R40~qTa80zj*)B{IVCL9p;4I)KASMNY)&j2!Ew{`ZlcJwv31Cn)z zo4e{F9W@PYm7$i3+UAN-b46WCWqnIcxU~*l4x~bcq=4N`z|Rd7rbS{cB4sc|(Ujng z2;@l7_9$zD#K+@+A4>Y zifUH{P<2vMI58DHlN7rNG+X&R2N!|Il*}e%T;SM-5~UE1bBxVm4OXYR9ps))~0bHmqpjsjJ~y;cPY(evg;}DdL4Svmbo|U zeTxM_XXA&>%n2J0rzwrusi&QaJv^Tv_%Si@Irbf;GK(gCmI&hc=6H5hZvXhdbj0H9%0LR-$~wZ1umbR|;^iL|9ID7HZ(XbQRKDQP4#>Q(I4D zq^_oX#FQEfnX-`N3c0E{treWn@o%LS;H)eg{X)r##)9ag_t*BbN~or5>WB1r!om zvH%fbz)09k1>u~)_f9xXj#iIm0BcdOG6_JUJyAW)~^26&ik7I#M2L1~#h&XaG7#Qm|H-lSW8O2B5(H%J%n%pZ2oFwa4H1`(`NCH<#Z>4g7alSPwKzXiout(lUU_6Gjft2Q$BC{h$ zSvk^VAq6)6)|Md$7n4q0Mmfz?<&;khiP5BHjvUDK>x^X1jY#{)arP;|Af*gO?qf6k7J-|Dj<~=kOpQh zR}E_yl&WweHk_$mHPy=}1!ksvrp1?$>CIe&-V4l3z1d_lXcT}UaV)gnOly7;K#RoK zETBPSVhPyU0aD7yRHNsM%bBTxG_l#}m1ap*j@F>@7%n663@cm{->ZZ2YRJ8M@=+Qz z%8PFV*esyxEUDg10kcz1Jq1NMLON+4h;YEf!SqBI0gEHihfu~Rr0;|jPU$ShSt1mIY$s`CA#_s8R|t6&YhESK zB~j0bK8MhA(3K&%P$Md&@+7=+E?P<>t20MQ@+hRAlC-=a%B71Gv6O>Y3CbmmpjcK0 ze1fdZd50-SFcEN+98}N&AJmnyad{DCS1-@YFU!j-%gZe#%BM3# z$hL>v#GIbExCCN4WMz`eDN`-wx@{n$?7HFV8VI|MHMJ10k$xIarxKo`H-VrC;c&!! z&N*g8Cqp0%&M}RY-@rw{w}4^9=NcrK<{Z;VnpA~M(~Z^0I$hgTi^>%t6*Z?d^QBO8 z9Z^#qKpikMC!Ynrf?|yZi4)SAvnTZdm0>(UIf%XpZ~%B#Qqu%%2Bld&gDGpNguJi3~agO>sz6_pp}p^r*(iAwWu zoL`!sUsh01UI^kL0kj4@Q(hTD*8s6Vp$eT91;>Xyp#=P(2p=s?h7MNYf7ZweBm+<{ zDyk?fC`0A>`Fx|i622YXtDsPZL^V=<@TgOSV~j(>RFs?=twoMUqXN%2_p|~@JZao5LvoQo_L885n%nZ-hnsNLL8pjHoxx9Mf1!+ud)98!M zOsuO_XYrDo#q%^vz`z8~W&yF888KoKTVhY4$sM$*zJ}ZJoXt#wTi;is@8Hzii>cZ) zdT$ZLrZEUM3ku9mKILTCr?J*cv>B2HRAmB{bi*bdgI0u8BFKLV@w$m5Y)JDU0%?rU zL_H!zfDMWiMsc``fgGiNX3;q+H#?ywIQ|5Q-LOvsDuY2FDkMS;jfDN0fc=_S*+SN9 zq-zGLu)Fps8@u- z9;zs(l9iPWRW$_98Y56+LUl&q3hrP8tZ?g|esl^TI`nTqWdL%(mPlp@kjWGQ4g^kv z;*Q{DD?ICvAWD1@i71{2fLT}XV0%|TkQnL2T6-E>fW*3i#Ok3Li*$t|U4+NN9TjzL zWuexR+Loef;IZa{ib!60V@_!}yR;#zqyc~PDjEwaBc-rutRrhiXv`=kW@`(a07HN- zz#G*iMdbx~B{^9|nfnX(6BQ`RD9p&9jzcE`tpQ3E76Nitm6q35R@VcYK_$i5jALv< zT?TC&6lL0OkhUAdND>?-ScQR9R8$T;mYai7K{aP&7G`D?WPq~hE*Kj*4ASy}nnam~ zkx-0LQHfjA_{_z%CD|BAIH19Ufr_6LPE)Edf@-W2BVyQ(v4k250KhQhN^^2bbFxda zvPv>Di}8SXN^BLTP^o}9qtQgSv+49r~CcR>sqH9YgiW=_dJYBX7=&yR(bKzMLdH>*Um@+)mc1y zQC|U6uYa1ciJi?fOA{+06Z`CqMsF6-RnHnUPQv9Up0im3gGO?*=8wz^mj&Yp3>rra z%#vcWpup_wr+gh=UXgYIKT#qL7=bG&E}B62stnaw-2nwiEnp85D_b0R*1|fpR@SGr z5Ez3JgRJ|cJglDZx2dicAg479v76*(@*h)qgvEELySKBgi&Qa@HdF;22wBGwF|Gpv zp)ocSvq?%JHL!u#}twc^c3Qf3u5oa*F9Iz*u&1CMXM% zcTon(_YP&L^Y|5_c~&-2HW3NsB$qR0%N5K<_z-}tvJe^!;s)y?fTMtms-a0EcovQz zEIjheLMN%>Gy*)MkHBY`FGhgMY9r910P&WW)`FkVgcJk#6;>BA5eOuzaSp0+FZrpk zpt>N2s-%2z5oGaDc_pmrV0a0$JvhYyZX+EuV?wf4?L((PT?QLeY!K8UvwUTP#(QXd zWfkEP#GXuGay-4T@&zFXKkdjrm+K%tf~PjvbNIN z*5c}x!b+&fnsUn{Ic1I6rQxg+A{;hy$^tmp;|^J1~YaUFhR-)t!bzRoF*`= z7$c_&ZOAXI%*RP!MHwfUv#d13juLd~gw32h@+#Q9*DPU*fUJ=;bNqmrX}IsgX0A8{ zR%tc~Wt~aeq?E9ksn~HjL2Cs*HE^d>1ftg}C$$1Y#GiW3ozk^=3hoX1+F!u5H9);%uh(HAWl@ zM42*v?c}ckn2|;c-a$;*_g4mr?SMc8%t-eIMMPSDE}Y!2&vAGtyMBngZGhQgcCp25i<`7jA2UK_G!=3QSM&^am&wB2KkJ zT~^lwT^Y2IP?V8QLtvP~T~!4IQOeJ+63WY~WU9!^t;mffoX^jP+61D1O)2zd)e#^= zXuTM{!@iY+b2@g6G&~wx0QhUF8qm4GlTrN}1It>`xxpZ_9rmph2t-nrkwGIO-~+3X z#;mQEbY-k4BUIL?P#J((WkY*esI8=?g%xE@dF2rRv+UBwY+$ppMjYo=MDi<}ph+tW zwN!`OLrooFc-ld+h2hc$qu561SD`UuV3rHalb*kKPcHCS8X(HfterbEckappTmeua zc(xbaM7;xz7R*qg%&e$_XJ8nnvlKH!@}a?q5tg*#OIAgueYDpg3M(jPfy!{BJd7^F z>Of_{V|z3d+zWUHoK}FrK-#mM5`pDWR7P-)P}$zyXk_kgluySHqM<@#7$}YaJXtD| zW{fWs>qIh8WK@=?6lFzO8kOOB({k{zJGN(T+m^9yTjsXyncKH#?%0vFgP>Y&+U~sF zd-C_}E!ejY4F;G5LMzG4D$UBq#3|>S5-`KA0e~6c835qG+Bd$XMz#`|!K(U?;nJZ&S`cTmfY{6n&w^}U>M|p9Hj{NJF*ZvQ{KEyz zSl`8NW27+yDr2)ogjG;}WzbwPHfyefW0LqLnW&8H6-80T1Z-9h6bA`4TvZ7Hnhn*6 zAY39A1#T7BnA><)U1ww&Sx~C{GBaK-o zgn9t**k_Ei2P6$EEt%-b94%Qsw)_<&6MI7XD%vVhSdsY_`TW4Y2#^e(Kb1ww?vacY zpFNHOc@Nx(jo54Uy{fPm{AR^e`8=qEn%fu z5vd@w-i(Y7$(|6<$N^?O8kljAdJ~v|w=iNP^F_d2h|55Ctm25O&R8?%05id6g38Jr zs>lUY128LKe5f^M^$@s~#;nKDm=SI#jTvxzs{k{MC?H7%%+PWme@9~$F*RnAGaB(f zV9*HbM);Vuz?2d0WB_K(Y`(}EGocz_vwC2&){<(*W~?*=Jj<(~g94nXYKDm;v}%mX zI>Ru%#mGY#_)Y|aNBobb27svgO89*hR}|!yW= zL)Tz<zGO&pt28}350Ld^}!~hnfTn)^W86@fJ zGRS<9HH4%t%ig(z@E8HJZ5i7^z-Bu|fu?}jUIAvLI)jxX>&-A8VA+V9mSQu7oX|i} zB*M;<+{|dOk%G6p8d`4JOo72OmMIuC!ub$^Kqy@`Y#JpHh>l+|WuaDT4Nv;wNy(Z~ zzt~JOeG{9xBpd5&b_^w(sd(!V_?v0fnb+wo8Z?^o z-8Ed3z8}p3#|)T#{bVs^jEEg04kV0+gj+=D4tR4R+#(KulsN1M$NUg2mI@aEFeCnB zgy^C~zGS3iBMqBq%*ek;uo>wzOkl>5+1UeVh@v~dg$X(tcrlTuS$mUssfmjkP??xA zwjl(F<70-)CCEMn4qJBCSUM0VFH6vr^}B@+N9$W6{eO9n(o zzGTq=ePzIV2nSLE*D`WR%FQ7YL?|&>>qUSH@-6@sG;b6=0^m*JeBglW9wn*-lp8=? z#n6Y~LMY8LGV)=)#_BSFI>`NwqmdX=7N9*84T4QN0al%`3V>uvtJz#nZf0z5+BXO{ zFX)}LDPxFbSt@&MTyzV{$?exa;znF9NRQ1J4Q!`R*(J7y;_w zI8?^Alt5PGV+IpGhTj~3gyPGQk69nm<|5SrB7dNNLvS#|(5ec9#77RwSoEXgV+MOv z@iC*|C5R`9EO`_$pWMuP2HQH}X4VUA2E7?Mm^F9RlUbv3HUm7XYH-}lYFdk#ifUR) z5S201R#D#$bI01oj{27FNLzO^j5}dROOA;cmk2xpf3Su+jJHrZ0&*0Trl2>+&>|<6$A!JIhodFVT#s<28 z^lS_X9U7_8*mhTR#ca?B2Qw3%L3Kvfi~>rtccta--UHCcy0ZOfDm$LR>kN8kiWGtf zB5;F*17sbH6)8#$1*#!}g(r14Z?fQT75Ia&JqWT2VAc%pP}m(qY33L-B3l=SC5(Pj zgE&*Obifx+O7JX!vzZM9a!jO|%{o1{(eo4J9taZR^0=93Q{_RDVl(Y*7B32jYgisD zV3t&A<{LdQ(+L(GMzF1=hu^Vzfhc%~o=1`g;=pV2d^k#?#$)W!^(z-*8$`Ej` z3$91-Pea6f5b{}rIAT8R50O_IpbklpVDLr}^M%Oa4WYNu7~nJx(kOxE$fK#T7ScRL z-zIe#2mj!}jL1MuxpZO7N!E-K{G&>&$f9xW5DSFkDpeNkk14!5o43IR98x2nrSypl}i7Y38_@0gO?2Ju-b%c8?S_q>^Iglfn&D4k|1} zqJ#T(fK6u2LhT?3`q|Dp(J2DCIv_&MFjcsF)l*T zd`WO8!9NhK9)5s;Mum($Vza;z(>W@mj4q1G z$Px1q>>mndWHZBX0bGOg9IzP$W_02)A{Gdsngj(QwAR$^m^gM;H+EKqJMgzA+zIs> ze9{2q!mZscoxN>ceHe~Nr-g7ah;0mX#!9nBn7=~HS^*7DC9qk(R&PqM78nWwjKNlr z!8QeHgqtGuEV3OSM5juqAlQtOC?NYn4Yn01>4Ip?Xj_4uB(X;zu`$RX7U4SCM^RyQ z_$A_)0)Ajn!CaOg8R{>Wu!nHJL^wxkp@X;x-jiP$v}7yI#kVbBA;=@Kpl|`hHQ(z3`8H|bA7TW{>`4}@a zD>>sI6Vj$5dOm{sV5^0vFlB(C1Q-&BlQd?@fY}M+aux)ejSQG+oSWF7(Ho)BHwM>K zkriw^$D0F5^=1KsypPP;%rt9E8o0vLn+wm5?rA7MzE`y~0M9pPr7Pl0fU|@|87NH{OHa)^BpaHE81{%t)HqY?8pUR1F$^ z!sSc0XaZx%S{BU~P05`p(V3ab49Lfbi4T<;Co$t}!idQMEt5pv=OkA!gCy~t4GTqZ zhq^2TF{>@=V@9cjNttl~!ZY+{l&eZI2qV&iBu{gQQfxW8GR{Fv%8&!Y$V^R|%mKJU zQG5sl?t>*F@<&rj49uXiPK|u-Xh-e}b)DhY_(btjC zPchjkOh3eN3iOX=tK?Bg1WXbzMVyzgnH({{1!_r&R?iwIMHDWdwVKGFz!s;RP#YMS zf^bF?qajI}gn=R7MfMVuDEWw(9}S={k@Oi;v5_iNA221w9s$M@I}jo{6;L-LE6y&> zdCW96qsWkyeOTRB@}vQ`6QZNbjXZ1w$%YYu^w1&vMRmwA4QvLz8Ko~n?y^qGU4|rP zl-7*%o8c?M=yTXciJ?yvhI$QWpl56EZRzX-B!vnEXax=~iO_}aE*`1I|8_f~w_2}Z{c<4=n zY8;zUB{Ac0i)128NX${pGTsBkLMkvs7NH);z=L@tr=>=Ma!N!-F-0k!K0?wXW<8Wt zDwUa}EF;w@bb!!pvciqil#%jEBArSw5>Z6sR~4`ku{tUdHy@^tyjkGHVIGB!q;@Xv_e~$1!CTF=A?} z!A8>R@pCpaIVraOrd7Rfct)4xZDkS50bglMPI?hVN?E6a7&N*9f%xjp;@RLOwrLzg zy_p%F(L@(P+@;1O3P`-H)4r<6#0HJN&SnWXIWoPOH(|Hepixr8QRYi0g0H+662MwJ zTgRINUV}zg6cCr4ZM>uoQ{A9Z0W(*EX@obVv|vd6tnAj5CW->tGv+}7#KS;f_ia12 ztzNr&`O4+XK3cYV?W&DiHm2=O%g)QLsHp@Nf=OXFs1J%S75koYJyV)2GJqt_Mr#;> z@7sFVOpa5Tb#!&sH`JAsz^W-@$Ik7WHg8)G->A+|wY) z@mwCbu2PbraWsF%Z%&@H5QK6{WK2+yo5X3RkzbpTm7$P?t_jAgl%|;?UXqn5=a^<< zWiS#+OG;}eNu86}nou|8hDH_yHgIJtMDAjc z!e$)36S%z-Ca-)8wJCsY1xj#7BZSqk+;X&+h6h11IQN1M9y*Nb$k~iT=L2^ltr_x7 zgK&T_BM1TMoE!v5lf=`Mdz#ZvGji+i>>cO=Jnb7qNt8!W6a=n;UlU$G7&%=C=ILNF z=~F1XNa=($camhBm8F2kg24!e5fY(Nm&70^{KEvDGk_d!!59qTNvJWL z50H}qa*}9Dtxjj6$pcls3g|_}x08V%CAziy+NbiLH9-lh=(G4^*pZV`KkIxjV5}&z_55R^mQPRAkJo9cd3+|&Egp} zri6G?%{uM!G;`tGfYI~4z|4%$2(ULY?j0YqY%)JZ;uXNFH`5wUUw<>&!uNbk1#gg- zV?3F`Ydf9b%m_7Rr%gZY@R7q}rN%gih(jbCIB<~25r|1&(c9OvKXd;_pM3Pu#~*$A z*(Wdm>Aks+{OOuG@BVJi((C6gz5l7V-hB7dO?y-wB2d@()U$VRRA@K;UaHwpn3d()P496EzM{%kb{cgM=-JnB0h*wRzKN2G9f@e zL}(@?r4`}~Nch$Lk-an^JtVLO2Uv}UEf*mK_a`71JtGu zE}K`fe>IF-bFd@{mqgR^Aa0HGe0MI-2A0vgi*8L_&Kfd~wS-+*XIa7l!!uHy;Rbj- z5YQV)j&agCPbUXGB!wNKQK&F0zqsHF2hA;p40zjvu|eJ40k#7_5XE$s|5xrQ-HGs~ zW8}>GUg}mE5M z0`m}@7DUAHHbB?`p|Nd{oTu7Ulc08Xc0>4bw3FM{RAR5b;*bq|t1Tg91U`A1Pr>^A)Ho*BM$}7V|Daa5BpTwrx{| z1M$q9d_$a>Nof=8uj?t`@XmwZgRi)lX4*ZP@Hn2cpNli5VWjU*TFvO? zo~bc&1yGqPQ{zNvrz;|e%zEF!8814B?<*|Gi*l6mK;i|;{8eeprk_3?M}oniSYQ}N zI7i61;9za2cIB#-%aUobX-L_-r?mcNBV5+U#w{G6DY2%g+o3?J+zH8f>^=nqIU$bi6>h-{4n>TIUzHR%C z9UC`qz59uee-o$98FSa(|I|n6`!n@S6vyUE9Dp`eLnP)`uzUND}Vockp9S5*Gc2|5gh*R_rD_=?dOUs zen%wL=mYs0)2b`+P|k;W62pS4uew@3*BGQu;kT;-ksnum&P8i;ZlM3Y=IU$s6Z-?- zU4PN9+8bRI$zOdo+^_^z~NLGn<^udzFkr+kl@wf`}nEy(3T%R4g?>csSe8^<%8cnamhy> zd1U9#ohGW(P)h-`(@#GgM=^L#=|&jpz}TCqsHkY=$`xzYu37lUkA6LC%|~0Ri)%Ww zi(9s*H>}%Uvu11c`W>}9Gs5|0ZDn=cpKhRg~~Sl z$YEs_t&}PbJ{uYYEPnj)$6H%lPlT<7F?hzK_A^2bjGp;=-qAsf8?u^@qrb&*Uc=EN zBka5r@3K@!0yrd>oOrCVPkj7vAk|@SmcQkeTSjxaz7}E(L^NoGOkjquI2nmVMs|y1 z*h3?0@T9ux7;?|vdi*%x8e{rK$Ld7}gWLDsd(W%x!x;ydopCx^sRcpbNm5c$vTD_; z4I4Jx{n&@MFG|m@>fD;%@c!pzuYXwh@_TtNF3EY}tsMM)<-NQ&J}&xbZADskV?kZd zoiC?9^unr8U430W2sxcXHKE$7n(C_B8m8Ksx=?Lh{r%6bNU6>TpZ~le9ByoE#Kw{~ zPBWXW)SHfmQ(K$^uw8fEb@Z_O8EX5iKeDi|;n|+rC%dbk=&pLQv*NLivWMGB7PJ)I z*IM>;Z}WCP{bN*}I7;QFvWZt(O3_sY(W&~DQ4U}#2#VtmroSo$E_sNlkE`)6SCDui z)S?4g$!6oWsG|P3vNipbguPWzTu&74J2(Un?j!_vcMAbRaEIUl1`qD;?mD=;5AIHI zcNi?VOK>^!KXvcRk$bD3=Ao~I4J}VZYO1Nv+8AR zGNFA}AD&O#9097IA+tu4DOa8_Yw0BdNV@qd*Ulnh;gtO%=jl5yhSes#8&0aT!SXg( zv|dF8XVc6*^^@?xhls?75mVr4)rfWASQ!&Qb13)w4<9Ri45YtCSPI1q{Lw0JpkwF> z-t5c8C>942**BG9i|=_i%XX*1W)s|v;=IKuy+E&Z1Oq3C-F!EmPb1uIO)i+N-VJRA z^NSu8JF{Q6@?Y%={{DioQ6KFEM zUXh_CI*8Ev+3hat8@zpS_7AhFyucjmbQ5f{mHsfILfl-Pg(3PS#lzc2GwLzIf-%z# z1Kw9QdiQUGx}rTsloa0$9!i2jP*O^5hHV%B)|${&JE45%-Kte*4;t;2>g+wAyOAIT z`1QKB*K8+DHs)iROvZ3fqPW{0Ln2_22DpWrqoZ2+ScaiM^eA)iOo;!zF_zVpYM%cB z*LD_Ky;M`&x`vD+Ld^C@op+;oEu)EGz`YB(1=5)QmYlztR&RR5hRs4TtOfa6ELv>! zBo?#inHNz$AnAHYDKR~G6gFpdxZ2w^$%|XNj4!4STv~H^1}Xn5E0e|}n67(>`ep4& zrX;Nll9k{IIVq|-CbXx_g~&k^?~M7k_WblU_e!wCM5z4CdNu3dd(do6u72|>CtCF` z+S+hkKb_Rv!*XV#!H#<^i0mVtq+K$LQ_B#f`7x38qB6Jq-PPeBKY?|anq0Zs?=f!z zCSZ)Qvl>of`;&9@*kLL5U%lK+J)i%`6>2c0rCv-+PENLgbhzI`UPW7sCn8Q4H8oOL z+=NeJ4({}C{!DJJx9_F8+IBoAzuM>p>UAOkI~y*{9C>uPT<1*hZCc;z^c?l&d~d5V zmzFfDnNJ_K$*jsHw!f=_m5d9^>dIQnn?C7hiDosvxnkO)Hs9UfVzR#E_B2mYY}6GO zbuvPXBTcqeV|$lCoMs;WM8@C(_2=q|H4)y-cS_0?|Lo+ztekmMNcA)8))NP@xEH(? z4vUP1`;Ul;j$P;D!-*l!yf7VKl?4z#gVf^KuKhw-=&d;m=?%h+1|JH)q5lfIPE<@P z2?dTJP@!m`g49o2$Oe;gg~)1D+>=Vr{){SfiH96VBYyc;G2Qqi64Ve2neFD6s73N4 zCgEQ*^O=ngXT$sA41n|E>&@dqPR?I1Lqkh^KPc(0``!By8|fhewylEJpj}))${yZn4mlcJeJD*xf&h$a#;p?{~HiC>WRO1_2ybmV_%Df&1Qj zj0WO8immJaxGl1}biki8o?>#gY$!Y_$3Z}(n{`qKyki%_wnA-rogpqbGCBU z+4Mur*uFAw-%G}ZhI*7LTEA;{!<)rx^@=_vsZ8|y zX8SJvh}Y{aIz!Xz|NHUPSkTs>;XOPyVsmZtsb5f&Dv;w+%TbmQdAQ3t zo73?hh}YZa2|Y*jsVgA?Aw#&0YpPk{FY}L8A`dgv^&D=i6hvU>cF91}mDqa(Rp|4N zCWDmD$3>-mJwFrS?Lj@~sinfr)8pDC6YZssaB7Hk>a|$-+_|jGX1iZ}zQVM^8{`#n zu?{O@)lwF>AH#P&!T8!?nPkoO$kj+YNd4SvX9$l{S62Syg}C!o7E48{o7>-vatMXI z|EkGmt;0+%{2M%zYFq++M1{{)qyaLZpPewk^C(BDDtm-3Fo9SaA#)ogBATDgF^}VN zn%e=k%V!*d9f#;IvegI^S;SRX#MXo7@sjB{*;_l4in{XwcKq8Rk|F@`H+;xao77ae z3)w8m*@G1+;OUbuR}%4_cV}t=kWKrNFy<3lkrOKVxYXmRxPFnA%(yW2MN?RI##NJS zEe5iv9_rWfHO8_O#kSMJAbvf$=@ZCbuZF@Y5e)?0_We?xKe<0T^fHc1@AN+H!hpTG z$u@N}UrW5vQBDc}jYe^pGw?+IcW~kWz|1;LfV2@3-=%6jyTi-;$inHq!6G|8v_oq7 zYahT!w%ZO0PSbXjHhIg*1n=g641IW(DM8K^qA%2WG0u8qP_a^hxXMDA88U{7h3n}~ zgN6S2?hDIqTdL-VA8dbzEHl?U0-$+oYtFG8g{k{&GCEny-R=&Uz*O(vex$r_U-9O1 zDl>E6l6J+Y9w+M5^KnH@3|87F!d*zGC-23dCrFi*!Lpj~+D;`=Y{}~>r0QVur|(&x z@T&w8H}8qgbGNYPMrw_Y{WW?{j?dh&Eu?L~V}-=W{=KOpdxi74F>}d<_kE4*#N~n& z@e7W16D@dN=YaROp5W_{xt>a|w&E*Jz$jw7r~ucxTFYKSB|7hX@g~OiMdeo$okt00P;;Xi3-^gr6@5J`BkhFo z#nb2SauTfK24dghnj|%WZ-0N%fBSsT3@|Sd71yA{NgK)N$9=^y=G^9lr(f<$??Jm9 zDVn*?wjZIRahTJKIulq~#@7Q$nRapFcYEYzReWjMeA{7t`}`+}0xAHZWO=|KFT|1T z4*<|=UL3OH{9WBLHEH=#5wOJt157pWX$`_lz|3#bx9dgVv(4wWwQ;D@=-U#L2vcT> zEa(=ZzRkA{#rn3TbJ;FYJ5AAQX>z~ddaIA&Oa#O#?1VS{$mMq1Bj@(78#+ zCsgo2tPBoL&i59R4cFhg?_1a975L}vhk04=BCa>itfwawD)>=bnw!(T75dB1b4bmv zr@c1aUM9me6l?suM;ix_#-kU{rnjdVy`|2U_cCYa14zePqbo00bJK^{qb&4lfvGOz z*CNH!wuhOlZa25#Df0E0RiDShn6^b9oDAVxAODKUrOmZM3g@-1zV|6jA85MfX|Wn8 zy)`C$zh2<4t$9WjF#5C#Av=U5c3F7H|*@ zOBRNxm8Sxj)J5MPr|d<_8qlwnmco=RvD&|piv5Z!LNdr}5xd!+$e<00B#v#x$W5Jd zF-_I?DBF^NZj==%XIzPctJ9?V`7oT(!Cq5oI(_%(r-ns% zsY;$l0z3UrZZw`-k?ZY0Bk;gD;xw5GXq^~Fb9w*Uhi{|>LU&|ru=a=tb;*J8aG5}i zFSv0vEQTR4G{Nj+wX1({wyDf6<6)l)!-;O|NIRa-+a36;5w7E98_Ei+b>*J_CP-6w zs}bP*%K}oKTipQz@JK1YJ>Z)pOE((g1~GWq`PEcEw`C*1jXX28Xt;Lz;Ljx~AJ0#n zd!kk~%=2l3&EH-g9cKSF*`|J!=7d$hz!6IrCkN zyN8)SaD-ZZR?*)z;w|DJ!I+CMwFQ!G95&%}lkjA`hpw!c)8Xudtw3EzlT33(44BawTy7d6TszDaK`I%m7Qj?UG1l`yP> z8YU$|W7nV7Q#fnhwU%19u3Wh|pj&c@4#9TEIF}q4iQG*L4jglggplkksc(hanFe)1 zyPaaKS$B^Xs}HF>`NXAm+BVc4Q&3)5DmP_gBn-{O(PZ<^QK}>ob83G+x_tBr&Imn1 zD~^O7;K9UsMmDp@+@zwfw{uuq9|4@NiSw9h#blv&xxvQqv62eh${-(YOKj zefQgRls5R-Jc&lyv|FaX3XTRnq}DY5O@r6n#^?BM*BZ60MEB*uewI7#)@iy&ZodE; z1ms*_ah7Nv7j7k>3)rselqwf7df3jokInxxtg{^Bk4*MRl)l~(Kb{oWudu&3qldY^ zI$Deu8s%Sn6lHgRaf?neyLw7HLWxA}Y-X#H;YRHDE@C^zO;p2q^6;dk*TT#GG6W<} zv#1lyrAmR&#W(g@K{CbASrU1BPZcg{J{s}_s8h4Eagwppz86q?tH!$fLwi(y8eU=; zzBtYLrfpMaDx!@edkELg$$qHf7j>^Avh0FhAVD(*!9OT|MEd7S=`i6&SH0|SmT;oT z*3jJ;l!p9ONQ^;8CLD19;V;~Zgc7tq->0P(kmKiWH?*`ej?k|J*>fnqA_Szlu)+O= zOFTI_q42sCf5CHQY$ue!w=bA?-qbcouW{=_a6-=lD0hUQPi(7bFt zUUEst$ffC*RI43_KF3ZUXaqLb8(g{nZO{hBA0|!{zHui~s2;VRHka3Tx#+l=MD{0A z8?Oa+oOCS}zxJcP{}a5Bdp_>7cz?bge>wJJ^0B-sxA67clQHnzW1aH6DD-{V-MH_D ztS&0dL+qQi4>t8~+Sdq>D#4xL`)==}^2DyD?@MKZGF(6<;`AU+K2}tJL|{Evv-*08 zvbO4A;!1^Yz3t=R-Wm{)uyE1M(Qxm8jJ_vWb9V;bT84f*r4Gp@p@nk;^FM``oM2H& zl^Iwq$en2mNrG6_B&g|F1+ctW+D|zervII8Wgv&GCe36rvkbFU83bf*BLG=w*$LR@ z6s)eKB(ZoonZJrh1muDY{RR`a|AsekC|$HfnjjJa^-EDbp)pFr&6XHKJ)HqX2aGER3;0%KWG2KI+B44ZSJ{l+XK`P=SI=ASIVKIa0O%U(|6smCNt}5StBg z(bt+hW7uerCPE=<#wxjyW`GBLTDS(ock7Snm#4mI$iz0b$uZu4 z)cX3vXk6R2k;P@Z!u-<7Q_gUIO;Fqqbom7adbtbgsD`e>8mbhFUh@!)>&4xyj_MV% z^(1A!oa1r_A>p4rss9M^=OWAJK?x@KHMOj45_>F$G|kYij-;Q~=P6)xmC|uXl}zNn zoWBf1ez3J8WNeEWf6C=hW9*SyMWa`+Mjgynf^}<=!?~&+R-De*re$Tj>0`4c3V+Fy zP45^~oCSox=k@y^HXXSfmx#Fw1=CFfhJrNRjv_s5g#17&^eWwhKx01N;X;N^_te=B zY&5xy->C`Nj*6JgrdDpjp{`u6w<8MTrY$F%=PTD)tr`6`f1NF=jj51;VaW#C+U}cF zw(`$?oO5q?`xd_56Ai5TH_c|7KlLd7y+sUP>4EkPo_p6Vd|f9Ry4!xOZtC)$+2*)y z)lu7=k=c-CJ$SwsNM*g-&H0MHhD`C8(w=oxXZt&{c-XDJXXl-GU0yZ+E7+;S8OTCAq=Z5?sz&86V;8I~gU4vXEOU zlcV>K3G%VcY1HW7XnIS*y+J#tE!43LY3}=;KCc?0LpMEFN}1r|AvA-=0Z~ZL_})kg z?v}-AP&I+DN=NKUMx4;cBrf?6rmdHj#{mG&O*4B*)A(4Wr)5+355^ufj_nO^}h}Iy?Rt*Sa6YS>P{iQ%|D?0M^z~~hEv6kyK|48 zati}@=hgQv;A-l5rpxLn>&szwUxdJ^nPK^s>gKY;{sOD~^PTYABuLt6vC_f}B61cb zSe)f>(BRuf*rXSDki!- z-yrBkNHn>x--oP`fX?g-oc{$^ue8|p}>N$>(AhP8yJ5O5u8+vym~n~ z=IWg@)LXlm0hvvLh@C8nj*^D$hU`0Z%K?jx6X+F31qgQ(M-?j)vp8w5gI38?_lIv= ze<+Qk$>rB+|LO#t%U9Nh6S!*1Vbt;5s+*yVUQ4R7yt8YvTL8Y1mWlt~=5U?AmxNi@ zyJ2ggH=cE4X2~|6Srnw#CFZ2x5+v&68^$yF)0nrr(9x=EG;#I?w9%D^ttT6LxE)x@ z(1k}%5u4(~PgVk3ti`F&gO>Q!n3I4ZafBMRfFMn>Ze=1TawK1j+bjEt^8PeK6v-V& zaaZ3CZs-{o5tW9mAHzY&FvMAri4bOla%yXN&w-{#PR&e75r!cAU#>G7h|KwO@C_`L}_niwqD&Xj0~<^f$D zsQK%~UBe)7m#aNcjd46Rf!>Jo6@yq9a8u>4r0sly`CIR5;zT6-YD?+`?+Fr})74&0 z*ge|!tJ;vl=V2RqDnrtvqobeeBi}E&yG}%XjUO9)JB?ShQH!(g*BfrKAJz;+>R6lM zRV76vO_S$pbcD`QZ55suJm-8K?;21y)9!XPi@o1L7G~?bXF0!LSm^$AJ>%B!1&_(&6@6S_>E<__#39A_+u zaWp?>&#$?Qk_G-{nupWDFa*$BH#VTG!+G5P1^w-l_}!jVn*(W>MWzoaCjjp3s<|

=!Im=ymD169iP`vb+hF_v1fa#4de6_>3K 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

N`w6 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 HhtK{GPaXat diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_2.png b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_2.png deleted file mode 100644 index 078f4ec8d7b3b3920c1a65a7b0b52d8fbee3b7d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28918 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 diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_3.png b/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/AS5_AS6_Import/AS5_AS6_Import_Step5_3.png deleted file mode 100644 index 8a8571bd86868ef9a1bfb12214138c17221c4bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23561 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 - - - - LUFA Help - - -

- - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt deleted file mode 100644 index 2ebda6d..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt +++ /dev/null @@ -1,808 +0,0 @@ - - - - - - - - - - LUFA Library - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <xsl:value-of select="$book.title"/> - - - - - - - - - - - - - - - - Modules - - - - - - - - - - - - - - - - LUFA. - - - - - - - - - <xsl:value-of select="$page.title"/> - - - - - - - Subsections: - - - - - - - - - - - - - - - - - - - -
- - <xsl:value-of select="title"/> - - - - LUFA. - - - - - - - - - - - - Subgroups: - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- - <xsl:choose> - <xsl:when test="@kind = 'struct'"> - <xsl:text>Struct </xsl:text> - </xsl:when> - - <xsl:when test="@kind = 'union'"> - <xsl:text>Union </xsl:text> - </xsl:when> - </xsl:choose> - - <xsl:value-of select="$name"/> - - - - - - - - - - - - <xsl:value-of select="$name"/> - - - - - - Type - Name - Description - - - - - - - - - - - - - [] - - - - - . - - - - - - - - - - - - - - -
-
-
-
- - -
- - <xsl:text>Function </xsl:text> - <xsl:value-of select="name"/> - <xsl:text>()</xsl:text> - - - - - - - - - - - - - - - - - - - ( - - - - void - - - - - - , - - - - - - - - - - - - ) - - - -
-
- - -
- - <xsl:text>Enum </xsl:text> - <xsl:value-of select="name"/> - - - - - - - - - - Members - - - - Enum Value - Description - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - <xsl:text>Macro </xsl:text> - <xsl:value-of select="name"/> - - - - - - - - - #define - - - ( - - - , - - - - ) - - - - - - \ - - - - - - - - -
-
- - -
- - <xsl:text>Type </xsl:text> - <xsl:value-of select="name"/> - - - - - - - - - typedef - - - - - - - - - -
-
- - - -
- - <xsl:text>Variable </xsl:text> - <xsl:value-of select="name"/> - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <xsl:value-of select="title"/> - - - - - - - - Returns - - - - - - - Warning - - - - - - - Precondition - - - - - - - See also - - - - - - - Note - - - - - - - - - - Parameters - - - - Data Direction - Parameter Name - Description - - - - - - - - - - -
-
- - - - Return Values - - - - Return Value - Description - - - - - - - - - - -
-
- - - - - - - - ? - - - - - [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <xsl:value-of select="caption"/> - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - images/ - - - - - - - - - - - - -
- - - - - - - - <xsl:value-of select="title"/> - - - -
-
- - - - - - - - - - - - - NO XSL TEMPLATE MATCH: - - -
diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt deleted file mode 100644 index b43354f..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - lufa_help_ - - .mshc - - - lufa_help_ - - .mshc - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt deleted file mode 100644 index 8aa4a94..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css deleted file mode 100644 index 0b6ccbd..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css +++ /dev/null @@ -1,53 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2013. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -.programlisting { - display: block; - margin-left: 15px; - padding: 10px; - background-color: #f4f4f4; - border: 1px solid #aaaaaa; - font-family: "Consolas", "Courier New", sans-serif; - } - - code { - background-color: #f4f4f4; - font-family: "Consolas", "Courier New", sans-serif; - } - -.note, .warning, .tip { - display: block; - margin-left: 15px; - padding-left: 10px; - padding-bottom: 5px; - background-color: #f4f4f4; - border: 1px solid #aaaaaa; -} - -table { - border: 1px solid #aaaaaa; - border-collapse: collapse; - margin-left: 15px; - font-size: 10pt; -} - -table thead { - background-color: #f4f4f4; -} - -table thead th { - padding: 5px; -} - -table tbody td { - padding: 5px; -} - -ul { - padding-left: 20px; -} diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/LUFA.dll b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/LUFA.dll deleted file mode 100644 index 665b8029f0d3aa558f19be44b73d0c694ba636d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749056 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

L)h133jg|QT0n(k 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�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

Fl4Ih&hnTSwSn)ZAELSfMf$QY=%+@f0GUGRs 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 QaQA<#V^khwiMGA7fR~ZF9PIyV&3i3&N?D55T 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
    @Hl=kHn4vSkHNt_gZcRJ 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

    `@ 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 YwhSYmJMFlk19=7vxcv?bMykGk0)Z=6o&W#< diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/[Content_Types].xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/[Content_Types].xml deleted file mode 100644 index 112d169..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/[Content_Types].xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/asf-manifest.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/asf-manifest.xml deleted file mode 100644 index bd96951..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/asf-manifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - FourWalledCubicle - LUFA - Dean Camera - - True - - - - 0 - - - content.xml.cache - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/extension.vsixmanifest b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/extension.vsixmanifest deleted file mode 100644 index 8475017..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/extension.vsixmanifest +++ /dev/null @@ -1,33 +0,0 @@ - - - - - LUFA Library - Dean Camera - 0 - http://www.lufa-lib.org - LUFA, the Lightweight USB Framework for AVRs. - - License.txt - LUFA_thumb.png - LUFA.png - - - AtmelStudio - AtmelStudio - - - - 1033 - - false - - - - - - LUFA.pkgdef - helpcontentsetup.msha - asf-manifest.xml - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/generate_caches.py b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/generate_caches.py deleted file mode 100644 index eb4b71e..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/generate_caches.py +++ /dev/null @@ -1,38 +0,0 @@ -""" - LUFA Library - Copyright (C) Dean Camera, 2013. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -""" - -import sys -sys.path.append("ProjectGenerator") - - -def show_message(message): - print("[Project Generator] %s" % message) - sys.stdout.flush() - - -def main(lufa_root_path): - try: - from asf_avrstudio5_interface import PythonFacade - except ImportError: - print("Fatal Error: The ASF project generator is missing.") - return 1 - - p = PythonFacade(lufa_root_path) - - show_message("Checking database sanity...") - p.check_extension_database_sanity(lufa_root_path) - - show_message("Building cache files...") - p.generate_extension_cache_files(lufa_root_path) - - show_message("Cache files created.") - return 0 - - -if __name__ == "__main__": - sys.exit(main(sys.argv[1])) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt deleted file mode 100644 index 8fc9841..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - . - - . - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt deleted file mode 100644 index db12d9e..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt deleted file mode 100644 index f50f8a4..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - This file has been automatically generated from the LUFA Atmel Studio integration XML files. - - - - - - - - - - - - - - - - - - - - . - - . - - - - - - - - - - /html/ - - - - - - - - /html/ - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt deleted file mode 100644 index 9affc9f..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - Sourced from - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt deleted file mode 100644 index 166f425..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt deleted file mode 100644 index ee9a050..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - This file has been automatically generated from the LUFA Atmel Studio integration XML files. - - - - Sourced from - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa.xml deleted file mode 100644 index 86cfc04..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_common.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_common.xml deleted file mode 100644 index c2ef7af..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_common.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board.xml deleted file mode 100644 index e150aa6..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board_names.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board_names.xml deleted file mode 100644 index ab7e03e..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_board_names.xml +++ /dev/null @@ -1,853 +0,0 @@ - - - - - - - - - Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards - compatible with the currently selected device will be shown. - - To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_misc.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_misc.xml deleted file mode 100644 index 4311ae8..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_misc.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_peripheral.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_peripheral.xml deleted file mode 100644 index 76ea516..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_peripheral.xml +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb.xml deleted file mode 100644 index 263c411..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class.xml deleted file mode 100644 index 67ab760..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml deleted file mode 100644 index 3451712..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - Common definitions and Host mode implementation of the Android Open Accessory USB class. - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the Android Open Accessory USB class. - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml deleted file mode 100644 index 5f7c3ad..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the Audio 1.0 USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the Audio 1.0 USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the Audio 1.0 USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the Audio 1.0 USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml deleted file mode 100644 index 65d8cc9..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the CDC USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the CDC USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the CDC USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the CDC USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml deleted file mode 100644 index 3d533fb..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the HID USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the HID USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the HID USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the HID USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml deleted file mode 100644 index 3ddab0b..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the MIDI USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the MIDI USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the MIDI USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the MIDI USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml deleted file mode 100644 index 283b85c..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the Mass Storage USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the Mass Storage USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the Mass Storage USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the Mass Storage USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml deleted file mode 100644 index 2465035..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the Printer USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the Printer USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the Printer USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the Printer USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml deleted file mode 100644 index 6a60667..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host/Device mode implementations of the RNDIS Ethernet USB class. - - - - - - - - - - - - - - - - - - - - - Common definitions and Host mode implementation of the RNDIS Ethernet USB class. - - - - - - - - - - - - - - - - - - - - Common definitions and Device mode implementation of the RNDIS Ethernet USB class. - - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the RNDIS Ethernet USB class. - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml deleted file mode 100644 index c1bf8d5..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - Common definitions and Host mode implementation of the Still Image USB class. - - - - - - - - - - - - - - - - - - - Common definitions only (no implementations) of the Still Image USB class. - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core.xml deleted file mode 100644 index 58a0b38..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml deleted file mode 100644 index 4688f05..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml deleted file mode 100644 index 2e7185f..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml deleted file mode 100644 index c79a0f5..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform.xml deleted file mode 100644 index 4ee51f6..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_uc3.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_uc3.xml deleted file mode 100644 index 98017b0..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_uc3.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_xmega.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_xmega.xml deleted file mode 100644 index e613fe5..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_platform_xmega.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_toolchain.xml b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_toolchain.xml deleted file mode 100644 index a76b6d0..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/lufa_toolchain.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/makefile b/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/makefile deleted file mode 100644 index 2649598..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/StudioIntegration/makefile +++ /dev/null @@ -1,140 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2013. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# --------------------------------------- -# Makefile for the LUFA Atmel Studio Integration. -# --------------------------------------- - -LUFA_ROOT := .. -LUFA_VERSION_NUM := $(shell grep LUFA_VERSION_STRING $(LUFA_ROOT)/Version.h | cut -d'"' -f2) - -ifneq ($(LUFA_VERSION_NUM),000000) - EXT_VERSION_NUM := $(shell date +"%y.%m.%d").$(LUFA_VERSION_NUM) - EXT_VSIX_NAME := LUFA-RELEASE-$(LUFA_VERSION_NUM).vsix -else - EXT_VERSION_NUM := 0.$(shell date +"%y%m%d.%H%M%S") - EXT_VSIX_NAME := LUFA-TESTING-$(shell date +"%y.%m.%d-%H.%M.%S").vsix - - $(warning No LUFA version set - assuming a test version should be created.) -endif - -DOXYGEN_TAG_FILE_XML := $(LUFA_ROOT)/Documentation/lufa_doc_tags.xml -DOXYGEN_COMBINED_XML := $(LUFA_ROOT)/Documentation/xml/lufa_doc.xml -TEMP_MANIFEST_XML := manifest.xml -EXTENSION_OUTPUT_XML := $(LUFA_ROOT)/../extension.xml -MODULE_OUTPUT_XML := $(LUFA_ROOT)/asf.xml -MSHELP_OUTPUT_XML := $(LUFA_ROOT)/../lufa_help_$(EXT_VERSION_NUM).mshc -XML_FILES := $(filter-out $(TEMP_MANIFEST_FILE), $(shell ls *.xml)) -VSIX_ASSETS := $(LUFA_ROOT)/DoxygenPages/Images/LUFA_thumb.png \ - $(LUFA_ROOT)/DoxygenPages/Images/LUFA.png \ - $(LUFA_ROOT)/License.txt \ - VSIX/"[Content_Types].xml" \ - VSIX/LUFA.dll \ - VSIX/LUFA.pkgdef -VSIX_GEN_PARAMS := --stringparam extension-version "$(EXT_VERSION_NUM)" \ - --stringparam lufa-version "$(LUFA_VERSION_NUM)" -MSHELP_GEN_PARAMS := --stringparam generate.toc "book toc" \ - --stringparam chunk.quietly "1" \ - --stringparam chunk.section.depth "3" \ - --stringparam chunk.first.sections "1" \ - --stringparam chapter.autolabel "0" \ - --stringparam root.filename "LUFA" \ - --stringparam html.stylesheet "lufa_studio_help_styling.css" - -all: clear_project_dirs generate_xml check_filenames generate_vsix - -clear_project_dirs: - @make -s -C $(LUFA_ROOT)/.. clean - -clean: - @rm -f $(TEMP_MANIFEST_XML) $(MODULE_OUTPUT_XML) $(EXTENSION_OUTPUT_XML) $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML) $(MSHELP_OUTPUT_XML) - @rm -rf mshelp - @cd $(LUFA_ROOT)/.. && rm -f contents.zip exampleProjects.xml content.xml.cache extension.vsixmanifest asf-manifest.xml extension.xml helpcontentsetup.msha $(notdir $(VSIX_ASSETS)) *.vsix *.mshc - -$(DOXYGEN_TAG_FILE_XML): - @$(MAKE) -C ../ doxygen DOXYGEN_OVERRIDE_PARAMS="GENERATE_TAGFILE=Documentation/lufa_doc_tags.xml GENERATE_HTML=no GENERATE_XML=yes" - -$(DOXYGEN_COMBINED_XML): $(DOXYGEN_TAG_FILE_XML) - @xsltproc $(dir $@)/combine.xslt $(dir $@)/index.xml > $(DOXYGEN_COMBINED_XML) - -$(TEMP_MANIFEST_XML): $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML) - @echo Generating temporary module manifest XML... - - @printf "\n" $(LUFA_VERSION_NUM) $(DOXYGEN_TAG_FILE_XML) $(DOXYGEN_COMBINED_XML) > $@ - @for i in $(XML_FILES); do \ - printf "\t\n" $$i >> $@; \ - done; - @echo '' >> $@ - -$(MODULE_OUTPUT_XML): $(TEMP_MANIFEST_XML) - @echo Generating library core XDK module manifest file... - @xsltproc XDK/lufa_module_transform.xslt $< | xsltproc XDK/lufa_indent_transform.xslt - > $(MODULE_OUTPUT_XML) - -$(EXTENSION_OUTPUT_XML): $(TEMP_MANIFEST_XML) - @echo Generating library XDK extension manifest file... - @xsltproc XDK/lufa_extension_transform.xslt $< | xsltproc XDK/lufa_indent_transform.xslt - > $(EXTENSION_OUTPUT_XML) - -$(MSHELP_OUTPUT_XML): $(DOXYGEN_COMBINED_XML) - @echo Converting Doxygen XML to DocBook... - @-mkdir mshelp 2> /dev/null - @xsltproc HV1/lufa_docbook_transform.xslt $(DOXYGEN_COMBINED_XML) > mshelp/lufa_docbook.xml - - @echo Converting DocBook XML to Microsoft Help 1.0... - @cd mshelp && xsltproc $(MSHELP_GEN_PARAMS) ../HV1/lufa_hv1_transform.xslt lufa_docbook.xml - - @echo Copying help assets... - @cp HV1/lufa_studio_help_styling.css mshelp - @-mkdir mshelp/images 2> /dev/null - @cp `find $(LUFA_ROOT)/DoxygenPages/Images -type f` mshelp/images - - @echo Archiving help content... - @cd mshelp && zip ../$(MSHELP_OUTPUT_XML) -q -0 -r *.html *.css images - - @echo Generating HV1 manifest... - @xsltproc $(VSIX_GEN_PARAMS) HV1/lufa_helpcontentsetup_transform.xslt HV1/helpcontentsetup.msha > $(LUFA_ROOT)/../helpcontentsetup.msha - -generate_help: $(MSHELP_OUTPUT_XML) - -generate_xml: $(EXTENSION_OUTPUT_XML) $(MODULE_OUTPUT_XML) - -generate_vsix: $(EXTENSION_OUTPUT_XML) $(MODULE_OUTPUT_XML) $(MSHELP_OUTPUT_XML) - @echo Generating XDK cache files... - @rm -f $(LUFA_ROOT)/../content.xml.cache - @rm -f $(LUFA_ROOT)/../ExampleProjects.xml - @python VSIX/generate_caches.py $(LUFA_ROOT)/../ - - @echo Archiving XDK content... - @rm -f contents.zip - @cd $(LUFA_ROOT)/../ && zip contents.zip -q -0 -r --exclude=*Documentation* --exclude=*StudioIntegration* LUFA Bootloaders Demos Projects README.txt - - @echo Creating VSIX dependencies... - @cp $(VSIX_ASSETS) $(LUFA_ROOT)/.. - @xsltproc $(VSIX_GEN_PARAMS) VSIX/lufa_vsmanifest_transform.xslt VSIX/extension.vsixmanifest > $(LUFA_ROOT)/../extension.vsixmanifest - @xsltproc $(VSIX_GEN_PARAMS) VSIX/lufa_asfmanifest_transform.xslt VSIX/asf-manifest.xml > $(LUFA_ROOT)/../asf-manifest.xml - - @echo Generating Atmel Studio VSIX file... - cd $(LUFA_ROOT)/../ && zip $(EXT_VSIX_NAME) -q -9 contents.zip exampleProjects.xml content.xml.cache extension.vsixmanifest asf-manifest.xml extension.xml helpcontentsetup.msha $(notdir $(MSHELP_OUTPUT_XML)) $(notdir $(VSIX_ASSETS)) - - @echo "Atmel Studio VSIX extension file generated." - -check_filenames: $(MODULE_OUTPUT_XML) - @echo Verifying referenced filenames of XDK modules... - @for f in `find $(LUFA_ROOT)/../ -name "asf.xml"`; do \ - echo "Checking $$f..."; \ - asf_file_dir=`dirname $$f`; \ - xsltproc XDK/lufa_filelist_transform.xslt $$f | sed -e "/^$$/d" | while read -r i; do \ - if ( ( ! test -f "$$asf_file_dir/$$i" ) && ( ! test -d "$$asf_file_dir/$$i" ) ); then \ - echo "Source file \"$$i\" referenced in $$f does not exist!"; \ - exit 1; \ - fi; \ - done || exit 1; \ - done; - -check_database: - python ProjectGenerator/project_generator.py -b $(LUFA_ROOT)/../ --main-ext-uuid=0e160d5c-e331-48d9-850b-e0387912171b CHECK - -.PHONY: all clean generate_help generate_xml generate_vsix check_filenames check_database diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/makefile b/avr/bootloaders/lufa-LUFA-140928/LUFA/makefile deleted file mode 100644 index 88449a9..0000000 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# LUFA Library -# Copyright (C) Dean Camera, 2014. -# -# dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org -# -# --------------------------------------- -# Makefile for the LUFA library itself. -# --------------------------------------- - -LUFA_VERSION_NUM = $(shell grep LUFA_VERSION_STRING $(LUFA_PATH)/Version.h | cut -d'"' -f2) -EXCLUDE_FROM_EXPORT := Documentation DoxygenPages CodeTemplates Build StudioIntegration doxyfile *.tar *.o *.d *.lss *.lst *.hex *.elf *.hex *.eep *.map *.bin - -# Default target - no default action when attempting to build the core directly -all: - -# Export the library core as a TAR archive for importing into an IDE -export_tar: - @echo Exporting LUFA library to a TAR archive... - @tar -cf LUFA_$(LUFA_VERSION_NUM).tar --directory=. $(EXCLUDE_FROM_EXPORT:%=--exclude=%) * - @tar -cf LUFA_$(LUFA_VERSION_NUM)_Code_Templates.tar CodeTemplates - @echo Export LUFA_$(LUFA_VERSION_NUM).tar complete. - -# Display the LUFA version of this library copy -version: - @echo "LUFA $(LUFA_VERSION_NUM)" - -# Check if this is being included from a legacy or non LUFA build system makefile -ifneq ($(LUFA_PATH),) - LUFA_ROOT_PATH = $(patsubst %/,%,$(LUFA_PATH))/LUFA/ - - include $(patsubst %/,%,$(LUFA_PATH))/LUFA/Build/lufa_sources.mk -else - LUFA_BUILD_MODULES += MASTER - LUFA_BUILD_TARGETS += export_tar version - - LUFA_PATH = . - ARCH = {AVR8,UC3,XMEGA} - DOXYGEN_OVERRIDE_PARAMS = QUIET=YES PROJECT_NUMBER=$(LUFA_VERSION_NUM) - - # Remove all object and associated files from the LUFA library core - clean: - rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o) - rm -f $(LUFA_SRC_ALL_FILES:%.c=%.d) - rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst) - - include Build/lufa_core.mk - include Build/lufa_sources.mk - include Build/lufa_doxygen.mk -endif - -.PHONY: all export_tar version clean diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/.gitignore b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/.gitignore new file mode 100644 index 0000000..9387689 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/.gitignore @@ -0,0 +1,9 @@ +*.lss +*.bin +*.elf +*.hex +*.eep +*.map +*.o +*.d +*.sym diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c new file mode 100644 index 0000000..35ea2d7 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c @@ -0,0 +1,39 @@ +/* + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + */ + +/** \file + * + * Special application to extract an EEPROM image stored in FLASH memory, and + * copy it to the device EEPROM. This application is designed to be used with + * the HID build system module of DMBS to program the EEPROM of a target device + * that uses the HID bootloader protocol, which does not have native EEPROM + * programming support. + */ + +#include +#include +#include + +/* References to the binary EEPROM data linked in the AVR's FLASH memory space */ +extern const char _binary_InputEEData_bin_start[]; +extern const char _binary_InputEEData_bin_end[]; +extern const char _binary_InputEEData_bin_size[]; + +/* Friendly names for the embedded binary data stored in FLASH memory space */ +#define InputEEData _binary_InputEEData_bin_start +#define InputEEData_size ((int)_binary_InputEEData_bin_size) + +int main(void) +{ + /* Copy out the embedded EEPROM data from FLASH to EEPROM memory space */ + for (uint16_t i = 0; i < InputEEData_size; i++) + eeprom_update_byte((uint8_t*)i, pgm_read_byte(&InputEEData[i])); + + /* Infinite loop once complete */ + for (;;); +} diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/makefile b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/makefile new file mode 100644 index 0000000..1b1185b --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/makefile @@ -0,0 +1,39 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +# Run "make help" for target help. + +MCU = atmega128 +ARCH = AVR8 +F_CPU = 1000000 +OPTIMIZATION = s +TARGET = HID_EEPROM_Loader +SRC = $(TARGET).c +CC_FLAGS = +LD_FLAGS = +OBJECT_FILES = InputEEData.o +OBJDIR = obj + +# Default target +all: + +# Determine the AVR sub-architecture of the build main application object file +FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(OBJDIR)/$(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) + +# Create a linkable object file with the input binary EEPROM data stored in the FLASH section +$(OBJDIR)/InputEEData.o: $(OBJDIR)/$(TARGET).o + @echo $(MSG_OBJCPY_CMD) Converting \"InputEEData.eep\" to a binary file \"InputEEData.bin\" + avr-objcopy -I ihex -O binary InputEEData.eep InputEEData.bin + + @echo $(MSG_OBJCPY_CMD) Converting \"InputEEData.bin\" to a object file \"InputEEData.o\" + avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data InputEEData.bin $@ + +# Include LUFA build script makefiles +include ../core.mk +include ../gcc.mk +include ../hid.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/License.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/License.txt new file mode 100644 index 0000000..322c762 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/License.txt @@ -0,0 +1,32 @@ + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + + + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/ModulesOverview.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/ModulesOverview.md new file mode 100644 index 0000000..1fd9cc1 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/ModulesOverview.md @@ -0,0 +1,38 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Modules Overview +---------------- + +The following modules are currently included: + + - [ATPROGRAM](atprogram.md) - Device Programming + - [AVRDUDE](avrdude.md) - Device Programming + - [CORE](core.md) - DMBS Core Functionality + - [CPPCHECK](cppcheck.md) - Static Code Analysis + - [DFU](dfu.md) - Device Programming + - [DOXYGEN](doxygen.md) - Automated Source Code Documentation + - [GCC](gcc.md) - Compiling/Assembling/Linking with GCC + - [HID](hid.md) - Device Programming + +## Importing modules into your project makefile + +To use a module, it is recommended to add the following boilerplate to your +makefile: + + # Include DMBS build script makefiles + DMBS_PATH ?= ../DMBS + +Which can then used to indicate the location of your DMBS installation, relative +to the current directory, when importing modules. For example: + + DMBS_PATH ?= ../DMBS + include $(DMBS_PATH)/core.mk + include $(DMBS_PATH)/gcc.mk + +Imports the `CORE` and `GCC` modules from DMBS using a single path relative to +your project's makefile. + +If you wish to write your own DMBS module(s), +[see the documentation here for more details.](WritingYourOwnModules.md) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md new file mode 100644 index 0000000..bb8eb17 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md @@ -0,0 +1,93 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Writing Your Own Modules +------------------------ + +A DMBS module consists of the several boilerplate sections, explained below. + +## The DMBS module hooks + +Your module needs to advertise to DMBS its name, its makefile targets, the +required and optional variables, and the variables and macros the module +provides for use elsewhere. This is achieved with the following section: + + DMBS_BUILD_MODULES += EXAMPLE + DMBS_BUILD_TARGETS += example-target another-target + DMBS_BUILD_MANDATORY_VARS += MANDATORY_NAME ALSO_MANDATORY + DMBS_BUILD_OPTIONAL_VARS += OPTIONAL_NAME ALSO_OPTIONAL + DMBS_BUILD_PROVIDED_VARS += MEANING_OF_LIFE + DMBS_BUILD_PROVIDED_MACROS += STRIP_WHITESPACE + +The example above declares that this module is called `EXAMPLE`, and exposes the +listed targets, variable requirements and provides variables and macros. + +Your module name and provided variable/macro names must be unique, however you +can (and should) re-use variable names where appropriate if they apply to +several modules (such as `ARCH` to specify the project's microcontroller +architecture). Re-using targets is not recommended, but can be used to extend +the dependencies of another module's targets. + +## Importing the CORE module + +Next, your module should always import the DMBS `CORE` module, via the +following: + + # Import the CORE module of DMBS + DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) + include $(DMBS_MODULE_PATH)/core.mk + +This ensures that the `make help` target is always available. In addition, the +`CORE` module exposes some [commonly used macros and variables](core.md) to +your module. + +## Setting optional variable's defaults + +If a variable is optional, you should provide a default value. Do this via the +`?=` operator of `make`, which sets a variable's value if it has not yet been +set: + + MY_OPTIONAL_VARIABLE ?= some_default_value + +## Sanity checking user input + +Sanity checks are what make DMBS useful. Where possible, validate user input and +convert generated errors to human-friendly messages. This can be achieved by +enforcing that all the declared module mandatory variables have been set by the +user: + + # Sanity-check values of mandatory user-supplied variables + $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) + +As well as complaining if they are set, but currently empty: + + $(call ERROR_IF_EMPTY, SOME_MANDATORY_VARIABLE) + $(call ERROR_IF_EMPTY, SOME_OPTIONAL_BUT_NON_EMPTY_VARIABLE) + +Or even if they are boolean (`Y` or `N`) variables that have an invalid value: + + $(call ERROR_IF_NONBOOL, SOME_BOOL_VARIABLE) + +## Adding targets + +The meat of a DMBS module is the targets, which are run when the user types +`make {target name}` from the command line. These can be as complex or simple +as you like. See the GNU make manual for information on writing make targets. + + example-target: + echo "Your DMBS module works!" + +## And finally, list the PHONYs + +Important in GNU Make is the concept of phony targets; this special directive +tells make that a given target should never be considered a valid file. Listing +phonies ensures that, for example, if your module had a target called `build`, +it would always run when the user types `make build` from the command line, even +if a file called `build` existed in the user project folder. + +You can list module-internal targets here, as well as mark all public targets +via the module header's `DMBS_BUILD_TARGETS` variable. + + # Phony build targets for this module + .PHONY: $(DMBS_BUILD_TARGETS) some-module-internal-target another-internal-target diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.md new file mode 100644 index 0000000..ea1b0d9 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.md @@ -0,0 +1,119 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: ATPROGRAM +----------------- + +The ATPROGRAM module provides build targets for use with the official +`ATPROGRAM` back-end utility distributed with the free +[Atmel Studio](http://www.atmel.com) software released by Atmel. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/atprogram.mk + +## Prerequisites: + +This module requires the `atprogram.exe` utility to be available in your +system's `PATH` variable. The `atprogram.exe` utility is distributed in Atmel +Studio (usually) inside the application install folder's `atbackend` +subdirectory. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + +
    atprogramProgram the device FLASH memory with the application's executable data.
    atprogram-eeProgram the device EEPROM memory with the application's EEPROM data.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + + + + + +
    MCUName of the Atmel processor model (e.g. `at90usb1287`).
    TARGETName of the application output file prefix (e.g. `TestApplication`).
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + + + + + + + + + +
    ATPROGRAM_PROGRAMMERName of the Atmel programmer or debugger tool to communicate with (e.g. `jtagice3`). Default is `atmelice`.
    ATPROGRAM_INTERFACEName of the programming interface to use when programming the target (e.g. `spi`). Default is `jtag`.
    ATPROGRAM_PORTName of the communication port to use when when programming with a serially connected tool (e.g. `COM2`). Default is `usb`.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.mk new file mode 100644 index 0000000..26addd6 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/atprogram.mk @@ -0,0 +1,66 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += ATPROGRAM +DMBS_BUILD_TARGETS += atprogram atprogram-ee +DMBS_BUILD_MANDATORY_VARS += MCU TARGET +DMBS_BUILD_OPTIONAL_VARS += ATPROGRAM_PROGRAMMER ATPROGRAM_INTERFACE ATPROGRAM_PORT +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Default values of optionally user-supplied variables +ATPROGRAM_PROGRAMMER ?= atmelice +ATPROGRAM_INTERFACE ?= jtag +ATPROGRAM_PORT ?= + +# Sanity check user supplied values +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, MCU) +$(call ERROR_IF_EMPTY, TARGET) +$(call ERROR_IF_EMPTY, ATPROGRAM_PROGRAMMER) +$(call ERROR_IF_EMPTY, ATPROGRAM_INTERFACE) + +# Output Messages +MSG_ATPROGRAM_CMD := ' [ATPRGRM] :' + +# Construct base atprogram command flags +BASE_ATPROGRAM_FLAGS := --tool $(ATPROGRAM_PROGRAMMER) --interface $(ATPROGRAM_INTERFACE) --device $(MCU) +ifneq ($(ATPROGRAM_PORT),) + BASE_ATPROGRAM_FLAGS += --port $(ATPROGRAM_PORT) +endif + +# Construct the flags to use for the various memory spaces +ifeq ($(ARCH), AVR8) + ATPROGRAM_FLASH_FLAGS := --chiperase --flash + ATPROGRAM_EEPROM_FLAGS := --eeprom +else ifeq ($(ARCH), XMEGA) + ATPROGRAM_FLASH_FLAGS := --erase --flash + ATPROGRAM_EEPROM_FLAGS := --eeprom +else ifeq ($(ARCH), UC3) + ATPROGRAM_FLASH_FLAGS := --erase + ATPROGRAM_EEPROM_FLAGS := --eeprom +else + $(error Unsupported architecture "$(ARCH)") +endif + +# Programs in the target FLASH memory using ATPROGRAM +atprogram: $(TARGET).elf $(MAKEFILE_LIST) + @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" FLASH using \"$(ATPROGRAM_PROGRAMMER)\" + atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_FLASH_FLAGS) --file $< + +# Programs in the target EEPROM memory using ATPROGRAM +atprogram-ee: $(TARGET).elf $(MAKEFILE_LIST) + @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" EEPROM using \"$(ATPROGRAM_PROGRAMMER)\" + atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_EEPROM_FLAGS) --file $< + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.md new file mode 100644 index 0000000..11ea46c --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.md @@ -0,0 +1,190 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: AVRDUDE +----------------- + +The AVRDUDE module provides build targets for use with the official +open source `AVRDUDE` programmer utility, for the reprogramming of Atmel devices +using a wide variety of official and non-official programming devices and +bootloaders. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/avrdude.mk + +## Prerequisites: + +This module requires the `avrdude` utility to be available in your +system's `PATH` variable. The `avrdude` utility is distributed on the project's +[official site](https://savannah.nongnu.org/projects/avrdude) but is also +made available in many *nix operating system's package managers. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    avrdude-lfuseProgram the device low fuse. Requires AVRDUDE_LFUSE variable set.
    avrdude-hfuseProgram the device high fuse. Requires AVRDUDE_HFUSE variable set.
    avrdude-efuseProgram the device extended fuse. Requires AVRDUDE_EFUSE variable set.
    avrdude-lockProgram the device lock bits. Requires AVRDUDE_LOCK variable set.
    avrdude-fuses + Program the device fuses (lfuse, hfuse, efuse, lock bits).
    + Requires AVRDUDE_LFUSE, AVRDUDE_HFUSE and AVRDUDE_LOCK variable set. AVRDUDE_EFUSE is optional. +
    avrdudeProgram the device FLASH memory with the application's executable data.
    avrdude-eeProgram the device EEPROM memory with the application's EEPROM data.
    avrdude-allSame as avrdude + avrdude-fuses.
    avrdude-all-eeSame as avrdude + avrdude-ee + avrdude-fuses.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + + + + + +
    MCUName of the Atmel processor model (e.g. `at90usb1287`).
    TARGETName of the application output file prefix (e.g. `TestApplication`).
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AVRDUDE_MCUOverride the `MCU` variable for `avrdude`. On some controllers, `avrdude` expects another spelling than the compiler needs. Default is `MCU`.
    AVRDUDE_PROGRAMMERName of the programmer/debugger tool or bootloader to communicate with (e.g. `jtagicemkii`). Default is `jtagicemkii`.
    AVRDUDE_PORTName of the communication port to use when when programming with a serially connected tool (e.g. `COM2`). Default is `usb`.
    AVRDUDE_FLAGSAdditional flags to pass to `avrdude` when invoking the tool. Default is empty (no additional flags).
    AVRDUDE_MEMORYMemory space to program when executing the `avrdude` target (e.g. 'application` for an XMEGA device). Default is `flash`.
    AVRDUDE_BAUDBaud rate to use when executing the `avrdude` target (e.g. '115200` for an Optiboot device). Default is empty.
    AVRDUDE_BITCLKISP bit clock period in microseconds to use when executing the `avrdude` target (format: float). Must be minimum 4x longer than MCU clock period. Default is 1 us.
    AVRDUDE_HFUSEFuse setting to use when executing the `avrdude-hfuse` target (format: 0x??). Default is empty.
    AVRDUDE_EFUSEFuse setting to use when executing the `avrdude-efuse` target (format: 0x??). Default is empty.
    AVRDUDE_LFUSEFuse setting to use when executing the `avrdude-lfuse` target (format: 0x??). Default is empty.
    AVRDUDE_LOCKBit bits setting to use when executing the `avrdude-lock` target (format: 0x??). Default is empty.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20200412 +Made `AVRDUDE_EFUSE` optional for `avrdude-fuses` because not every AVR has this fuse. + +### 20171231 +Added `AVRDUDE_BAUD`, `AVRDUDE_HFUSE`, `AVRDUDE_EFUSE`, `AVRDUDE_LFUSE` and +`AVRDUDE_LOCK` optional variables. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.mk new file mode 100644 index 0000000..64cb445 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/avrdude.mk @@ -0,0 +1,99 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += AVRDUDE +DMBS_BUILD_TARGETS += avrdude-lfuse avrdude-hfuse avrdude-efuse avrdude-lock avrdude-fuses +DMBS_BUILD_TARGETS += avrdude avrdude-ee avrdude-all avrdude-all-ee +DMBS_BUILD_MANDATORY_VARS += MCU TARGET +DMBS_BUILD_OPTIONAL_VARS += AVRDUDE_MCU AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS AVRDUDE_MEMORY AVRDUDE_BAUD +DMBS_BUILD_OPTIONAL_VARS += AVRDUDE_LFUSE AVRDUDE_HFUSE AVRDUDE_EFUSE AVRDUDE_LOCK AVRDUDE_BITCLK +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Default values of optionally user-supplied variables +AVRDUDE_MCU ?= $(MCU) +AVRDUDE_PROGRAMMER ?= jtagicemkii +AVRDUDE_PORT ?= usb +AVRDUDE_FLAGS ?= +AVRDUDE_MEMORY ?= flash +AVRDUDE_LFUSE ?= +AVRDUDE_HFUSE ?= +AVRDUDE_EFUSE ?= +AVRDUDE_LOCK ?= +AVRDUDE_BAUD ?= +AVRDUDE_BITCLK ?= + +# Set avrdude-efuse-target as dependency for avrdude-fuses only if defined, because not every AVR has this fuse +ifneq ($(AVRDUDE_EFUSE),) + AVRDUDE_EFUSE_TARGET := avrdude-efuse +else + AVRDUDE_EFUSE_TARGET := +endif + +# Sanity check user supplied values +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, AVRDUDE_MCU) +$(call ERROR_IF_EMPTY, TARGET) +$(call ERROR_IF_EMPTY, AVRDUDE_PROGRAMMER) +$(call ERROR_IF_EMPTY, AVRDUDE_PORT) + +# Output Messages +MSG_AVRDUDE_CMD := ' [AVRDUDE] :' + +# Construct base avrdude command flags +BASE_AVRDUDE_FLAGS := -p $(AVRDUDE_MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +ifneq ($(AVRDUDE_BAUD),) + BASE_AVRDUDE_FLAGS += -b $(AVRDUDE_BAUD) +endif +ifneq ($(AVRDUDE_BITCLK),) + BASE_AVRDUDE_FLAGS += -B $(AVRDUDE_BITCLK) +endif + +# Programs in the target FLASH memory using AVRDUDE +avrdude: $(TARGET).hex $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" FLASH using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + avrdude $(BASE_AVRDUDE_FLAGS) -U $(AVRDUDE_MEMORY):w:$< $(AVRDUDE_FLAGS) + +# Programs in the target EEPROM memory using AVRDUDE +avrdude-ee: $(TARGET).eep $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" EEPROM using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + avrdude $(BASE_AVRDUDE_FLAGS) -U eeprom:w:$< $(AVRDUDE_FLAGS) + +# Programs in the target fuses using AVRDUDE +avrdude-lfuse: $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" low fuse using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + $(call ERROR_IF_EMPTY, AVRDUDE_LFUSE) + avrdude $(BASE_AVRDUDE_FLAGS) -Ulfuse:w:$(AVRDUDE_LFUSE):m $(AVRDUDE_FLAGS) + +avrdude-hfuse: $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" high fuse using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + $(call ERROR_IF_EMPTY, AVRDUDE_HFUSE) + avrdude $(BASE_AVRDUDE_FLAGS) -Uhfuse:w:$(AVRDUDE_HFUSE):m $(AVRDUDE_FLAGS) + +avrdude-efuse: $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" extended fuse using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + $(call ERROR_IF_EMPTY, AVRDUDE_EFUSE) + avrdude $(BASE_AVRDUDE_FLAGS) -Uefuse:w:$(AVRDUDE_EFUSE):m $(AVRDUDE_FLAGS) + +avrdude-lock: $(MAKEFILE_LIST) + @echo $(MSG_AVRDUDE_CMD) Programming device \"$(AVRDUDE_MCU)\" lock bits using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" + $(call ERROR_IF_EMPTY, AVRDUDE_LOCK) + avrdude $(BASE_AVRDUDE_FLAGS) -Ulock:w:$(AVRDUDE_LOCK):m $(AVRDUDE_FLAGS) + +avrdude-fuses: avrdude-lfuse avrdude-hfuse $(AVRDUDE_EFUSE_TARGET) avrdude-lock + +avrdude-all: avrdude avrdude-fuses + +avrdude-all-ee: avrdude avrdude-ee avrdude-fuses + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.md new file mode 100644 index 0000000..406abfe --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.md @@ -0,0 +1,136 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: CORE +------------ + +The CORE module provides the core DMBS infrastructure used by other DMBS +modules, and must always be imported. Additionally, this module provides the +help system for DMBS. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/core.mk + +## Prerequisites: + +None. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    helpShow help for the current project, including a list of all available targets, variables and macros from the imported modules.
    list_targetsShow a list of all build targets from the imported modules.
    list_modulesShow a list of all imported modules.
    list_mandatoryShow a list of all mandatory variables from the imported modules.
    list_optionalShow a list of all optional variables from the imported modules.
    list_providedShow a list of all variables provided by the imported modules.
    list_macrosShow a list of all macros provided by the imported modules.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + +
    N/AThis module has no mandatory variables.
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + +
    N/AThis module has no optional variables.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    DMBS_VERSIONCurrent version of this DMBS release, as a ISO 8601 integer (such as `20160403` for `2016-04-03`).
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + + + + + + + + + + + + + +
    DMBS_CHECK_VERSIONMacro to check the current DMBS version against the first argument and abort if the required version is newer than the current version.
    ERROR_IF_UNSETMacro to check the given makefile variable name passed as the first argument, and abort if it has not been set by any makefile module.
    ERROR_IF_EMPTYMacro to check the given makefile variable name passed as the first argument, and abort if it has an empty value.
    ERROR_IF_NONBOOLMacro to check the given makefile variable name passed as the first argument, and abort if it has a value other than `Y` or `N`.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_core.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.mk similarity index 55% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_core.mk rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.mk index 7d97466..c9d6e21 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_core.mk +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/core.mk @@ -1,86 +1,61 @@ +# Include Guard +ifeq ($(filter CORE, $(DMBS_BUILD_MODULES)),) + # -# LUFA Library -# Copyright (C) Dean Camera, 2014. +# DMBS Build System +# Released into the public domain. # # dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org +# www.fourwalledcubicle.com # -LUFA_BUILD_MODULES += CORE -LUFA_BUILD_TARGETS += help list_targets list_modules list_mandatory list_optional list_provided list_macros -LUFA_BUILD_MANDATORY_VARS += -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA Core Build System Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of core build targets for the LUFA build system -# ----------------------------------------------------------------------------- -# TARGETS: -# -# help - Build system help -# list_targets - List all build targets -# list_modules - List all build modules -# list_mandatory - List all mandatory make variables required by -# the included build modules of the application -# list_optional - List all optional make variables required by -# the included build modules of the application -# list_provided - List all provided make variables from the -# included build modules of the application -# list_macros - List all provided make macros from the -# included build modules of the application -# -# MANDATORY PARAMETERS: -# -# (None) -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- +DMBS_BUILD_MODULES += CORE +DMBS_BUILD_TARGETS += help list_targets list_modules list_mandatory list_optional list_provided list_macros +DMBS_BUILD_MANDATORY_VARS += +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += DMBS_VERSION +DMBS_BUILD_PROVIDED_MACROS += DMBS_CHECK_VERSION ERROR_IF_UNSET ERROR_IF_EMPTY ERROR_IF_NONBOOL SHELL = /bin/sh +# Current DMBS release version +DMBS_VERSION := 20200719 + +# Macro to check the DMBS version, aborts if the given DMBS version is below the current version +DMBS_CHECK_VERSION ?= $(if $(filter-out 0, $(shell test $(DMBS_VERSION) -lt $(1); echo $$?)), , $(error DMBS version $(1) or newer required, current version is $(DMBS_VERSION))) + +# Macros to use in other modules to check various conditions +ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) +ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) +ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) + # Converts a given input to a printable output using "(None)" if no items are in the list CONVERT_TO_PRINTABLE = $(if $(strip $(1)), $(1), (None)) - # Build sorted and filtered lists of the included build module data -SORTED_LUFA_BUILD_MODULES = $(sort $(LUFA_BUILD_MODULES)) -SORTED_LUFA_BUILD_TARGETS = $(sort $(LUFA_BUILD_TARGETS)) -SORTED_LUFA_MANDATORY_VARS = $(sort $(LUFA_BUILD_MANDATORY_VARS)) -SORTED_LUFA_OPTIONAL_VARS = $(filter-out $(SORTED_LUFA_MANDATORY_VARS), $(sort $(LUFA_BUILD_OPTIONAL_VARS))) -SORTED_LUFA_PROVIDED_VARS = $(sort $(LUFA_BUILD_PROVIDED_VARS)) -SORTED_LUFA_PROVIDED_MACROS = $(sort $(LUFA_BUILD_PROVIDED_MACROS)) +SORTED_DMBS_BUILD_MODULES = $(sort $(DMBS_BUILD_MODULES)) +SORTED_DMBS_BUILD_TARGETS = $(sort $(DMBS_BUILD_TARGETS)) +SORTED_DMBS_MANDATORY_VARS = $(sort $(DMBS_BUILD_MANDATORY_VARS)) +SORTED_DMBS_OPTIONAL_VARS = $(filter-out $(SORTED_DMBS_MANDATORY_VARS), $(sort $(DMBS_BUILD_OPTIONAL_VARS))) +SORTED_DMBS_PROVIDED_VARS = $(sort $(DMBS_BUILD_PROVIDED_VARS)) +SORTED_DMBS_PROVIDED_MACROS = $(sort $(DMBS_BUILD_PROVIDED_MACROS)) # Create printable versions of the sorted build module data (use "(None)" when no data is available) -PRINTABLE_LUFA_BUILD_MODULES = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_BUILD_MODULES)) -PRINTABLE_LUFA_BUILD_TARGETS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_BUILD_TARGETS)) -PRINTABLE_LUFA_MANDATORY_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_MANDATORY_VARS)) -PRINTABLE_LUFA_OPTIONAL_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_OPTIONAL_VARS)) -PRINTABLE_LUFA_PROVIDED_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_PROVIDED_VARS)) -PRINTABLE_LUFA_PROVIDED_MACROS = $(call CONVERT_TO_PRINTABLE, $(SORTED_LUFA_PROVIDED_MACROS)) +PRINTABLE_DMBS_BUILD_MODULES = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_BUILD_MODULES)) +PRINTABLE_DMBS_BUILD_TARGETS = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_BUILD_TARGETS)) +PRINTABLE_DMBS_MANDATORY_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_MANDATORY_VARS)) +PRINTABLE_DMBS_OPTIONAL_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_OPTIONAL_VARS)) +PRINTABLE_DMBS_PROVIDED_VARS = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_PROVIDED_VARS)) +PRINTABLE_DMBS_PROVIDED_MACROS = $(call CONVERT_TO_PRINTABLE, $(SORTED_DMBS_PROVIDED_MACROS)) help: @echo "===================================================================" - @echo " LUFA Build System 2.0 " - @echo " (C) Dean Camera, 2014 { dean @ fourwalledcubicle . com } " + @echo " The DMBS Build System " + @echo " By Dean Camera { dean @ fourwalledcubicle . com } " @echo "===================================================================" @echo "DESCRIPTION: " @echo " This build system is a set of makefile modules for (GNU) Make, to " - @echo " provide a simple system for building LUFA powered applications. " + @echo " provide a simple system for building DMBS powered applications. " @echo " Each makefile module can be included from within a user makefile, " @echo " to expose the build rules documented in the comments at the top of" @echo " each build module. " @@ -95,74 +70,74 @@ help: @echo " well as the actual invoked command. To suppress the output of the " @echo " invoked commands and show only the friendly command output, run " @echo " make with the \"-s\" switch added before the target(s). " - @echo " " - @echo "SEE ALSO: " - @echo " For more information, see the 'Build System' chapter of the LUFA " - @echo " project documentation. " @echo "===================================================================" @echo " " @echo " Currently used build system modules in this application: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_BUILD_MODULES:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_BUILD_MODULES:%= - %\n)" @echo " " @echo " " @echo " Currently available build targets in this application: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_BUILD_TARGETS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_BUILD_TARGETS:%= - %\n)" @echo " " @echo " " @echo " Mandatory variables required by the selected build Modules: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_MANDATORY_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_MANDATORY_VARS:%= - %\n)" @echo " " @echo " " @echo " Optional variables required by the selected build Modules: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_OPTIONAL_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_OPTIONAL_VARS:%= - %\n)" @echo " " @echo " " @echo " Variables provided by the selected build Modules: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_PROVIDED_VARS:%= - %\n)" @echo " " @echo " " @echo " Macros provided by the selected build Modules: " @echo " " - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_MACROS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_PROVIDED_MACROS:%= - %\n)" @echo " " @echo "===================================================================" - @echo " The LUFA BuildSystem 2.0 - Powered By Positive Thinking (tm) " + @echo " The DMBS Build System $(DMBS_VERSION) - Making MAKE easier." @echo "===================================================================" # Lists build modules included by the project makefile, in alphabetical order list_modules: @echo Currently Used Build System Modules: - @printf " %b" "$(PRINTABLE_LUFA_BUILD_MODULES:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_BUILD_MODULES:%= - %\n)" # Lists build targets included by the project makefile, in alphabetical order list_targets: @echo Currently Available Build Targets: - @printf " %b" "$(PRINTABLE_LUFA_BUILD_TARGETS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_BUILD_TARGETS:%= - %\n)" # Lists mandatory variables that must be set by the project makefile, in alphabetical order list_mandatory: @echo Mandatory Variables for Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_MANDATORY_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_MANDATORY_VARS:%= - %\n)" # Lists optional variables that must be set by the project makefile, in alphabetical order list_optional: @echo Optional Variables for Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_OPTIONAL_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_OPTIONAL_VARS:%= - %\n)" # Lists variables provided by the included build modules, in alphabetical order list_provided: @echo Variables Provided by the Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_VARS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_PROVIDED_VARS:%= - %\n)" # Lists macros provided by the included build modules, in alphabetical order list_macros: @echo Macros Provided by the Included Modules: - @printf " %b" "$(PRINTABLE_LUFA_PROVIDED_MACROS:%= - %\n)" + @printf " %b" "$(PRINTABLE_DMBS_PROVIDED_MACROS:%= - %\n)" + +# Debugging; "make print-VARNAME" will output the variable VARNAME's value +print-%: + @printf "%s = %s" $(@:print-%=%) $($(@:print-%=%)) # Disable default in-built make rules (those that are needed are explicitly # defined, and doing so has performance benefits when recursively building) @@ -172,4 +147,6 @@ endif .SUFFIXES: # Phony build targets for this module -.PHONY: help list_modules list_targets list_mandatory list_optional list_provided list_macros +.PHONY: $(DMBS_BUILD_TARGETS) + +endif diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.md new file mode 100644 index 0000000..ec0e38d --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.md @@ -0,0 +1,134 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: CPPCHECK +----------------- + +The CPPCHECK module provides build targets to perform static analysis of the +user application, using the open source `cppcheck` tool. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/cppcheck.mk + +## Prerequisites: + +This module requires the `cppcheck` utility to be available in your system's +`PATH` variable. The `cppcheck` utility is distributed on the project's +[official site](http://cppcheck.sourceforge.net/) but is also +made available in many *nix operating system's package managers. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + +
    cppcheckScan the project with CPPCHECK, and show all discovered issues.
    cppcheck-configCheck the project with CPPCHECK, to find missing header paths.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + +
    SRCList of all project source files to scan.
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CPPCHECK_INCLUDESExtra include paths to search, for any missing header files. Default is empty (no additional paths).
    CPPCHECK_EXCLUDESList of source files, file paths or path fragments to exclude from the scan. Default is empty (no exclusions).
    CPPCHECK_MSG_TEMPLATETemplate for error and warning message output. Default is `{file}:{line}: {severity} ({id}): {message}`.
    CPPCHECK_ENABLEList of CPPCHECK checks to enable. Default is `all`.
    CPPCHECK_SUPPRESSList of CPPCHECK checks to ignore. Default is `variableScope missingInclude`.
    CPPCHECK_FAIL_ON_WARNINGBoolean, if `Y` the build will fail if CPPCHECK discovers any errors or warnings. If `N`, fail only on errors. Default is `Y`.
    CPPCHECK_QUIETBoolean, if `Y` CPPCHECK will suppress all output except for discovered errors or warnings. If `N`, scan progress will be emitted. Default is `Y`.
    CPPCHECK_FLAGS_Additional flags to pass to CPPCHECK when scans are started. Default is empty (no additional flags).
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.mk new file mode 100644 index 0000000..0c40413 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/cppcheck.mk @@ -0,0 +1,64 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += CPPCHECK +DMBS_BUILD_TARGETS += cppcheck cppcheck-config +DMBS_BUILD_MANDATORY_VARS += SRC +DMBS_BUILD_OPTIONAL_VARS += CPPCHECK_INCLUDES CPPCHECK_EXCLUDES CPPCHECK_MSG_TEMPLATE CPPCHECK_ENABLE \ + CPPCHECK_SUPPRESS CPPCHECK_FAIL_ON_WARNING CPPCHECK_QUIET CPPCHECK_FLAGS +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Default values of optionally user-supplied variables +CPPCHECK_INCLUDES ?= +CPPCHECK_EXCLUDES ?= +CPPCHECK_MSG_TEMPLATE ?= {file}:{line}: {severity} ({id}): {message} +CPPCHECK_ENABLE ?= all +CPPCHECK_SUPPRESS ?= variableScope missingInclude +CPPCHECK_FAIL_ON_WARNING ?= Y +CPPCHECK_QUIET ?= Y +CPPCHECK_FLAGS ?= + +# Sanity check user supplied values +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, SRC) +$(call ERROR_IF_EMPTY, CPPCHECK_MSG_TEMPLATE) +$(call ERROR_IF_EMPTY, CPPCHECK_ENABLE) +$(call ERROR_IF_NONBOOL, CPPCHECK_FAIL_ON_WARNING) +$(call ERROR_IF_NONBOOL, CPPCHECK_QUIET) + +# Build a default argument list for cppcheck +BASE_CPPCHECK_FLAGS := --template="$(CPPCHECK_MSG_TEMPLATE)" $(CPPCHECK_INCLUDES:%=-I%) $(CPPCHECK_EXCLUDES:%=-i%) --inline-suppr --force --std=c99 + +# Sanity check parameters and construct additional command line arguments to cppcheck +ifeq ($(CPPCHECK_FAIL_ON_WARNING), Y) + BASE_CPPCHECK_FLAGS += --error-exitcode=1 +endif +ifeq ($(CPPCHECK_QUIET), Y) + BASE_CPPCHECK_FLAGS += --quiet +endif + +# Output Messages +MSG_CPPCHECK_CMD := ' [CPPCHECK]:' + +# Checks the CPPCheck configuration as used in the user project, to determine if any paths are missing or invalid +cppcheck-config: $(MAKEFILE_LIST) + @echo $(MSG_CPPCHECK_CMD) Checking cppcheck configuration check on source files + cppcheck $(BASE_CPPCHECK_FLAGS) --check-config $(CPPCHECK_FLAGS) $(SRC) + +# Runs a static analysis using CPPCheck to determine if there are any issues +cppcheck: $(MAKEFILE_LIST) + @echo $(MSG_CPPCHECK_CMD) Performing static analysis on source files + cppcheck $(BASE_CPPCHECK_FLAGS) --enable=$(CPPCHECK_ENABLE) $(CPPCHECK_SUPPRESS:%=--suppress=%) $(CPPCHECK_FLAGS) $(SRC) + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.md new file mode 100644 index 0000000..456bbf6 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.md @@ -0,0 +1,122 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: DFU +----------------- + +The DFU module provides build targets to program a USB connected target running +a DFU class bootloader, via the official Atmel FLIP utility running via the +command line, or the open source `DFU-Programmer` tool. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/dfu.mk + +## Prerequisites: + +This module requires the `batchisp` utility to be available in your system's +`PATH` variable. The `batchisp` utility is distributed as part of Atmel's FLIP +software which can be downloaded from the [official site](http://www.atmel.com). + +This module requires the `dfu-programmer` utility to be available in your +system's `PATH` variable. The `dfu-programmer` utility is distributed from the +[official project site](https://dfu-programmer.github.io/). + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + + + + + +
    flipProgram the application into the device's flash memory, using Atmel FLIP.
    flip-eeProgram the application's EEPROM data into the device's EEPROM memory, using Atmel FLIP.
    dfuProgram the application into the device's flash memory, using `dfu-programmer`.
    dfu-eeProgram the application's EEPROM data into the device's EEPROM memory, using `dfu-programmer`.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + + + + + +
    MCUName of the Atmel processor model (e.g. `at90usb1287`).
    TARGETName of the application output file prefix (e.g. `TestApplication`).
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + +
    N/AThis module has no optional variables.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.mk new file mode 100644 index 0000000..ce214ef --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/dfu.mk @@ -0,0 +1,60 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += DFU +DMBS_BUILD_TARGETS += flip flip-ee dfu dfu-ee +DMBS_BUILD_MANDATORY_VARS += MCU TARGET +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Sanity-check values of mandatory user-supplied variables +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, MCU) +$(call ERROR_IF_EMPTY, TARGET) + +# Output Messages +MSG_COPY_CMD := ' [CP] :' +MSG_REMOVE_CMD := ' [RM] :' +MSG_DFU_CMD := ' [DFU] :' + +# Programs in the target FLASH memory using BATCHISP, the command line tool used by FLIP +flip: $(TARGET).hex $(MAKEFILE_LIST) + @echo $(MSG_DFU_CMD) Programming FLASH with batchisp using \"$<\" + batchisp -hardware usb -device $(MCU) -operation erase f loadbuffer $< program + batchisp -hardware usb -device $(MCU) -operation start reset 0 + +# Programs in the target EEPROM memory using BATCHISP, the command line tool used by FLIP +flip-ee: $(TARGET).eep $(MAKEFILE_LIST) + @echo $(MSG_COPY_CMD) Copying EEP file to temporary file \"$<.hex\" + cp $< $<.hex + @echo $(MSG_DFU_CMD) Programming EEPROM with batchisp using \"$<.hex\" + batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $<.hex program + batchisp -hardware usb -device $(MCU) -operation start reset 0 + @echo $(MSG_REMOVE_CMD) Removing temporary file \"$<.hex\" + rm $<.hex + +# Programs in the target FLASH memory using DFU-PROGRAMMER +dfu: $(TARGET).hex $(MAKEFILE_LIST) + @echo $(MSG_DFU_CMD) Programming FLASH with dfu-programmer using \"$<\" + dfu-programmer $(MCU) erase + dfu-programmer $(MCU) flash $< + dfu-programmer $(MCU) reset + +# Programs in the target EEPROM memory using DFU-PROGRAMMER +dfu-ee: $(TARGET).eep $(MAKEFILE_LIST) + @echo $(MSG_DFU_CMD) Programming EEPROM with dfu-programmer using \"$<\" + dfu-programmer $(MCU) flash --eeprom $< + dfu-programmer $(MCU) reset + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.md new file mode 100644 index 0000000..837704a --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.md @@ -0,0 +1,118 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: DOXYGEN +----------------- + +The DOXYGEN module provides build targets to automatically generate API +documentation for a project, using the open-source Doxygen tool. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/doxygen.mk + +## Prerequisites: + +This module requires the `doxygen` utility to be available in your system's +`PATH` variable. The `doxygen` utility is distributed on the project's +[official site](http://doxygen.org/) but is also +made available in many *nix operating system's package managers. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + +
    doxygenGenerate project documentation, via Doxygen.
    doxygen-createCreate a new project Doxygen template, which can then be customized.
    doxygen-upgradeUpgrade an existing project Doxygen template to the latest Doxygen version.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + +
    N/AThis module has no mandatory variables.
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + + + + + + + + + +
    DOXYGEN_CONFName of the Doxygen project configuration file that should be used when generating documentation, or creating/upgrading the configuration file.
    DOXYGEN_FAIL_ON_WARNINGBoolean, if `Y` the build will fail if Doxygen encounters any errors or warnings. If `N`, fail only on errors. Default is `Y`.
    DOXYGEN_OVERRIDE_PARAMSList of `NAME=VALUE` parameters which should override the values specified in the project configuration file, when building documentation.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.mk new file mode 100644 index 0000000..f37f215 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/doxygen.mk @@ -0,0 +1,58 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += DOXYGEN +DMBS_BUILD_TARGETS += doxygen doxygen-upgrade doxygen-create +DMBS_BUILD_MANDATORY_VARS += +DMBS_BUILD_OPTIONAL_VARS += DOXYGEN_CONF DOXYGEN_FAIL_ON_WARNING DOXYGEN_OVERRIDE_PARAMS +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Default values of optionally user-supplied variables +DOXYGEN_CONF ?= doxyfile +DOXYGEN_FAIL_ON_WARNING ?= Y +DOXYGEN_OVERRIDE_PARAMS ?= QUIET=YES + +# Sanity check user supplied values +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, DOXYGEN_CONF) +$(call ERROR_IF_NONBOOL, DOXYGEN_FAIL_ON_WARNING) + +# Output Messages +MSG_DOXYGEN_CMD := ' [DOXYGEN] :' + +# Determine Doxygen invocation command +BASE_DOXYGEN_CMD := ( cat $(DOXYGEN_CONF) $(DOXYGEN_OVERRIDE_PARAMS:%=; echo "%") ) | doxygen - +ifeq ($(DOXYGEN_FAIL_ON_WARNING), Y) + DOXYGEN_CMD := if ( $(BASE_DOXYGEN_CMD) 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then exit 1; fi; +else + DOXYGEN_CMD := $(BASE_DOXYGEN_CMD) +endif + +# Error if the specified Doxygen configuration file does not exist +$(DOXYGEN_CONF): + $(error Doxygen configuration file $@ does not exist) + +# Builds the project documentation using the specified configuration file and the DOXYGEN tool +doxygen: $(DOXYGEN_CONF) $(MAKEFILE_LIST) + @echo $(MSG_DOXYGEN_CMD) Configuration file \"$(DOXYGEN_CONF)\" with parameters \"$(DOXYGEN_OVERRIDE_PARAMS)\" + $(DOXYGEN_CMD) + +# Upgrades an existing Doxygen configuration file to the latest Doxygen template, preserving settings +doxygen-upgrade: $(DOXYGEN_CONF) $(MAKEFILE_LIST) + @echo $(MSG_DOXYGEN_CMD) Upgrading configuration file \"$(DOXYGEN_CONF)\" with latest template + doxygen -u $(DOXYGEN_CONF) > /dev/null + +# Creates a new Doxygen configuration file with the set file name +doxygen-create: $(MAKEFILE_LIST) + @echo $(MSG_DOXYGEN_CMD) Creating new configuration file \"$(DOXYGEN_CONF)\" with latest template + doxygen -g $(DOXYGEN_CONF) > /dev/null diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.md new file mode 100644 index 0000000..760de24 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.md @@ -0,0 +1,224 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: GCC +----------------- + +The GCC module provides build targets to compile a user application, using a +variant of GCC for a specific target architecture (such as `avr-gcc`). + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/gcc.mk + +## Prerequisites: + +This module requires the GCC compiler to be installed and available in the +system's `PATH` variable for the desired target architecture. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sizeShow the compiled binary size for the various memory segments.
    symbol-sizesShow the size of each symbol in the compiled binary (useful to find large functions to optimize further).
    allBuild application and generate all binary (BIN, ELF, HEX) and auxiliary (LSS, MAP, SYM, etc.) output files.
    libGenerate a static `.a` library from the application code, containing the flash region's data.
    elfGenerate an ELF debug file from the application code, containing all region's data.
    binGenerate a flat BIN binary file from the application code, containing the flash region's data.
    hexGenerate a pair of Intel HEX files from the application code, containing the flash region's data (HEX) and EEPROM data (EEP).
    lssGenerate a LSS listing file showing the disassembly of the compiled application.
    cleanRemove all generated project intermediary and binary output files.
    mostlycleanRemove all generated project intermediary output files, but preserve the binary output files.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + + + + + + + + + + + + + +
    MCUName of the Atmel processor model (e.g. `at90usb1287`).
    TARGETName of the application output file prefix (e.g. `TestApplication`).
    ARCHTarget device architecture (e.g. `AVR8`).
    SRCList of all project source files (C, C++, ASM).
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    COMPILER_PATHPath to the compiler to use, in case a specific compiler should be substituted for the one in the system's `PATH` variable. Default is blank (use `PATH` provided compiler).
    OPTIMIZATIONOptimization level to use when compiling C and C++ source files. Default is `s` (optimize for smallest size).
    C_STANDARDC language standard used when compiling C language source files. Default is `gnu99` (C99 standard with GNU extensions)./td> +
    CPP_STANDARDC++ language standard used when compiling C++ language source files. Default is `gnu++11` (C++11 standard with GNU extensions)./td> +
    F_CPUProcessor core clock frequency, in Hz. This is used by some architectures for functions such as software spin-loop delays. Default is blank (no value defined).
    C_FLAGSCommon GCC flags passed to the compiler for C language (C) input files. Default is blank (no additional flags).
    CPP_FLAGSCommon GCC flags passed to the compiler for C++ language (CPP) input files. Default is blank (no additional flags).
    ASM_FLAGSCommon GCC flags passed to the assembler for assembly language (S) input files. Default is blank (no additional flags).
    CC_FLAGSCommon GCC flags passed to the compiler for all source file types. Default is blank (no additional flags).
    LD_FLAGSExtra flags to pass to the GNU linker when linking the compiled object files into the resulting binary. Default is blank (no additional flags).
    LINKER_RELAXATIONSBoolean, if `Y` linker relaxations will be enabled to slightly reduce the resulting binary's size. Default is `Y`.
    JUMP_TABLESBoolean, if `Y` jump tables will be enabled to slightly reduce the resulting binary's size - note that this can cause incorrect jumps if the binary is relocated after compilation, such as for a bootloader. Default is `N`.
    LTOBoolean, if `Y` link time optimization will be enabled to reduce the resulting binary's size. For larger projects you might also want to add `-mcall-prologues` to the `CC_FLAGS`. Default is `N`.
    OBJDIRDirectory to store the intermediate object files, as they are generated from the source files. Default is `obj`.
    OBJECT_FILESList of additional `.o` object files to link into the final binary. Default is blank (no additional objects).
    DEBUG_FORMATDebug ELF file format to generate. Default is `dwarf-2`.
    DEBUG_LEVELLevel of the debugging information to generate in the compiled object files. Debug is 2 (medium level debugging information).
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20180122 +Changed C++ default language standard from gnu++98 to gnu++11. + +### 20171231 +Added `-fpack-struct` for C files only (not C++). +Added `-fno-exceptions` and `-fno-threadsafe-statics` for C++ source files. +Added file-specific compilation flags. +Added `LTO` optional variable. + +### 20170426 +Added `JUMP_TABLES` optional variable. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_build.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.mk similarity index 60% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_build.mk rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.mk index b9b144a..24c9b07 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_build.mk +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/gcc.mk @@ -1,120 +1,47 @@ # -# LUFA Library -# Copyright (C) Dean Camera, 2014. +# DMBS Build System +# Released into the public domain. # # dean [at] fourwalledcubicle [dot] com -# www.lufa-lib.org +# www.fourwalledcubicle.com # -LUFA_BUILD_MODULES += BUILD -LUFA_BUILD_TARGETS += size symbol-sizes all lib elf bin hex lss clean mostlyclean -LUFA_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC F_USB LUFA_PATH -LUFA_BUILD_OPTIONAL_VARS += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_FLAGS CPP_FLAGS ASM_FLAGS CC_FLAGS LD_FLAGS OBJDIR OBJECT_FILES DEBUG_TYPE DEBUG_LEVEL LINKER_RELAXATIONS COMPILER_PATH -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA GCC Compiler Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of targets to build a C, C++ and/or Assembly application -# via the AVR-GCC compiler. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# size - List built application size -# symbol-sizes - Print application symbols from the binary ELF -# file as a list sorted by size in bytes -# all - Build application and list size -# lib - Build and archive source files into a library -# elf - Build application ELF debug object file -# bin - Build application BIN binary object file -# hex - Build application HEX object file -# lss - Build application LSS assembly listing file -# clean - Remove all project intermediary and binary -# output files -# mostlyclean - Remove intermediary output files, but -# preserve binaries -# .s - Compile C/C++ source file into an assembly file -# for manual code inspection -# -# MANDATORY PARAMETERS: -# -# TARGET - Application name -# ARCH - Device architecture name -# MCU - Microcontroller device model name -# SRC - List of input source files (*.c, *.cpp, *.S) -# F_USB - Speed of the input clock of the USB controller -# in Hz -# LUFA_PATH - Path to the LUFA library core -# -# OPTIONAL PARAMETERS: -# -# BOARD - LUFA board hardware -# OPTIMIZATION - Optimization level -# C_STANDARD - C Language Standard to use -# CPP_STANDARD - C++ Language Standard to use -# F_CPU - Speed of the CPU, in Hz -# C_FLAGS - Flags to pass to the C compiler only -# CPP_FLAGS - Flags to pass to the C++ compiler only -# ASM_FLAGS - Flags to pass to the assembler only -# CC_FLAGS - Common flags to pass to the C/C++ compiler and -# assembler -# LD_FLAGS - Flags to pass to the linker -# LINKER_RELAXATIONS - Enable or disable linker relaxations to -# decrease binary size (note: can cause link -# failures on systems with an unpatched binutils) -# OBJDIR - Directory for the output object and dependency -# files; if equal to ".", the output files will -# be generated in the same folder as the sources -# OBJECT_FILES - Extra object files to link in to the binaries -# DEBUG_FORMAT - Format of the debugging information to -# generate in the compiled object files -# DEBUG_LEVEL - Level the debugging information to generate in -# the compiled object files -# COMPILER_PATH - Location of the GCC toolchain to use -# -# PROVIDED VARIABLES: -# -# (None) -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- +DMBS_BUILD_MODULES += GCC +DMBS_BUILD_TARGETS += size symbol-sizes all lib elf bin hex lss clean mostlyclean +DMBS_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC +DMBS_BUILD_OPTIONAL_VARS += COMPILER_PATH OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_FLAGS +DMBS_BUILD_OPTIONAL_VARS += CPP_FLAGS ASM_FLAGS CC_FLAGS LD_FLAGS OBJDIR OBJECT_FILES DEBUG_TYPE +DMBS_BUILD_OPTIONAL_VARS += DEBUG_LEVEL LINKER_RELAXATIONS JUMP_TABLES LTO +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += -SHELL = /bin/sh - -ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) -ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) -ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk # Default values of optionally user-supplied variables COMPILER_PATH ?= -BOARD ?= NONE OPTIMIZATION ?= s F_CPU ?= C_STANDARD ?= gnu99 -CPP_STANDARD ?= gnu++98 +CPP_STANDARD ?= gnu++11 C_FLAGS ?= CPP_FLAGS ?= ASM_FLAGS ?= CC_FLAGS ?= -OBJDIR ?= . +OBJDIR ?= obj OBJECT_FILES ?= DEBUG_FORMAT ?= dwarf-2 DEBUG_LEVEL ?= 2 LINKER_RELAXATIONS ?= Y +JUMP_TABLES ?= N +LTO ?= N # Sanity check user supplied values -$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) $(call ERROR_IF_EMPTY, MCU) $(call ERROR_IF_EMPTY, TARGET) $(call ERROR_IF_EMPTY, ARCH) -$(call ERROR_IF_EMPTY, F_USB) -$(call ERROR_IF_EMPTY, LUFA_PATH) -$(call ERROR_IF_EMPTY, BOARD) $(call ERROR_IF_EMPTY, OPTIMIZATION) $(call ERROR_IF_EMPTY, C_STANDARD) $(call ERROR_IF_EMPTY, CPP_STANDARD) @@ -122,16 +49,16 @@ $(call ERROR_IF_EMPTY, OBJDIR) $(call ERROR_IF_EMPTY, DEBUG_FORMAT) $(call ERROR_IF_EMPTY, DEBUG_LEVEL) $(call ERROR_IF_NONBOOL, LINKER_RELAXATIONS) +$(call ERROR_IF_NONBOOL, JUMP_TABLES) +$(call ERROR_IF_NONBOOL, LTO) # Determine the utility prefix to use for the selected architecture ifeq ($(ARCH), AVR8) CROSS := $(COMPILER_PATH)avr else ifeq ($(ARCH), XMEGA) CROSS := $(COMPILER_PATH)avr - $(warning The XMEGA device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) else ifeq ($(ARCH), UC3) CROSS := $(COMPILER_PATH)avr32 - $(warning The UC3 device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) else $(error Unsupported architecture "$(ARCH)") endif @@ -173,7 +100,7 @@ ifneq ($(OBJDIR),.) endif # Create the output object file directory if it does not exist and add it to the virtual path list - $(shell mkdir $(OBJDIR) 2> /dev/null) + $(shell mkdir -p $(OBJDIR) 2> /dev/null) VPATH += $(dir $(SRC)) endif @@ -182,46 +109,50 @@ DEPENDENCY_FILES := $(OBJECT_FILES:%.o=%.d) # Create a list of common flags to pass to the compiler/linker/assembler BASE_CC_FLAGS := -pipe -g$(DEBUG_FORMAT) -g$(DEBUG_LEVEL) -ifeq ($(ARCH), AVR8) - BASE_CC_FLAGS += -mmcu=$(MCU) -fshort-enums -fno-inline-small-functions -fpack-struct -else ifeq ($(ARCH), XMEGA) - BASE_CC_FLAGS += -mmcu=$(MCU) -fshort-enums -fno-inline-small-functions -fpack-struct -else ifeq ($(ARCH), UC3) +ifneq ($(findstring $(ARCH), AVR8 XMEGA),) + BASE_C_FLAGS += -fpack-struct + BASE_CC_FLAGS += -mmcu=$(MCU) -fshort-enums -fno-inline-small-functions +else ifneq ($(findstring $(ARCH), UC3),) BASE_CC_FLAGS += -mpart=$(MCU:at32%=%) -masm-addr-pseudos endif BASE_CC_FLAGS += -Wall -fno-strict-aliasing -funsigned-char -funsigned-bitfields -ffunction-sections -BASE_CC_FLAGS += -I. -I$(patsubst %/,%,$(LUFA_PATH))/.. -BASE_CC_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL -ifneq ($(F_CPU),) - BASE_CC_FLAGS += -DF_CPU=$(F_CPU)UL -endif +BASE_CC_FLAGS += -I. +BASE_CC_FLAGS += -DARCH=ARCH_$(ARCH) -DDMBS_ARCH_$(ARCH) ifeq ($(LINKER_RELAXATIONS), Y) -BASE_CC_FLAGS += -mrelax + BASE_CC_FLAGS += -mrelax +endif +ifeq ($(JUMP_TABLES), N) + # This flag is required for bootloaders as GCC will emit invalid jump table + # assembly code for devices with large amounts of flash; the jump table target + # is extracted from FLASH without using the correct ELPM instruction, resulting + # in a pseudo-random jump target. + BASE_CC_FLAGS += -fno-jump-tables endif - -# This flag is required for bootloaders as GCC will emit invalid jump table -# assembly code for devices with large amounts of flash; the jump table target -# is extracted from FLASH without using the correct ELPM instruction, resulting -# in a pseudo-random jump target. -BASE_CC_FLAGS += -fno-jump-tables # Additional language specific compiler flags BASE_C_FLAGS := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes -BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD) +BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD) -fno-exceptions -fno-threadsafe-statics BASE_ASM_FLAGS := -x assembler-with-cpp - +ifneq ($(F_CPU),) + BASE_C_FLAGS += -DF_CPU=$(F_CPU)UL + BASE_CPP_FLAGS += -DF_CPU=$(F_CPU)UL + BASE_ASM_FLAGS += -DF_CPU=$(F_CPU) +endif # Create a list of flags to pass to the linker BASE_LD_FLAGS := -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections ifeq ($(LINKER_RELAXATIONS), Y) BASE_LD_FLAGS += -Wl,--relax endif -ifeq ($(ARCH), AVR8) - BASE_LD_FLAGS += -mmcu=$(MCU) -else ifeq ($(ARCH), XMEGA) +ifneq ($(findstring $(ARCH), AVR8 XMEGA),) BASE_LD_FLAGS += -mmcu=$(MCU) -else ifeq ($(ARCH), UC3) +else ifneq ($(findstring $(ARCH), UC3),) BASE_LD_FLAGS += -mpart=$(MCU:at32%=%) --rodata-writable --direct-data endif +ifeq ($(LTO), Y) + # Enable link time optimization to reduce overall flash size. + BASE_CC_FLAGS += -flto -fuse-linker-plugin + BASE_LD_FLAGS += -flto -fuse-linker-plugin +endif # Determine flags to pass to the size utility based on its reported features (only invoke if size target required) # and on an architecture where this non-standard patch is available @@ -282,27 +213,27 @@ $(SRC): # Compiles an input C source file and generates an assembly listing for it %.s: %.c $(MAKEFILE_LIST) @echo $(MSG_COMPILE_CMD) Generating assembly from C file \"$(notdir $<)\" - $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) $< -o $@ + $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) $($(notdir $<)_FLAGS) $< -o $@ # Compiles an input C++ source file and generates an assembly listing for it %.s: %.cpp $(MAKEFILE_LIST) @echo $(MSG_COMPILE_CMD) Generating assembly from C++ file \"$(notdir $<)\" - $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) $< -o $@ + $(CROSS)-gcc -S $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) $($(notdir $<)_FLAGS) $< -o $@ # Compiles an input C source file and generates a linkable object file for it $(OBJDIR)/%.o: %.c $(MAKEFILE_LIST) @echo $(MSG_COMPILE_CMD) Compiling C file \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ + $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) $($(notdir $<)_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ # Compiles an input C++ source file and generates a linkable object file for it $(OBJDIR)/%.o: %.cpp $(MAKEFILE_LIST) @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ + $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) $($(notdir $<)_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ # Assembles an input ASM source file and generates a linkable object file for it $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST) @echo $(MSG_ASSEMBLE_CMD) Assembling \"$(notdir $<)\" - $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ + $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) $($(notdir $<)_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ # Generates a library archive file from the user application, which can be linked into other applications .PRECIOUS : $(OBJECT_FILES) @@ -348,4 +279,4 @@ $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST) -include $(DEPENDENCY_FILES) # Phony build targets for this module -.PHONY: build_begin build_end size symbol-sizes lib elf hex lss clean mostlyclean +.PHONY: build_begin build_end $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.md new file mode 100644 index 0000000..b2dfbf7 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.md @@ -0,0 +1,129 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Module: HID +----------------- + +The HID module provides build targets to program a target running a PJRC Teensy +or LUFA compatible HID class bootloader. + +## Importing This Module into a Makefile: + +To use this module in your application makefile, add the following code to your +makefile: + + include $(DMBS_PATH)/hid.mk + +## Prerequisites: + +This module requires the `teensy_loader_cli` utility to be available in your +system's `PATH` variable. The `teensy_loader_cli` utility is distributed in +a modified form (from PJRC) in the LUFA project's +[official site](http://www.lufa-lib.org/), but is also +made available in its original form directly from the +[PJRC website](https://www.pjrc.com/teensy/loader_cli.html). Note that the +original tool works with Teensy boards only, and not LUFA HID bootloader +devices. + +This module requires the `hid_bootloader_cli` utility to be available in your +system's `PATH` variable. The `hid_bootloader_cli` Python script utility is +distributed in LUFA project's [official site](http://www.lufa-lib.org/). + +This module requires the AVR-GCC compiler to be installed and available in the +system's `PATH` variable. + +## Build Targets: + +The following targets are supported by this module: + + + + + + + + + + + + + + + + + + + + +
    hidProgram a LUFA HID class bootloader device, using the `hid_bootloader_cli.py` Python script.
    hid-eeProgram a LUFA HID class bootloader device's EEPROM, using the `hid_bootloader_cli.py` Python script and a shim application which is programmed into the target's flash.
    teensyProgram a LUFA HID class bootloader device or Teensy board, using the `teensy_loader_cli` tool.
    teensy-eeProgram a LUFA HID class bootloader device's EEPROM, using the `teensy_loader_cli` tool and a shim application which is programmed into the target's flash.
    + +## Mandatory Variables: + +The following variables must be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile to be able to use this module: + + + + + + + + + + + + +
    MCUName of the Atmel processor model (e.g. `at90usb1287`).
    TARGETName of the application output file prefix (e.g. `TestApplication`).
    + +## Optional Variables: + +The following variables may be defined (with a `NAME = VALUE` syntax, one +variable per line) in the user makefile. If not specified, a default value will +be assumed. + + + + + + + + +
    N/AThis module has no optional variables.
    + +## Provided Variables: + +The following variables may be referenced in a user makefile (via `$(NAME)` +syntax) if desired, as they are provided by this module. + + + + + + + + +
    N/AThis module provides no variables.
    + +## Provided Macros: + +The following macros may be referenced in a user makefile (via +`$(call NAME, ARG1, ARG2, ...)` syntax) if desired, as they are provided by +this module. + + + + + + + + +
    N/AThis module provides no macros.
    + +## Module Changelog: + +The changes to this module since its initial release are listed below, as of the +DMBS version where the change was made. + +### 20160403 +Initial release. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.mk new file mode 100644 index 0000000..3927504 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/DMBS/hid.mk @@ -0,0 +1,53 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +DMBS_BUILD_MODULES += HID +DMBS_BUILD_TARGETS += hid hid-ee teensy teensy-ee +DMBS_BUILD_MANDATORY_VARS += MCU TARGET +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +# Import the CORE module of DMBS +DMBS_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +include $(DMBS_MODULE_PATH)/core.mk + +# Sanity-check values of mandatory user-supplied variables +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) +$(call ERROR_IF_EMPTY, MCU) +$(call ERROR_IF_EMPTY, TARGET) + +# Output Messages +MSG_HID_BOOTLOADER_CMD := ' [HID] :' +MSG_OBJCPY_CMD := ' [OBJCPY] :' +MSG_MAKE_CMD := ' [MAKE] :' + +# Programs in the target FLASH memory using the HID_BOOTLOADER_CLI tool +hid: $(TARGET).hex $(MAKEFILE_LIST) + @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with hid_bootloader_cli using \"$<\" + hid_bootloader_cli -mmcu=$(MCU) -v $< + +# Programs in the target EEPROM memory using the HID_BOOTLOADER_CLI tool (note: clears target FLASH memory) +hid-ee: $(TARGET).eep $(MAKEFILE_LIST) + cp $< $(DMBS_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.eep + @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" + $(MAKE) -C $(DMBS_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean hid + +# Programs in the target FLASH memory using the TEENSY_BOOTLOADER_CLI tool +teensy: $(TARGET).hex $(MAKEFILE_LIST) + @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\" + teensy_loader_cli -mmcu=$(MCU) -v $< + +# Programs in the target EEPROM memory using the TEENSY_BOOTLOADER_CLI tool (note: clears target FLASH memory) +teensy-ee: $(TARGET).eep $(MAKEFILE_LIST) + cp $< $(DMBS_MODULE_PATH)/HID_EEPROM_Loader/InputEEData.eep + @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" + $(MAKE) -s -C $(DMBS_MODULE_PATH)/HID_EEPROM_Loader/ MCU=$(MCU) clean teensy + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Readme.md b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Readme.md new file mode 100644 index 0000000..f4f7a5f --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Readme.md @@ -0,0 +1,123 @@ +DMBS - Dean's Makefile Build System +=================================== + + +Project Overview +---------------- + +GNU Make is scary, and it's tough to get the rules right sometimes. Many +projects get by via simple copy-pasting of old makefiles, resulting in many +redundant copies of the same old rules. DMBS aims to solve this by providing a +simple modular set of makefiles which can be included by your project to quickly +add various build functionality. + +This aims to replace the old WinAVR "mfile" makefile template, giving better +functionality and much simpler user makefiles. + + +Benefits: +---------------- + +Apart from much simpler, cleaner makefiles DMBS carries the aim of making the +process of troubleshooting build issues a little easier. Lots can go wrong, so +DMBS tries to sanity check its inputs wherever possible, and produce +human-readable error messages. Forgotten to set a variable? Get a +`Makefile {X} value not set.` message, rather than a possibly unrelated message. +Have the wrong filename? See `Source file does not exist: {X}` rather than the +infamous `No rule to make target {X}` message. + + +Use: +---------------- + +A template user makefile is provided in the `Template` directory. DMBS modules +are included via a GNU Make `include` directive. While the DMBS `core` module is +always required, you can pick and choose what other modules you wish to add to +your user project. + +[See here for the documentation on the individual modules provided by DMBS.](DMBS/ModulesOverview.md) +If you're interested in writing your own DMBS module(s), [see here.](DMBS/WritingYourOwnModules.md) + +Here's an example user makefile: + + MCU = atmega128 + ARCH = AVR8 + F_CPU = 8000000 + OPTIMIZATION = s + TARGET = Template + SRC = $(TARGET).c + CC_FLAGS = + LD_FLAGS = + + # Default target + all: + + # Include DMBS build script makefiles + DMBS_PATH ?= ../DMBS + include $(DMBS_PATH)/core.mk + include $(DMBS_PATH)/gcc.mk + include $(DMBS_PATH)/cppcheck.mk + include $(DMBS_PATH)/doxygen.mk + include $(DMBS_PATH)/dfu.mk + include $(DMBS_PATH)/hid.mk + include $(DMBS_PATH)/avrdude.mk + include $(DMBS_PATH)/atprogram.mk + +Each DMBS module can optionally supply one or more Make variables and macros, +which you can reference in your user makefile. Additionally, modules can require +one or more variables to be set by the user makefile, with (in some cases) sane +defaults used if left out. + +As modules are added, you can get a list of available targets by simply typing +`make help` from the command line. This will produce a formatted list of targets +as well as mandatory and optional variables and exposed variables and macros. + + +Distribution +---------------- + +You can embed DMBS in your project any way you like - some options are: +1. A git submodule +2. A source tarball +3. A manually copied extracted archive + +The intention of DMBS is that users can just import it from whatever source +they like. If your project needs to extend the existing modules in an unusual +manner, or if you want to provide your own modules, you can include them in +your project repository (or submit a patch to DMBS if your module is generic +enough to warrant wide use). + + +License +---------------- + +DMBS is released into the public domain, making is suitable for use everywhere, +by everyone. Contributions are greatly appreciated however, in order to make +DMBS better for everyone. + +The actual license text is as follows: + + This is free and unencumbered software released into the public domain. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the benefit + of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + For more information, please refer to diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/Template.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/Template.c new file mode 100644 index 0000000..95d36f7 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/Template.c @@ -0,0 +1,12 @@ +/* + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + */ + +int main(void) +{ + // Application code here. +} diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/TEMPLATE_LIB.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/TEMPLATE_LIB.mk new file mode 100644 index 0000000..5703750 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/TEMPLATE_LIB.mk @@ -0,0 +1,50 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +# Include Guard +ifeq ($(filter TEMPLATE_LIB, $(DMBS_BUILD_MODULES)),) + +# Sanity check user supplied DMBS path +ifndef DMBS_PATH +$(error Makefile DMBS_PATH option cannot be blank) +endif + +# Location of the current module +TEMPLATE_LIB_MODULE_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) + +# Import the CORE module of DMBS +include $(DMBS_PATH)/core.mk + +# This module needs to be included before gcc.mk +ifneq ($(findstring GCC, $(DMBS_BUILD_MODULES)),) +$(error Include this module before gcc.mk) +endif + +# Help settings +DMBS_BUILD_MODULES += TEMPLATE_LIB +DMBS_BUILD_TARGETS += +DMBS_BUILD_MANDATORY_VARS += DMBS_PATH +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += TEMPLATE_LIB_SRC +DMBS_BUILD_PROVIDED_MACROS += + +# Sanity check user supplied values +$(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) + +# TEMPLATE_LIB Library +TEMPLATE_LIB_SRC := $(TEMPLATE_LIB_MODULE_PATH)/src/template_lib.c + +# Compiler flags and sources +SRC += $(TEMPLATE_LIB_SRC) +CC_FLAGS += -DDMBS_MODULE_TEMPLATE_LIB +CC_FLAGS += -I$(TEMPLATE_LIB_MODULE_PATH)/include/ + +# Phony build targets for this module +.PHONY: $(DMBS_BUILD_TARGETS) + +endif diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/include/template_lib.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/include/template_lib.h new file mode 100644 index 0000000..1baa635 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/include/template_lib.h @@ -0,0 +1,24 @@ +/* + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + */ + +// Include Guard +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +// Software version +#define TEMPLATE_LIB_VERSION 100 + +#include +#include + +#ifdef __cplusplus +} +#endif diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib.c new file mode 100644 index 0000000..f7f6945 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib.c @@ -0,0 +1,10 @@ +/* + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + */ + +#include "template_lib.h" +#include "template_lib_private.h" diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib_private.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib_private.h new file mode 100644 index 0000000..714cd3b --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/lib/TEMPLATE_LIB/src/template_lib_private.h @@ -0,0 +1,14 @@ +/* + DMBS Build System + Released into the public domain. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com + */ + +// Include Guard +#pragma once + +#include +#include +#include diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/makefile b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/makefile new file mode 100644 index 0000000..817f96f --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/DMBS/Template/makefile @@ -0,0 +1,36 @@ +# +# DMBS Build System +# Released into the public domain. +# +# dean [at] fourwalledcubicle [dot] com +# www.fourwalledcubicle.com +# + +# Run "make help" for target help. + +MCU = atmega128 +ARCH = AVR8 +F_CPU = 8000000 +OPTIMIZATION = s +TARGET = Template +SRC = $(TARGET).c +CC_FLAGS = +LD_FLAGS = + +# Default target +all: + +# Include libraries and DMBS build script makefiles +DMBS_PATH ?= ../DMBS +LIB_PATH ?= lib + +include $(LIB_PATH)/TEMPLATE_LIB/TEMPLATE_LIB.mk + +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/gcc.mk +include $(DMBS_PATH)/cppcheck.mk +include $(DMBS_PATH)/doxygen.mk +include $(DMBS_PATH)/dfu.mk +include $(DMBS_PATH)/hid.mk +include $(DMBS_PATH)/avrdude.mk +include $(DMBS_PATH)/atprogram.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-gcc.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-gcc.mk new file mode 100644 index 0000000..0d51ca2 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-gcc.mk @@ -0,0 +1,48 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +# Include Guard +ifeq ($(filter LUFA_GCC, $(DMBS_BUILD_MODULES)),) + +DMBS_BUILD_MODULES += LUFA_GCC +DMBS_BUILD_TARGETS += +DMBS_BUILD_MANDATORY_VARS += LUFA_PATH ARCH F_USB +DMBS_BUILD_OPTIONAL_VARS += BOARD +DMBS_BUILD_PROVIDED_VARS += +DMBS_BUILD_PROVIDED_MACROS += + +SHELL = /bin/sh + +ERROR_IF_UNSET ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set)) +ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank)) +ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) + +# Sanity check user supplied values +$(call ERROR_IF_EMPTY, LUFA_PATH) +$(call ERROR_IF_EMPTY, ARCH) +$(call ERROR_IF_EMPTY, F_USB) + +# Default values of optionally user-supplied variables +BOARD ?= NONE + +# Determine the utility prefix to use for the selected architecture +ifeq ($(ARCH), XMEGA) + $(warning The XMEGA device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) +else ifeq ($(ARCH), UC3) + $(warning The UC3 device support is currently EXPERIMENTAL (incomplete and/or non-functional), and is included for preview purposes only.) +endif + +# Common LUFA C/C++ includes/definitions +LUFA_CXX_INCLUDES = -I. -I$(patsubst %/,%,$(LUFA_PATH))/.. +LUFA_CXX_DEFINES = -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL + +# LUFA specific standard build options +C_FLAGS += $(LUFA_CXX_INCLUDES) $(LUFA_CXX_DEFINES) $(LUFA_CXX_FLAGS) +CPP_FLAGS += $(LUFA_CXX_INCLUDES) $(LUFA_CXX_DEFINES) $(LUFA_CXX_FLAGS) + +endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_sources.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-sources.mk similarity index 68% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_sources.mk rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-sources.mk index cc3492e..296599d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Build/lufa_sources.mk +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/LUFA/lufa-sources.mk @@ -1,70 +1,24 @@ # # LUFA Library -# Copyright (C) Dean Camera, 2014. +# Copyright (C) Dean Camera, 2015. # # dean [at] fourwalledcubicle [dot] com # www.lufa-lib.org # -LUFA_BUILD_MODULES += SOURCES -LUFA_BUILD_TARGETS += -LUFA_BUILD_MANDATORY_VARS += LUFA_PATH ARCH -LUFA_BUILD_OPTIONAL_VARS += -LUFA_BUILD_PROVIDED_VARS += LUFA_SRC_USB_DEVICE LUFA_SRC_USB_HOST \ +# Include Guard +ifeq ($(filter LUFA_SOURCES, $(DMBS_BUILD_MODULES)),) + +DMBS_BUILD_MODULES += LUFA_SOURCES +DMBS_BUILD_TARGETS += +DMBS_BUILD_MANDATORY_VARS += LUFA_PATH ARCH +DMBS_BUILD_OPTIONAL_VARS += +DMBS_BUILD_PROVIDED_VARS += LUFA_SRC_USB_DEVICE LUFA_SRC_USB_HOST \ LUFA_SRC_USB LUFA_SRC_USBCLASS_DEVICE \ LUFA_SRC_USBCLASS_HOST LUFA_SRC_USBCLASS \ LUFA_SRC_TEMPERATURE LUFA_SRC_SERIAL \ LUFA_SRC_TWI LUFA_SRC_PLATFORM -LUFA_BUILD_PROVIDED_MACROS += - -# ----------------------------------------------------------------------------- -# LUFA Sources Buildsystem Makefile Module. -# ----------------------------------------------------------------------------- -# DESCRIPTION: -# Provides a set of makefile variables for the various LUFA module sources. -# Once included, the sources required to use a given LUFA module will become -# available using the makefile variable names listed in the LUFA project -# documentation. -# ----------------------------------------------------------------------------- -# TARGETS: -# -# (None) -# -# MANDATORY PARAMETERS: -# -# LUFA_PATH - Path to the LUFA library core -# ARCH - Device architecture name -# -# OPTIONAL PARAMETERS: -# -# (None) -# -# PROVIDED VARIABLES: -# -# LUFA_SRC_USB_DEVICE - List of LUFA USB driver source files required -# for USB Device mode only -# LUFA_SRC_USB_HOST - List of LUFA USB driver source files required -# for USB Host mode only -# LUFA_SRC_USB - List of LUFA USB driver source files for all -# USB modes -# LUFA_SRC_USBCLASS_DEVICE - List of LUFA USB Class driver source files for -# USB Device mode only -# LUFA_SRC_USBCLASS_HOST - List of LUFA USB Class driver source files for -# USB Host mode only -# LUFA_SRC_USBCLASS - List of LUFA USB Class driver source files for -# all USB modes -# LUFA_SRC_TEMPERATURE - List of LUFA temperature sensor driver source -# files -# LUFA_SRC_SERIAL - List of LUFA Serial U(S)ART driver source files -# LUFA_SRC_TWI - List of LUFA TWI driver source files -# LUFA_SRC_PLATFORM - List of LUFA architecture specific platform -# management source files -# -# PROVIDED MACROS: -# -# (None) -# -# ----------------------------------------------------------------------------- +DMBS_BUILD_PROVIDED_MACROS += SHELL = /bin/sh @@ -101,6 +55,7 @@ LUFA_SRC_USB_DEVICE := $(LUFA_ROOT_PATH)/Drivers/USB/Core/$(ARCH)/Device_$( $(LUFA_SRC_USB_COMMON) LUFA_SRC_USBCLASS_DEVICE := $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/AudioClassDevice.c \ + $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CCIDClassDevice.c \ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c \ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/HIDClassDevice.c \ $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/MassStorageClassDevice.c \ @@ -142,3 +97,5 @@ LUFA_SRC_ALL_FILES := $(LUFA_SRC_USB) \ $(LUFA_SRC_SERIAL) \ $(LUFA_SRC_TWI) \ $(LUFA_SRC_PLATFORM) + +endif diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_atprogram.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_atprogram.mk new file mode 100644 index 0000000..86988d1 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_atprogram.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/atprogram.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_avrdude.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_avrdude.mk new file mode 100644 index 0000000..649215f --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_avrdude.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/avrdude.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_build.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_build.mk new file mode 100644 index 0000000..f7c496e --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_build.mk @@ -0,0 +1,12 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_PATH)/gcc.mk +include $(DMBS_LUFA_PATH)/lufa-gcc.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_core.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_core.mk new file mode 100644 index 0000000..62cef90 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_core.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_cppcheck.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_cppcheck.mk new file mode 100644 index 0000000..801a4c1 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_cppcheck.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/cppcheck.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_dfu.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_dfu.mk new file mode 100644 index 0000000..2100ae8 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_dfu.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/dfu.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_doxygen.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_doxygen.mk new file mode 100644 index 0000000..64afd4a --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_doxygen.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/doxygen.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_hid.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_hid.mk new file mode 100644 index 0000000..86ca145 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_hid.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_PATH := $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/hid.mk diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_sources.mk b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_sources.mk new file mode 100644 index 0000000..48291c7 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Build/lufa_sources.mk @@ -0,0 +1,10 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2015. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# + +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c index 71cebe8..c256ad1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -127,7 +127,7 @@ const USB_Descriptor_String_t ProductString = * USB host. */ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, + const uint16_t wIndex, const void** const DescriptorAddress #if defined(HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES) , uint8_t* const DescriptorMemorySpace diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h similarity index 94% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h index 6d8145d..2dc3890 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c index ddaa9d0..712ce3e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h index 325176c..e6f629e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Board.h index 5a1e583..b79fe54 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -77,6 +77,3 @@ #endif #endif - -/** @} */ - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Buttons.h index b3c2f2b..9e96974 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Dataflash.h index 83acb2f..c08348c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Joystick.h index 07542ab..ada54b6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/LEDs.h index 4373972..ef3fb73 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/DriverStubs/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/DriverStubs/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.c index 1ac0378..e0557c1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -122,7 +122,7 @@ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, * option is set, this is still required even in an application that uses host mode only. */ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, + const uint16_t wIndex, const void** const DescriptorAddress #if defined(HAS_MULTIPLE_DESCRIPTOR_ADDRESS_SPACES) , uint8_t* const DescriptorMemorySpace diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.h similarity index 94% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.h index 16dbb53..3af0ded 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/HostTemplate/HostApplication.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/HostTemplate/HostApplication.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/LUFAConfig.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/LUFAConfig.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/LUFAConfig.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/LUFAConfig.h index ab7fc75..5d540e9 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/LUFAConfig.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/LUFAConfig.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/makefile_template b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/makefile_template similarity index 52% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/makefile_template rename to avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/makefile_template index efb6aa7..eff3b8c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/CodeTemplates/makefile_template +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/CodeTemplates/makefile_template @@ -1,6 +1,6 @@ # # LUFA Library -# Copyright (C) Dean Camera, 2014. +# Copyright (C) Dean Camera, 2020. # # dean [at] fourwalledcubicle [dot] com # www.lufa-lib.org @@ -26,13 +26,18 @@ LD_FLAGS = # Default target all: -# Include LUFA build script makefiles -include $(LUFA_PATH)/Build/lufa_core.mk -include $(LUFA_PATH)/Build/lufa_sources.mk -include $(LUFA_PATH)/Build/lufa_build.mk -include $(LUFA_PATH)/Build/lufa_cppcheck.mk -include $(LUFA_PATH)/Build/lufa_doxygen.mk -include $(LUFA_PATH)/Build/lufa_dfu.mk -include $(LUFA_PATH)/Build/lufa_hid.mk -include $(LUFA_PATH)/Build/lufa_avrdude.mk -include $(LUFA_PATH)/Build/lufa_atprogram.mk +# Include LUFA-specific DMBS extension modules +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk +include $(DMBS_LUFA_PATH)/lufa-gcc.mk + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/cppcheck.mk +include $(DMBS_PATH)/doxygen.mk +include $(DMBS_PATH)/dfu.mk +include $(DMBS_PATH)/gcc.mk +include $(DMBS_PATH)/hid.mk +include $(DMBS_PATH)/avrdude.mk +include $(DMBS_PATH)/atprogram.mk diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/ArchitectureSpecific.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/ArchitectureSpecific.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/ArchitectureSpecific.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/ArchitectureSpecific.h index 292e27b..aab878f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/ArchitectureSpecific.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/ArchitectureSpecific.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Architectures.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Architectures.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Architectures.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Architectures.h index 265b412..75a5b3b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Architectures.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Architectures.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Attributes.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Attributes.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Attributes.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Attributes.h index dc5c6be..a5c1eb8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Attributes.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Attributes.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/BoardTypes.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/BoardTypes.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/BoardTypes.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/BoardTypes.h index 06ff4dd..cdd996b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/BoardTypes.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/BoardTypes.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -240,6 +240,12 @@ /** Selects the Arduino Micro specific board drivers, including the driver for the board LEDs. */ #define BOARD_MICRO 58 + /** Selects the Pololu A-Star Micro specific board drivers, including the driver for the board LEDs. */ + #define BOARD_POLOLUMICRO 59 + + /** Selects the Atmel Xplained-MINI specific board drivers, including the driver for the board LEDs. */ + #define BOARD_XPLAINED_MINI 60 + #if !defined(__DOXYGEN__) #define BOARD_ BOARD_NONE diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Common.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Common.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Common.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Common.h index 3e12e4f..a213c5d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Common.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Common.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -116,6 +116,7 @@ #define pgm_read_byte(x) *x #define memcmp_P(...) memcmp(__VA_ARGS__) #define memcpy_P(...) memcpy(__VA_ARGS__) + #define strlen_P(...) strlen(__VA_ARGS__) // ================================================= typedef uint32_t uint_reg_t; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/CompilerSpecific.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/CompilerSpecific.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/CompilerSpecific.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/CompilerSpecific.h index 9979fff..3ad7f5b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/CompilerSpecific.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/CompilerSpecific.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Endianness.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Endianness.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Endianness.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Endianness.h index 2eb3ad0..f07f4a2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Common/Endianness.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Common/Endianness.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -122,7 +122,7 @@ #define CPU_TO_BE32(x) (x) #elif !defined(le16_to_cpu) /** \name Run-time endianness conversion */ - //@{ + /**@{*/ /** Performs a conversion between a Little Endian encoded 16-bit piece of data and the * Endianness of the currently selected CPU architecture. @@ -252,10 +252,10 @@ */ #define cpu_to_be32(x) SwapEndian_32(x) - //@} + /**@}*/ /** \name Compile-time endianness conversion */ - //@{ + /**@{*/ /** Performs a conversion between a Little Endian encoded 16-bit piece of data and the * Endianness of the currently selected CPU architecture. @@ -385,7 +385,7 @@ */ #define CPU_TO_BE32(x) SWAPENDIAN_32(x) - //! @} + /**@}*/ #endif /* Inline Functions: */ @@ -397,7 +397,7 @@ * * \return Input data with the individual bytes reversed. */ - static inline uint16_t SwapEndian_16(const uint16_t Word) ATTR_WARN_UNUSED_RESULT ATTR_CONST; + static inline uint16_t SwapEndian_16(const uint16_t Word) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; static inline uint16_t SwapEndian_16(const uint16_t Word) { if (GCC_IS_COMPILE_CONST(Word)) @@ -428,7 +428,7 @@ * * \return Input data with the individual bytes reversed. */ - static inline uint32_t SwapEndian_32(const uint32_t DWord) ATTR_WARN_UNUSED_RESULT ATTR_CONST; + static inline uint32_t SwapEndian_32(const uint32_t DWord) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; static inline uint32_t SwapEndian_32(const uint32_t DWord) { if (GCC_IS_COMPILE_CONST(DWord)) diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildSystem.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildSystem.txt new file mode 100644 index 0000000..ef57fcf --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildSystem.txt @@ -0,0 +1,281 @@ +/** \file + * + * This file contains special DoxyGen information for the generation of the main page and other special + * documentation pages. It is not a project source file. + */ + +/** \page Page_BuildSystem The LUFA Build System + * + * \section Sec_BuildSystem_Overview Overview of the LUFA Build System + * The LUFA build system was originally an attempt at making a set of + * re-usable, modular build make files which could be referenced in a LUFA + * powered project, to minimize the amount of code required in an + * application makefile. + * + * As it turned out to be fairly generic in nature, it was split out into its + * own separate project, called DMBS (Dean's Makefile Build System) + * which is released into the public domain. LUFA-specific portions of the + * LUFA build system extend DMBS, and provide a universal build system for all + * LUFA projects. + * + * The latest DMBS project information and documentation can be found at: + * https://github.com/abcminiuser/dmbs + * + * DMBS is written in GNU Make, and each module is independent of one-another. + * + * LUFA now uses DMBS for its build system, with some LUFA specific extension + * modules. + * + * If you have problems building using LUFA, see \subpage Page_BuildTroubleshooting for resolution steps. + * + * \li \subpage Page_BuildModule_LUFA_SOURCES - The LUFA SOURCES extension module for DMBS + * \li \subpage Page_BuildModule_LUFA_GCC - The LUFA GCC extension module for DMBS + */ + +/** \page Page_BuildModule_LUFA_SOURCES LUFA SOURCES extension module for DMBS + * + * The LUFA SOURCES extension more for DMBS provides LUFA specific variables + * listing the various LUFA source files required to be build by a project for + * a given LUFA module. This module gives a way to reference LUFA source files + * symbolically, so that changes to the library structure do not break the + * library makefile. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/LUFA/lufa-sources.mk + * \endcode + * + * \section SSec_BuildModule_LUFA_SOURCES_Requirements Requirements + * None. + * + * \section SSec_BuildModule_LUFA_SOURCES_Targets Targets + * + * + * + * + * + *
    None
    + * + * \section SSec_BuildModule_LUFA_SOURCES_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + * + * + * + * + *
    LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
    ARCHArchitecture of the target processor (see \ref Page_DeviceSupport).
    + * + * \section SSec_BuildModule_LUFA_SOURCES_OptionalParams Optional Parameters + * + * + * + * + * + *
    None
    + * + * \section SSec_BuildModule_LUFA_SOURCES_ProvidedVariables Module Provided Variables + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    LUFA_SRC_USBList of LUFA USB driver source files.
    LUFA_SRC_USBCLASSList of LUFA USB Class driver source files.
    LUFA_SRC_TEMPERATUREList of LUFA temperature sensor driver source files.
    LUFA_SRC_SERIALList of LUFA Serial U(S)ART driver source files.
    LUFA_SRC_TWIList of LUFA TWI driver source files.
    LUFA_SRC_PLATFORMList of LUFA architecture specific platform management source files.
    + * + * \section SSec_BuildModule_LUFA_SOURCES_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
    None
    + */ + +/** \page Page_BuildModule_LUFA_GCC LUFA GCC extension module for DMBS + * + * The LUFA GCC extension module for the standard DMBS GCC module extends the + * latter to support the compilation of LUFA powered projects. It should be + * imported into your LUFA powered project makefiles to ensure that the correct + * build settings are used for the project's configuration. + * + * To use this module in your application makefile, add the following code: + * \code + * include $(LUFA_PATH)/Build/LUFA/lufa-gcc.mk + * \endcode + * + * \section SSec_BuildModule_LUFA_GCC_Requirements Requirements + * This module should be included in your makefile *after* the DMBS GCC module. + * + * \section SSec_BuildModule_LUFA_GCC_Targets Targets + * + * + * + * + * + *
    None
    + * + * \section SSec_BuildModule_LUFA_GCC_MandatoryParams Mandatory Parameters + * + * + * + * + * + * + *
    LUFA_PATHPath to the LUFA library core, either relative or absolute (e.g. ../LUFA-000000/LUFA/).
    + * + * \section SSec_BuildModule_LUFA_GCC_OptionalParams Optional Parameters + * + * + * + * + * + * + *
    BOARDLUFA board hardware drivers to use (see \ref Page_DeviceSupport).
    + * + * \section SSec_BuildModule_LUFA_GCC_ProvidedVariables Module Provided Variables + * + * + * + * + * + *
    None
    + * + * \section SSec_BuildModule_LUFA_GCC_ProvidedMacros Module Provided Macros + * + * + * + * + * + *
    None
    + */ + +/** \page Page_BuildTroubleshooting Troubleshooting Information + * + * LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and + * surrounding binaries. This can sometimes lead to problems compiling + * applications if one of these features is buggy in the version of the tools + * used in a build environment. Missing utilities and incorrectly set makefile + * configuration options can also result in different errors being produced + * when compilation or other operations are attempted. The table below lists a + * set of commonly encountered errors and their resolutions. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    ProblemResolution
    Error "relocation truncated to fit: R_AVR_13_PCREL against symbol {X}" shown when compiling.Try compiling with the setting LINKER_RELAXATIONS=N in your LUFA Build System 2.0 makefile, or remove the line -Wl,--relax + * from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.
    Error "error: ld terminated with signal 11 [Segmentation fault]" shown when compiling.Try compiling with the setting DEBUG_LEVEL=2 in your LUFA Build System 2.0 makefile, or make sure you are using binutils version 2.22 or later.
    Error "EMERGENCY ABORT: INFINITE RECURSION DETECTED" shown when compiling.Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with + * GNU make or other variants of Make causing an infinitely recursive build.
    Error "Unsupported architecture "{X}"" shown when compiling.Ensure your makefile's ARCH setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.
    Error "Makefile {X} value not set" shown when compiling.The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA + * build system modules. Define the value in your project makefile and try again.
    Error "Makefile {X} option cannot be blank" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration + * option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.
    Error "Makefile {X} option must be Y or N" shown when compiling.The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No"). + * This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.
    Error "Unknown input source file formats: {X}" shown when compiling.The nominated source files, specified in your project's makefile in the SRC configuration option, has an extension that the LUFA build system does not + * recognise. The file extensions are case sensitive, and must be one of the supported formats (*.c, *.cpp or *.S).
    Error "Cannot build with OBJDIR parameter set - one or more object file name is not unique" shown when compiling.When a project is built with a non-empty OBJDIR object directory name set, all input source files must have unique names, excluding extension and path. + * This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.
    Error "Source file does not exist: {X}" shown when compiling.The nominated input source file, specified in the user project's SRC parameter, could not be found. Ensure the source file exists and the absolute or + * relative path given in the user project makefile is correct and try again.
    Error "Doxygen configuration file {X} does not exist" shown when upgrading a Doxygen configuration file.The nominated Doxygen configuration file, specified in the user project's DOXYGEN_CONF parameter, could not be found. Ensure the configuration file exists + * and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration + * file.
    Error "avr-gcc: error: unrecognized option '{X}'" shown when compiling.An unrecognised option was supplied to the compiler, usually in the C_FLAGS, CPP_FLAGS, ASM_FLAGS or CC_FLAGS configuration + * options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or + * upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.
    Error "makefile:{X}: {Y}.mk: No such file or directory" shown when make is invoked.The path to the nominated makefile module was incorrect. This usually indicates that the makefile LUFA_PATH option is not set to a valid relative or + * absolute path to the LUFA library core.
    Error "fatal error: LUFAConfig.h: No such file or directory" shown when compiling.The USE_LUFA_CONFIG_HEADER compile time option was set in the user project makefile, but the user supplied LUFAConfig.h header could not be + * found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile CC_FLAGS + * parameter.
    Error "ld.exe: section .apitable_trampolines loaded at {X} overlaps section .text" shown when compiling a bootloader.The bootloader is compiling too large for the given FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB parameters set in the bootloader makefile. This + * usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the + * compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.
    Error "unknown MCU '{X}' specified" shown when compiling.The specified microcontroller device model name set in the user application's makefile as the MCU parameter is incorrect, or unsupported by the + * version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.
    Error "undefined reference to `{X}'" shown when compiling.This is usually caused by a missing source file in the user application's SRC configuration parameter. If the indicated symbol is one from the LUFA + * library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_LUFA_SOURCES).
    + * + * For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp. + */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildingLinkableLibraries.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildingLinkableLibraries.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/BuildingLinkableLibraries.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/BuildingLinkableLibraries.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ChangeLog.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ChangeLog.txt similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ChangeLog.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ChangeLog.txt index 482c886..32332e8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ChangeLog.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ChangeLog.txt @@ -5,6 +5,102 @@ */ /** \page Page_ChangeLog Project Changelog + * + * \section Sec_ChangeLogXXXXXX Version XXXXXX + * New: + * - Core: + * - The USE_INTERNAL_SERIAL definition can now be overridden by the user to a custom string index (thanks to Nicohood) + * - New CCID class driver and associated demos (thanks to Filipe Rodrigues) + * - Library Applications: + * - Added Microsoft OS Compatibility descriptors to the RNDIS demos for driverless install on Windows 7 and newer + * - Added AVRISP-MKII support for target OSCCAL calibration (thanks to Jacob September) + * + * Changed: + * - Core: + * - Moved the functional descriptor types DTYPE_CSInterface and DTYPE_CSEndpoint to their respective CDC and Audio class + * drivers, as they are class-defined rather than general descriptor types. + * - Reduced compiled size of the Endpoint_Discard_Stream() and Endpoint_Null_Stream() functions. + * - Library Applications: + * - Updated Printer class bootloader to not store 32-bit HEX parser flash offsets on small flash devices. + * - Enabled Link Time Optimizations (LTO) on bootloaders to reduce compiled size on newer versions of GCC. + * + * Fixed: + * - Core: + * - Fixed DeviceUsesOUTPipe flag not being set correctly in the HID host class driver (thanks to Wolfgang Schnerring) + * - Fixed CDC Device class driver's internal serial stream created by \ref CDC_Device_CreateStream not returning the written + * character after a successful write (thanks to NicoHood) + * - Fixed incorrect endpoint bank setup on the UC3 architecture (thanks to Andrus Aaslaid) + * - Fixed CDC_Device_Send*_P() and CDC_Host_Send*_P() variant functions not compiled out for UC3 architecture + * - Fixed USB_STRING_DESCRIPTOR_ARRAY() not accepting more than two byte long arrays + * - Fixed HID report parser corruption when parsing PUSH and POP report item elements + * - Fixed HID report parser incorrectly decoding 32-bit USAGE elements + * - Fixed control request hangs in the Printer device class driver (thanks to Juergen Borleis) + * - Library Applications: + * - Fixed bootloaders not disabling global interrupts during erase and write operations (thanks to Zoltan) + * - Fixed bootloaders accepting flash writes to the bootloader region (thanks to NicoHood) + * - Fixed bootloaders incorrectly checking the BOOTRST fuse on start (thanks to Braden Kell) + * - Fixed Mass Storage bootloader incorrectly updating the lower nibble of the FAT12 cluster + * - Fixed void pointer arithmetic in the low level RNDIS demo protocol decoders + * - Fixed invalid DHCP server socket creation in the Webserver project + * + * \section Sec_ChangeLog170418 Version 170418 + * New: + * - Core: + * - Added support for the Pololu A-Star Micro board (thanks to Joh Schneider) + * - Added new \c LUFA_VERSION_RELEASE_TYPE macro to the library version header, to determine release type (thanks to NicoHood) + * + * Fixed: + * - Core: + * - The CALLBACK_USB_GetDescriptor() callback function into the user application erroneously had a uint8_t type for the wIndex + * parameter, instead of uint16_t (thanks to Matlo) + * - Fixed broken USE_RAM_DESCRIPTORS compile time option when the FIXED_NUM_CONFIGURATIONS compile time option is not enabled + * in a user application (thanks to Matlo) + * - Fixed missing \c va_end() calls in the HID bootloader CLI app which could cause portability issues + * - Fixed void pointer arithmetic in the \c Serial_SendData() functions for AVR8 and XMEGA architectures + * - Fixed invalid endpoint indexes causing memory corruption in device Clear/Set Feature standard requests (thanks to Peter Popovec) + * - Fixed incorrect serialization in USB_SetHIDReportItemInfo() function (thanks to e-chip) + * - Library Applications: + * - Fixed low level RNDIS demo incorrectly setting the RNDIS state when a null packet filter was requested + * - Fixed void pointer arithmetic in the low level and class driver RNDIS demo protocol decoders + * - Fixed missing entries in several project's Atmel Studio integration files, such as driver INF files + * + * Changed: + * - Core: + * - Replaced the LUFA build system with its (compatible) successor, DMBS (Dean's Makefile Build System) + * - Removed obsolete library TAR export and associated documentation + * - Fixed incorrect HID_DESCRIPTOR_KEYBOARD() macro definition (thanks to Eric Tang) + * - Library Applications: + * - Added signed alternative libUSB driver for the AVRISP-MKII clone project, to support Atmel Studio 7 (thanks to Atmel) + * - Removed no longer required LIBUSB_DRIVER_COMPAT and RESET_TOGGLES_LIBUSB_COMPAT configuration options from the AVRISP-MKII + * clone project, as the new libUSB driver works for AVRDUDE and Atmel Studio 7 under Windows + * + * \section Sec_ChangeLog151115 Version 151115 + * New: + * - Added support for the Atmel Xplained-MINI series of development kits + * - Added new PROGMEM variant send functions to the CDC class device driver (thanks to Stefan Hellermann) + * - Added new PROGMEM variant send functions to the CDC class host driver + * - Added additional Arduino Uno board definitions for the main processor reset (thanks to NicoHood) + * - Added modified DocBook transforms to generate Atmel Studio 6/7 internal help documentation (thanks to Morten Engelhardt Olsen) + * + * Changed: + * - Core: + * - The TWI peripheral driver's TWI_WritePacket() and TWI_ReadPacket() functions now takes a 16-bit Length rather than an 8-bit + * length, for longer transfers + * - Library Applications: + * - The CDC, DFU, Mass Storage and Printer class bootloaders will no longer run the user application if the application reset + * vector is blank (thanks to Alex Kazik) + * - The CDC, DFU and Printer class bootloaders are now compatible with the original Atmel XPLAIN and Arduino Leonardo boards + * - The CDC, DFU, Mass Storage and Printer class bootloaders are not compatible with devices with the BOOTRST fuse set and will + * exit automatically unless an external reset was the last reset cause (thanks to Alex Kazik) + * - Added missing force-inline attribute to the endianness utility functions (thanks to Stefan Hellermann) + * - Updated the DFU build system module to use updated EEPROM programming command arguments for dfu-programmer 0.6.2 or newer + * + * Fixed: + * - Fixed broken XMEGA serial stream driver due to missing USART base pointer parameter (thanks to William Patterson) + * - Fixed incorrect signature reported in the CDC/DFU bootloaders for the AT90USB82 (thanks to NicoHood) + * - Fixed broken RNDIS demos on Linux machines whose DHCP hosts require a Lease Time option (thanks to Stefan Hellermann) + * - Fixed broken LEDs_Disable() implementation for the Arduino Uno board (thanks to NicoHood) + * - Fixed missing bounds checks and off-by-one in the DFU bootloader signature bytes (thanks to Reuti) * * \section Sec_ChangeLog140928 Version 140928 * New: diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/CompileTimeTokens.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/CompileTimeTokens.txt similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/CompileTimeTokens.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/CompileTimeTokens.txt index ab075cf..92adf0d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/CompileTimeTokens.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/CompileTimeTokens.txt @@ -113,8 +113,8 @@ * On the smaller USB AVRs, the USB controller lacks VBUS events to determine the physical connection state of the USB bus to a host. In lieu of * VBUS events, the library attempts to determine the connection state via the bus suspension and wake up events instead. This however may be * slightly inaccurate due to the possibility of the host suspending the bus while the device is still connected. If accurate connection status is - * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the USB_DeviceState global - * can be accurately set and the \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events manually raised by the RAISE_EVENT macro. + * required, the VBUS line of the USB connector should be routed to an AVR pin to detect its level, so that the \ref USB_DeviceState global + * can be accurately set and the \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events manually raised by the user application. * When defined, this token disables the library's auto-detection of the connection state by the aforementioned suspension and wake up events. * * \li NO_SOF_EVENTS - (\ref Group_Events) - All Architectures \n diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/CompilingApps.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/CompilingApps.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/CompilingApps.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/CompilingApps.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ConfiguringApps.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ConfiguringApps.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ConfiguringApps.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ConfiguringApps.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DevelopingWithLUFA.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DevelopingWithLUFA.txt similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DevelopingWithLUFA.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DevelopingWithLUFA.txt index 9a02f95..31b58fa 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DevelopingWithLUFA.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DevelopingWithLUFA.txt @@ -17,7 +17,6 @@ * \li \subpage Page_VIDPID - Allocated USB VID and PID Values * \li \subpage Page_OSDrivers - Operating System Driver Information * \li \subpage Page_BuildLibrary - Building as a Linkable Library - * \li \subpage Page_ExportingLibrary - Exporting LUFA for IDE Use * \li \subpage Page_WritingBoardDrivers - How to Write Custom Board Drivers * \li \subpage Page_SoftwareBootloaderStart - How to jump to the bootloader in software */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DeviceSupport.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DeviceSupport.txt similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DeviceSupport.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DeviceSupport.txt index 2a4b9c3..cff2cda 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DeviceSupport.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DeviceSupport.txt @@ -92,6 +92,7 @@ * - STK525 * - STK526 * - XPLAIN (Original green board, not the newer blue XPLAINED family boards) + * - Xplained-MINI * * \section Sec_AVR8Support_ThirdParty Supported Third Party Boards * Currently supported third-party boards (see \ref Group_BoardTypes for makefile \c BOARD constant names): @@ -117,6 +118,7 @@ * - Olimex AVR-ISP-MK2 * - Paranoid Studio's US2AX (V1, V2 and V3 hardware revisions) * - PJRC Teensy (1.x and 2.x versions) + * - Pololu A-Star Micro * - Rikus' U2S * - Sparkfun U2 Breakout Board * - Stange ISP Programmer Board diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DirectorySummaries.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DirectorySummaries.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/DirectorySummaries.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/DirectorySummaries.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Donating.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Donating.txt similarity index 50% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Donating.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Donating.txt index 4a4b6aa..3e46890 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Donating.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Donating.txt @@ -9,18 +9,14 @@ * * \image html Images/Author.jpg "Dean Camera, LUFA Developer" * - * I am a 24 year old Atmel Applications Engineer, living in Trondheim, Norway and working on LUFA in my spare time. - * The development and support of this library requires much effort from myself, as I am the sole developer, maintainer - * and supporter. Please consider donating a small amount to support this and my future Open Source projects - All - * donations are greatly appreciated. + * I am a software developer working on LUFA in my spare time. The development and support of this library requires + * much effort from myself, as I am the sole developer, maintainer and supporter. Please consider donating a small + * amount to support this and my future Open Source projects - All donations are greatly appreciated. * * Note that commercial entities can remove the attribution portion of the LUFA license by a one-time fee - see * \ref Page_LicenseInfo for more details (Note: Please do NOT pay this in advance through the donation link below - * contact author for payment details.). * - * \htmlonly - * \image html "http://www.pledgie.com/campaigns/6927.png" - * \endhtmlonly - *
    Donate to this project via PayPal - Thanks in Advance! + * Donate to this project (via PayPal) - Thanks in Advance! */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/FutureChanges.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/FutureChanges.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/FutureChanges.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/FutureChanges.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/GettingStarted.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/GettingStarted.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/GettingStarted.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/GettingStarted.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Groups.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Groups.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Groups.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Groups.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/Author.jpg b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/Author.jpg similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/Author.jpg rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/Author.jpg diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/LUFA.png b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/LUFA.png similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/LUFA.png rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/LUFA.png diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/LUFA_thumb.png b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/LUFA_thumb.png similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Images/LUFA_thumb.png rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Images/LUFA_thumb.png diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/KnownIssues.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/KnownIssues.txt similarity index 63% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/KnownIssues.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/KnownIssues.txt index 7018fec..9c17be4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/KnownIssues.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/KnownIssues.txt @@ -9,6 +9,99 @@ * issues in the library. Most of these issues should be corrected in the future release - see * \ref Page_FutureChanges for a list of planned changes in future releases. * + * \section Sec_KnownIssuesXXXXXX Version XXXXXX + * - AVR8 Architecture + * - No known issues. + * - UC3 Architecture + * \warning The UC3 device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. \n + * + * - No demos, bootloaders or projects have been ported for the UC3 devices in the current release, + * although the architecture is supported in the LUFA core library. + * - DMA transfers to and from the USB controller are not yet implemented for this release. + * - The UC3C, UC3D and UC3L sub-families of UC3 are not currently supported by the library due to their + * altered USB controller design. + * - The various \c *_CreateStream() functions for creating standard \c compatible virtual file + * streams are not available on the UC3 architecture, due to a lack of suitable library support. + * - XMEGA Architecture + * \warning The XMEGA device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. + * + * - Endpoints of more than 64 bytes are not currently supported in this release. + * - Isochronous endpoints are not currently supported in this release. As a result, the audio class + * cannot be used on XMEGA devices. + * - Multiple-bank endpoints are not currently supported in this release. + * - Early silicon revisions of the ATXMEGA128A1U are incompatible with LUFA, due to their various errata + * relating to the USB controller. + * - Architecture Independent + * - The LUFA library is not watchdog aware, and thus timeouts are possible if short periods are used + * and a lengthy USB operation is initiated. + * - No LUFA provided driver INF files for Windows are signed, and thus may fail to install on systems where driver signing is enforced (e.g. Windows 8/10). + * - Build System + * - No known issues. + * + * \section Sec_KnownIssues170418 Version 170418 + * - AVR8 Architecture + * - No known issues. + * - UC3 Architecture + * \warning The UC3 device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. \n + * + * - No demos, bootloaders or projects have been ported for the UC3 devices in the current release, + * although the architecture is supported in the LUFA core library. + * - DMA transfers to and from the USB controller are not yet implemented for this release. + * - The UC3C, UC3D and UC3L sub-families of UC3 are not currently supported by the library due to their + * altered USB controller design. + * - The various \c *_CreateStream() functions for creating standard \c compatible virtual file + * streams are not available on the UC3 architecture, due to a lack of suitable library support. + * - XMEGA Architecture + * \warning The XMEGA device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. + * + * - Endpoints of more than 64 bytes are not currently supported in this release. + * - Isochronous endpoints are not currently supported in this release. As a result, the audio class + * cannot be used on XMEGA devices. + * - Multiple-bank endpoints are not currently supported in this release. + * - Early silicon revisions of the ATXMEGA128A1U are incompatible with LUFA, due to their various errata + * relating to the USB controller. + * - Architecture Independent + * - The LUFA library is not watchdog aware, and thus timeouts are possible if short periods are used + * and a lengthy USB operation is initiated. + * - No LUFA provided driver INF files for Windows are signed, and thus may fail to install on systems where driver signing is enforced (e.g. Windows 8/10). + * - Build System + * - No known issues. + * - Atmel Studio Integration + * - Not all devices are listed in the "Supported Parts" screen when selecting a device. To select an alternative device, change the "Show Device" drop-down to "All Parts". + * - When switching boards after changing the device selection, a second conflicting \c BOARD symbol definition can be created that prevents successful compilation. To fix, open the project properties window (Project->Project {name} Properties... menu item), click the "Toolchain" tab, click "Symbols" under the "AVR/GNU C Compiler" section and remove the incorrect definition. + * + * \section Sec_KnownIssues151115 Version 151115 + * - AVR8 Architecture + * - No known issues. + * - UC3 Architecture + * \warning The UC3 device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. \n + * + * - No demos, bootloaders or projects have been ported for the UC3 devices in the current release, + * although the architecture is supported in the LUFA core library. + * - DMA transfers to and from the USB controller are not yet implemented for this release. + * - The UC3C, UC3D and UC3L sub-families of UC3 are not currently supported by the library due to their + * altered USB controller design. + * - The various \c *_CreateStream() functions for creating standard \c compatible virtual file + * streams are not available on the UC3 architecture, due to a lack of suitable library support. + * - XMEGA Architecture + * \warning The XMEGA device support is currently experimental (incomplete and/or non-functional), and is included for preview purposes only. + * + * - Endpoints of more than 64 bytes are not currently supported in this release. + * - Isochronous endpoints are not currently supported in this release. As a result, the audio class + * cannot be used on XMEGA devices. + * - Multiple-bank endpoints are not currently supported in this release. + * - Early silicon revisions of the ATXMEGA128A1U are incompatible with LUFA, due to their various errata + * relating to the USB controller. + * - Architecture Independent + * - The LUFA library is not watchdog aware, and thus timeouts are possible if short periods are used + * and a lengthy USB operation is initiated. + * - No LUFA provided driver INF files for Windows are signed, and thus may fail to install on systems where driver signing is enforced (e.g. Windows 8). + * - Build System + * - No known issues. + * - Atmel Studio Integration + * - Not all devices are listed in the "Supported Parts" screen when selecting a device. To select an alternative device, change the "Show Device" drop-down to "All Parts". + * - When switching boards after changing the device selection, a second conflicting \c BOARD symbol definition can be created that prevents successful compilation. To fix, open the project properties window (Project->Project {name} Properties... menu item), click the "Toolchain" tab, click "Symbols" under the "AVR/GNU C Compiler" section and remove the incorrect definition. + * * \section Sec_KnownIssues140928 Version 140928 * - AVR8 Architecture * - No known issues. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LUFAPoweredProjects.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LUFAPoweredProjects.txt similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LUFAPoweredProjects.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LUFAPoweredProjects.txt index b1816d0..47893a8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LUFAPoweredProjects.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LUFAPoweredProjects.txt @@ -18,6 +18,7 @@ * The following is a list of known AVR USB development boards, which recommend using LUFA for the USB stack. Some of these * are open design, and all are available for purchase as completed development boards suitable for project development. * + * \li Adafruit Atmega32u4 Breakout Board: http://www.adafruit.com/product/296 * \li AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html * \li Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito * \li Duce, the successor to the Benito #7: http://dorkbotpdx.org/wiki/duce @@ -76,6 +77,7 @@ * \li Gumbi, a Python library and USB GPIO controller: https://code.google.com/p/gumbi/ * \li Hardware Volume Control: https://github.com/davidk/hw-volume-control * \li Hiduino, a USB-MIDI replacement firmware for the Arduino Uno: http://code.google.com/p/hiduino/ + * \li HoodLoader2, an Arduino Uno enhanced USB AVR coprocessor bootloader: https://github.com/NicoHood/HoodLoader2 * \li IBM capacitive keybord replacement controller: http://downloads.cornall.co/ibm-capsense-usb-web/ibm-capsense-usb.html * \li Ikea RGB LED USB modification: http://slashhome.se/p/projects/id/ikea_dioder_usb/#project * \li IR electricity meter monitor: http://sourceforge.net/projects/irmetermon/ @@ -111,6 +113,7 @@ * \li Password keyring: http://owlsan.blogspot.no/2014/06/keyring-project-version-10.html * \li Picade alternative firmware, a retro Arcade controller/cabinet: https://github.com/rktrlng/picade_lufa * \li PPM signal generator over USB: https://github.com/G33KatWork/USBPPM + * \li ProdikeysDM, a converter for old Creative Labs Prodikeys DM keyboards for modern systems: https://github.com/hotkeymuc/ProdikeysDM_Adaptor * \li Programmable keyboard controller: http://41j.com/blog/2011/10/a-programmable-keyboard-controller/ * \li Programmable XBOX controller: http://richard-burke.dyndns.org/wordpress/pan-galactic-gargantuan-gargle-brain-aka-xbox-360-usb-controller/ * \li Project Surface, a touch interface controller for Windows 8: https://code.google.com/p/project-surface/ @@ -138,6 +141,7 @@ * \li Touchscreen Input Device: http://capnstech.blogspot.com/2010/07/touchscreen-update.html * \li UDFS, a BBC Micro USB disk filing system: https://github.com/makestuff/udfs * \li Universal USB AVR Module: http://usbavr.bplaced.net/ + * \li USB Adapter for an old Teletype Printer: www.savel.org/2020/07/11/avr-usb-printer-device-and-teletype/ * \li USB2AX, a USB to Dynamixel network adapter: http://paranoidstudio.assembla.com/wiki/show/paranoidstudio/USB2AX * \li USBPass, a USB password keeper: http://sroz.net/projects/usbpass/ * \li USB Business Card: http://www.limpkin.fr/index.php?post/2012/09/15/My-new-business-card @@ -168,6 +172,7 @@ * \li BitFury, a Bitcoin ASIC miner: https://github.com/aauer1/LUFA-BitFury/tree/master/Projects/BitfuryBTC * \li Ceberus, a MadCatz Xbox 360 arcade stick modifier: http://www.phreakmods.com/products/cerberus * \li CFFA3000, a CompactFlash interface for the Apple II: http://www.dreher.net/CFforAppleII + * \li ChameleonMini, a RFID monitoring tool: https://github.com/emsec/ChameleonMini/wiki * \li Digital Survey Instruments Magnetometer and Pointer: http://www.digitalsurveyinstruments.com/ * \li FinchRobot, a robot designed for educational use: http://www.finchrobot.com/ * \li Flysight, a GPS logger for wingsuit pilots: http://flysight.ca/ @@ -210,8 +215,9 @@ * * \li Adafruit "Ask an Engineer", 7th November 2010 * \li Arduino 2010 Keynote speech - * \li The Amp Hour podcast blog #11 * \li Blackhat 2011 conference, "Exploiting USB Devices with Arduino" + * \li Defcon 24 conference, "Universal Serial aBUSe" + * \li The Amp Hour podcast blog #11 * * \section Sec_PortsAndForks Non-Official LUFA Ports and Forks * The following are unofficial forks of the LUFA codebase, which implement different features such as support for diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LibraryResources.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LibraryResources.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LibraryResources.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LibraryResources.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LicenseInfo.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LicenseInfo.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/LicenseInfo.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/LicenseInfo.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/MainPage.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/MainPage.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/MainPage.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/MainPage.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/MigrationInformation.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/MigrationInformation.txt similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/MigrationInformation.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/MigrationInformation.txt index bc47d14..c456966 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/MigrationInformation.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/MigrationInformation.txt @@ -10,6 +10,20 @@ * to the next version released. It does not indicate all new additions to the library in each version change, only * areas relevant to making older projects compatible with the API changes of each new release. * + * \section Sec_MigrationXXXXXX Version XXXXXX + * Device Mode + * - The \c DTYPE_CSInterface enum value has now been moved to the CDC and Audio drivers, as the constants \c CDC_DTYPE_CSInterface and \c AUDIO_DTYPE_CSInterface. + * - The \c DTYPE_CSEndpoint enum value has now been moved to the CDC and Audio drivers, as the constants \c CDC_DTYPE_CSEndpoint and \c AUDIO_DTYPE_CSEndpoint. + * + * \section Sec_Migration170418 Version 170418 + * Device Mode + * - The \c CALLBACK_USB_GetDescriptor() callback function into the user application's \c wIndex parameter is now \c uint16_t, not \c uint8_t. + * + * \section Sec_Migration151115 Migrating from 140928 to 151115 + * Non-USB Library Components + * - The ATPROGRAM LUFA build system module now defaults to the Atmel ICE debugger tool, instead of the Atmel JTAG ICE3. + * - The \c Serial_CreateStream() and \c Serial_CreateBlockingStream() functions now require a USART base pointer for XMEGA devices as the first parameter. + * * \section Sec_Migration140928 Migrating from 140302 to 140928 * Device Mode * - The device mode RNDIS class driver now requires a user-supplied buffer and buffer length to operate, rather diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/OSDrivers.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/OSDrivers.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/OSDrivers.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/OSDrivers.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ProgrammingApps.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ProgrammingApps.txt similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ProgrammingApps.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ProgrammingApps.txt index 4759ac8..653b4ad 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/ProgrammingApps.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/ProgrammingApps.txt @@ -24,7 +24,4 @@ * If you wish to use the DFU bootloader to program in your application, refer to your DFU programmer's documentation. * Atmel provides a free utility called FLIP which is USB AVR compatible, and an open source (Linux compatible) * alternative exists called "dfu-programmer". - * - * \see \ref Page_BuildModule_DFU for information on the LUFA build system DFU module, for automatic DFU bootloader - * programming makefile targets. */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/SoftwareBootloaderJump.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/SoftwareBootloaderJump.txt similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/SoftwareBootloaderJump.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/SoftwareBootloaderJump.txt index 0b69612..f8c2523 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/SoftwareBootloaderJump.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/SoftwareBootloaderJump.txt @@ -31,7 +31,7 @@ * * uint32_t Boot_Key ATTR_NO_INIT; * - * #define MAGIC_BOOT_KEY 0xDC42ACCA + * #define MAGIC_BOOT_KEY 0xBADCAFE5 * #define BOOTLOADER_START_ADDRESS ((FLASH_SIZE_BYTES - BOOTLOADER_SEC_SIZE_BYTES) >> 1) * * void Bootloader_Jump_Check(void) ATTR_INIT_SECTION(3); diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Style/Footer.htm b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Style/Footer.htm similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Style/Footer.htm rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Style/Footer.htm diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Style/Style.css b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Style/Style.css similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/Style/Style.css rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/Style/Style.css diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/VIDAndPIDValues.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/VIDAndPIDValues.txt similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/VIDAndPIDValues.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/VIDAndPIDValues.txt index 8b17220..8f62486 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/VIDAndPIDValues.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/VIDAndPIDValues.txt @@ -181,7 +181,7 @@ * * 0x03EB * 0x206E - * Currently Unallocated + * CCID Class Demo Application * * * 0x03EB diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/WritingBoardDrivers.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/WritingBoardDrivers.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/DoxygenPages/WritingBoardDrivers.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/DoxygenPages/WritingBoardDrivers.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h index 48016e0..91ef3d9 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h index 9f31220..68d607f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h index 07000ec..e488d1c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h index 8b815db..71f24a3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h index 76e89fd..5b62048 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Board.h index 5584e1e..cfe87b7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h index 96d14a3..280bb49 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h index 49df441..7441fc6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h index 9d4e301..ebfb48d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h index 93d5bec..009099c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h index 6eec7bf..797a167 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h index 4a72039..f388d20 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/Board.h index 067e870..df6f91d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/LEDs.h index e06edb5..eeb7d5a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUI/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUI/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h index 906f0b5..70e4fac 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h index 0495425..eb715fc 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h index 82d085e..85b5c66 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h index 5cd7b48..96d381d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Board.h index 777902d..d85b851 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h index 6a26a99..fcdf788 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h index 3d2b8fd..724ecf9 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/Board.h index 44cf691..9a13704 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h index 83caded..3c1ea7b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Board.h index c77c18b..697edb3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h index 239880c..4eab3a3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h index 38b2b58..f2b19f2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h index 492c706..e5dabc3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h index 84e689a..fe9c748 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h index 0f1aca0..b0d3e59 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h index 8050099..320e2e8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h index 562103e..903dbcd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h index 95ef437..b20574d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h index 73c6eba..8de7eb3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -93,15 +93,6 @@ /** LED mask for none of the board LEDs. */ #define LEDS_NO_LEDS 0 - /** LED mask for the library LED driver, to indicate TX activity. */ - #define LEDMASK_TX LEDS_LED2 - - /** LED mask for the library LED driver, to indicate RX activity. */ - #define LEDMASK_RX LEDS_LED1 - - /** LED mask for the library LED driver, to indicate other activity. */ - #define LEDMASK_13 LEDS_LED3 - /* Inline Functions: */ #if !defined(__DOXYGEN__) static inline void LEDs_Init(void) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h index 929e60a..7061fa6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h index 695949a..6eb39ec 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/Board.h index 622bfc8..0ae90eb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h index c3e471d..50a9584 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h index b84bf79..e22df87 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h index 8adff2d..6c4f4c2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h index 253ad31..24a69eb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h index 3ffb028..5be5f06 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h index 68344fe..0af9ca7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h index 51d1b3e..72f568b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h index 80b8b3c..9671f0c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h index ec94445..9585f5d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h index adc3468..248eb96 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/Board.h index 84f3d87..edc722e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h index ca6d440..1fb4981 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h index b9bcf77..0c6bfa7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h index 3714c5e..5564e81 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h index 5ecc1f5..e2c8da6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h index 657b15c..4b87f53 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h index 8e33fd9..b16e88f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h index 259859c..e49f08b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h index d318a82..56488e1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h index aff10b1..8ec8c47 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h index 033fca0..535ddf2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h index 690fee1..fdf3539 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h index 634eda9..6522ac5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h index 2bbaf68..0fbbc95 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h new file mode 100644 index 0000000..be9371d --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h @@ -0,0 +1,79 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific information header for the "Pololu A-Star Micro" board. + * \copydetails Group_BoardInfo_POLOLUMICRO + * + * \note This file should not be included directly. It is automatically included as needed by the Board driver + * dispatch header located in LUFA/Drivers/Board/Board.h. + */ + +/** \ingroup Group_BoardInfo + * \defgroup Group_BoardInfo_POLOLUMICRO POLOLUMICRO + * \brief Board specific information header for the "Pololu A-Star Micro" board. + * + * Board specific information header: + * https://www.pololu.com/docs/0J61 -> https://www.pololu.com/docs/0J61/3.1 + * + * @{ + */ + +#ifndef __BOARD_POLOLUMICRO_H__ +#define __BOARD_POLOLUMICRO_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + #include "../../LEDs.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_BOARD_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Indicates the board has hardware LEDs mounted. */ + #define BOARD_HAS_LEDS + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h new file mode 100644 index 0000000..1ed671e --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h @@ -0,0 +1,154 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific LED driver header for the Pololu A-Star Micro board. + * \copydetails Group_LEDs_MICRO + * + * \note This file should not be included directly. It is automatically included as needed by the LEDs driver + * dispatch header located in LUFA/Drivers/Board/LEDs.h. + */ + +/** \ingroup Group_LEDs + * \defgroup Group_LEDs_MICRO MICRO + * \brief Board specific LED driver header for the Pololu A-Star Micro board. + * + * Board specific LED driver header for the Pololu A-Star Micro board https://www.pololu.com/docs/0J61/3.1 + * + * + * + * + * + *
    NameColorInfoActive LevelPort Pin
    LEDS_LED1YellowGeneral IndicatorHighPORTC.7
    LEDS_LED2GreenBootloader, USB-activityLowPORTD.5
    + * + * @{ + */ + +#ifndef __LEDS_MICRO_H__ +#define __LEDS_MICRO_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_LEDS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. + #endif + + /* Private Interface - For use in library only: */ + #if !defined(__DOXYGEN__) + /* Macros: */ + #define LEDS_PORTC_LEDS (LEDS_LED1) + #define LEDS_PORTD_LEDS (LEDS_LED2) + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** LED mask for the first LED on the board. */ + #define LEDS_LED1 (1 << 7) + + /** LED mask for the second LED on the board. */ + #define LEDS_LED2 (1 << 5) + + /** LED mask for all the LEDs on the board. */ + #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) + + /** LED mask for none of the board LEDs. */ + #define LEDS_NO_LEDS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void LEDs_Init(void) + { + DDRD |= LEDS_PORTD_LEDS; + PORTD &= ~LEDS_PORTD_LEDS; + DDRC |= LEDS_PORTC_LEDS; + PORTC &= ~LEDS_PORTC_LEDS; + } + + static inline void LEDs_Disable(void) + { + DDRD &= ~LEDS_PORTD_LEDS; + PORTD &= ~LEDS_PORTD_LEDS; + DDRC &= ~LEDS_PORTC_LEDS; + PORTC &= ~LEDS_PORTC_LEDS; + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + PORTD |= (LEDMask & LEDS_PORTD_LEDS); + PORTC |= (LEDMask & LEDS_PORTC_LEDS); + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + PORTD &= ~(LEDMask & LEDS_PORTD_LEDS); + PORTC &= ~(LEDMask & LEDS_PORTC_LEDS); + } + + static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) + { + PORTD = ((PORTD & ~LEDS_PORTD_LEDS) | (LEDMask & LEDS_PORTD_LEDS)); + PORTC = ((PORTC & ~LEDS_PORTC_LEDS) | (LEDMask & LEDS_PORTC_LEDS)); + } + + static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, + const uint8_t ActiveMask) + { + PORTD = ((PORTD & ~(LEDMask & LEDS_PORTD_LEDS)) | (ActiveMask & LEDS_PORTD_LEDS)); + PORTC = ((PORTC & ~(LEDMask & LEDS_PORTC_LEDS)) | (ActiveMask & LEDS_PORTC_LEDS)); + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PORTD ^= (LEDMask & LEDS_PORTD_LEDS); + PORTC ^= (LEDMask & LEDS_PORTC_LEDS); + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return ((PORTD & LEDS_PORTD_LEDS) | (PORTC & LEDS_PORTC_LEDS)); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h index 6fc3666..c2968ad 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h index 6ebcdfc..82f4ccd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h index 49cc2e5..16bb9b0 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h index b8eb4ab..e82efa2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h index 36594fc..df6c6a0 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h index d4576b6..bf91329 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h index 9f10683..3e07d8b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Board.h index bda925b..74e1249 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Buttons.h index 532a46f..b24f24c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h index 825a7a5..9f66308 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Joystick.h index 6b9b4f4..10ecd42 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/LEDs.h index 53948b4..10dc1d2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK525/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK525/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Board.h index 6be146f..6d663a3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Buttons.h index bc598d3..490098b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h index d2a59b1..5a8cf6a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Joystick.h index 7decabc..78e5ae3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/LEDs.h index 71525e9..cdce7c5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/STK526/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/STK526/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/Board.h index 52e4d61..0c348f5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h index 9f87224..5e00e9e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Board.h index 7759c37..777949e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Buttons.h index bbcca26..7cff649 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/LEDs.h index 8a14b8a..9ab0e07 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/TUL/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/TUL/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Board.h index 128580a..6bc031d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Buttons.h index 30f0a9f..3abdc44 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/LEDs.h index d7cf7cf..08cdf4e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/U2S/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/U2S/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Board.h index 3a40005..d378f26 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h index dab29a6..a35ef35 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h index fbcc8ff..a48c29c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/Board.h similarity index 90% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/Board.h index 38e2cb0..e2947f7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -66,12 +66,12 @@ /* Macros: */ /** Indicates the board has hardware LEDs mounted. */ #define BOARD_HAS_LEDS - + /** Pin that can reset the main MCU. */ - #define AVR_RESET_LINE_PORT PORTD - #define AVR_RESET_LINE_DDR DDRD - #define AVR_RESET_LINE_PIN PIND - #define AVR_RESET_LINE_MASK (1 << PD7) + #define AVR_RESET_LINE_PORT PORTD + #define AVR_RESET_LINE_DDR DDRD + #define AVR_RESET_LINE_PIN PIND + #define AVR_RESET_LINE_MASK (1 << PD7) /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/LEDs.h index 28c0747..04b94e7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/UNO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/UNO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -80,10 +80,10 @@ /** LED mask for none of the board LEDs. */ #define LEDS_NO_LEDS 0 - + /** LED mask for the library LED driver, to indicate TX activity. */ #define LEDMASK_TX LEDS_LED1 - + /** LED mask for the library LED driver, to indicate RX activity. */ #define LEDMASK_RX LEDS_LED2 diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Board.h index 05a4dea..d320d5d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h index 170a9af..01f5e44 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h index 03550fc..fc1955d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Board.h index 15c41ab..d5aeeb4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h index e901437..a450c67 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h index e396630..aaaa47f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Board.h index 3663056..c9683c8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h index 3ec7b3a..861a82f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h index 85a8dda..17f5bc5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h index 45d5a66..cc233aa 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h index dc02da5..40c0507 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h index 492aced..501aebd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h index 682239c..42ab4b3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h index a2decbc..bf00fde 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h index 57ad4c9..7c59b8c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h index a8078f6..33b5199 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h index 338b1b4..3855c75 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h new file mode 100644 index 0000000..569dc40 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h @@ -0,0 +1,78 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2019. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific information header for the Atmel Xplained-MINI series kits. + * \copydetails Group_BoardInfo_XPLAINED_MINI + * + * \note This file should not be included directly. It is automatically included as needed by the Board driver + * dispatch header located in LUFA/Drivers/Board/Board.h. + */ + +/** \ingroup Group_BoardInfo + * \defgroup Group_BoardInfo_XPLAINED_MINI XPLAINED_MINI + * \brief Board specific information header for the Atmel Xplained-MINI series kits. + * + * Board specific information header for the Atmel Xplained-MINI series kits. + * + * @{ + */ + +#ifndef __BOARD_XPLAINED_MINI_H__ +#define __BOARD_XPLAINED_MINI_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + #include "../../LEDs.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_BOARD_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/Board.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** Indicates the board has hardware LEDs mounted. */ + #define BOARD_HAS_LEDS + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h new file mode 100644 index 0000000..403c920 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h @@ -0,0 +1,135 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2019. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Board specific LED driver header for the Atmel Xplained-MINI series kits.. + * \copydetails Group_LEDs_XPLAINED_MINI + * + * \note This file should not be included directly. It is automatically included as needed by the LEDs driver + * dispatch header located in LUFA/Drivers/Board/LEDs.h. + */ + +/** \ingroup Group_LEDs + * \defgroup Group_LEDs_XPLAINED_MINI XPLAINED_MINI + * \brief Board specific LED driver header for the Atmel Xplained-MINI series kits. + * + * Board specific LED driver header for the Atmel Xplained-MINI series kits. + * + * + * + * + *
    NameColorInfoActive LevelPort Pin
    LEDS_LED1GreenGeneral IndicatorLowPORTC.6
    + * + * @{ + */ + +#ifndef __LEDS_XPLAINED_MINI_H__ +#define __LEDS_XPLAINED_MINI_H__ + + /* Includes: */ + #include "../../../../Common/Common.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_LEDS_H) + #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. + #endif + + /* Public Interface - May be used in end-application: */ + /* Macros: */ + /** LED mask for the first LED on the board. */ + #define LEDS_LED1 (1 << 6) + + /** LED mask for all the LEDs on the board. */ + #define LEDS_ALL_LEDS LEDS_LED1 + + /** LED mask for none of the board LEDs. */ + #define LEDS_NO_LEDS 0 + + /* Inline Functions: */ + #if !defined(__DOXYGEN__) + static inline void LEDs_Init(void) + { + DDRC |= LEDS_ALL_LEDS; + PORTC |= LEDS_ALL_LEDS; + } + + static inline void LEDs_Disable(void) + { + DDRC &= ~LEDS_ALL_LEDS; + PORTC &= ~LEDS_ALL_LEDS; + } + + static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) + { + PORTC &= ~LEDMask; + } + + static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) + { + PORTC |= LEDMask; + } + + static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) + { + PORTC = ((PORTC | LEDS_ALL_LEDS) & ~LEDMask); + } + + static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, + const uint8_t ActiveMask) + { + PORTC = ((PORTC | LEDMask) & ~ActiveMask); + } + + static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) + { + PINC = LEDMask; + } + + static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; + static inline uint8_t LEDs_GetLEDs(void) + { + return (~PORTC & LEDS_ALL_LEDS); + } + #endif + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/Board.h index 1d99302..7ec1272 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/LEDs.h index bcdd47f..de1493b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/AVR8/YUN/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/AVR8/YUN/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Board.h index 27f4953..f814c7b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -157,6 +157,10 @@ #include "AVR8/YUN/Board.h" #elif (BOARD == BOARD_MICRO) #include "AVR8/MICRO/Board.h" + #elif (BOARD == BOARD_POLOLUMICRO) + #include "AVR8/POLOLUMICRO/Board.h" + #elif (BOARD == BOARD_XPLAINED_MINI) + #include "AVR8/XPLAINED_MINI/Board.h" #else #include "Board/Board.h" #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Buttons.h index dc22cc1..7b474b4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -93,8 +93,9 @@ #if (BOARD == BOARD_NONE) #define BUTTONS_BUTTON1 0 - static inline void Buttons_Init(void) {}; - static inline uint_reg_t Buttons_GetStatus(void) { return 0; }; + static inline void Buttons_Init(void) {} + static inline void Buttons_Disable(void) {} + static inline uint_reg_t Buttons_GetStatus(void) { return 0; } #elif (BOARD == BOARD_USBKEY) #include "AVR8/USBKEY/Buttons.h" #elif (BOARD == BOARD_STK525) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Dataflash.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Dataflash.h index 9b4bf56..e43567b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Joystick.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Joystick.h index 4ecf61f..26179bb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -105,8 +105,9 @@ #define JOY_LEFT 0 #define JOY_RIGHT 0 #define JOY_PRESS 0 - static inline void Joystick_Init(void) {}; - static inline uint_reg_t Joystick_GetStatus(void) { return 0; }; + static inline void Joystick_Init(void) {} + static inline void Joystick_Disable(void) {} + static inline uint_reg_t Joystick_GetStatus(void) { return 0; } #elif (BOARD == BOARD_USBKEY) #include "AVR8/USBKEY/Joystick.h" #elif (BOARD == BOARD_STK525) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/LEDs.h similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/LEDs.h index 392714a..e8657af 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -108,13 +108,13 @@ #include "../../Common/Common.h" #if (BOARD == BOARD_NONE) - static inline void LEDs_Init(void) {}; - static inline void LEDs_Disable(void) {}; - static inline void LEDs_TurnOnLEDs(const uint_reg_t LEDMask) {}; - static inline void LEDs_TurnOffLEDs(const uint_reg_t LEDMask) {}; - static inline void LEDs_SetAllLEDs(const uint_reg_t LEDMask) {}; - static inline void LEDs_ChangeLEDs(const uint_reg_t LEDMask, const uint_reg_t ActiveMask) {}; - static inline void LEDs_ToggleLEDs(const uint_reg_t LEDMask) {}; + static inline void LEDs_Init(void) {} + static inline void LEDs_Disable(void) {} + static inline void LEDs_TurnOnLEDs(const uint_reg_t LEDMask) {} + static inline void LEDs_TurnOffLEDs(const uint_reg_t LEDMask) {} + static inline void LEDs_SetAllLEDs(const uint_reg_t LEDMask) {} + static inline void LEDs_ChangeLEDs(const uint_reg_t LEDMask, const uint_reg_t ActiveMask) {} + static inline void LEDs_ToggleLEDs(const uint_reg_t LEDMask) {} static inline uint_reg_t LEDs_GetLEDs(void) { return 0; } #elif (BOARD == BOARD_USBKEY) #include "AVR8/USBKEY/LEDs.h" @@ -207,6 +207,10 @@ #include "AVR8/YUN/LEDs.h" #elif (BOARD == BOARD_MICRO) #include "AVR8/MICRO/LEDs.h" + #elif (BOARD == BOARD_POLOLUMICRO) + #include "AVR8/POLOLUMICRO/LEDs.h" + #elif (BOARD == BOARD_XPLAINED_MINI) + #include "AVR8/XPLAINED_MINI/LEDs.h" #else #include "Board/LEDs.h" #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.c index 8b09f10..122959b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.h index d20c6f7..b4600a6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/Temperature.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/Temperature.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Board.h index 0c34a3f..9baa255 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h index fa45200..b9cea65 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h index 72dd769..8146672 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h index f66eddb..a72fb47 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Board.h index 5d5f95a..c6542d1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h index 3de4b33..d669f65 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h index f7a9a75..308cf2f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h index dad7771..7c9ca95 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Board.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Board.h index aa7adbf..e93d3a9 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h index dfcfb66..a2c66f8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h index 2258a26..f527c73 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h index ec4d9c7..1aaaa8c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h index 8accb6f..3dbca79 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h index 66b7834..381963c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h index 824c3db..20c1af7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h index d5119eb..bd43521 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h index 2d09839..85bbe57 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h index 16abfbc..b88d575 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h index d807d18..2633c17 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h index 9c458b4..9011242 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h index f02ca4a..4e5510a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h index 7bd31ad..3d3f332 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h index d90cc3a..0cbad7d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h index db62b1d..4d1f70c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h index 737624b..3dd08bb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB321C.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB321C.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB321C.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB321C.h index 2506928..dd838a5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB321C.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB321C.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -48,14 +48,14 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name Dataflash Status Values */ - //@{ + /**@{*/ #define DF_STATUS_READY (1 << 7) #define DF_STATUS_COMPMISMATCH (1 << 6) #define DF_STATUS_SECTORPROTECTION_ON (1 << 1) - //@} + /**@}*/ /** \name Dataflash Commands */ - //@{ + /**@{*/ #define DF_CMD_GETSTATUS 0xD7 #define DF_CMD_MAINMEMTOBUFF1 0x53 @@ -89,7 +89,7 @@ #define DF_CMD_SECTORPROTECTIONOFF_BYTE4 0xCF #define DF_CMD_READMANUFACTURERDEVICEINFO 0x9F - //@} + /**@}*/ /** Manufacturer code for Atmel Corporation, returned by Atmel Dataflash ICs in response to the \c DF_CMD_READMANUFACTURERDEVICEINFO command. */ #define DF_MANUFACTURER_ATMEL 0x1F diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB642D.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB642D.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB642D.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB642D.h index ebbad71..5e8b960 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/AT45DB642D.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/AT45DB642D.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -48,15 +48,15 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name Dataflash Status Values */ - //@{ + /**@{*/ #define DF_STATUS_READY (1 << 7) #define DF_STATUS_COMPMISMATCH (1 << 6) #define DF_STATUS_SECTORPROTECTION_ON (1 << 1) #define DF_STATUS_BINARYPAGESIZE_ON (1 << 0) - //@} + /**@}*/ /** \name Dataflash Commands */ - //@{ + /**@{*/ #define DF_CMD_GETSTATUS 0xD7 #define DF_CMD_POWERDOWN 0xB9 #define DF_CMD_WAKEUP 0xAB @@ -105,7 +105,7 @@ #define DF_CMD_BINARYPAGESIZEMODEON_BYTE4 0xA6 #define DF_CMD_READMANUFACTURERDEVICEINFO 0x9F - //@} + /**@}*/ /** Manufacturer code for Atmel Corporation, returned by Atmel Dataflash ICs in response to the \c DF_CMD_READMANUFACTURERDEVICEINFO command. */ #define DF_MANUFACTURER_ATMEL 0x1F diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/RingBuffer.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/RingBuffer.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/RingBuffer.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/RingBuffer.h index 68fdb8e..b439476 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/RingBuffer.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/RingBuffer.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/TerminalCodes.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/TerminalCodes.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/TerminalCodes.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/TerminalCodes.h index d43fe01..53f7bf8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Misc/TerminalCodes.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Misc/TerminalCodes.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -80,7 +80,7 @@ #endif /** \name Text Display Modifier Control Sequences */ - //@{ + /**@{*/ /** Turns on bold so that any following text is printed to the terminal in bold. */ #define ESC_BOLD_ON ANSI_ESCAPE_SEQUENCE("1m") @@ -114,10 +114,10 @@ * the center. */ #define ESC_STRIKETHROUGH_OFF ANSI_ESCAPE_SEQUENCE("29m") - //@} + /**@}*/ /** \name Text Colour Control Sequences */ - //@{ + /**@{*/ /** Sets the foreground (text) colour to black. */ #define ESC_FG_BLACK ANSI_ESCAPE_SEQUENCE("30m") @@ -171,10 +171,10 @@ /** Sets the text background colour to the terminal's default. */ #define ESC_BG_DEFAULT ANSI_ESCAPE_SEQUENCE("49m") - //@} + /**@}*/ /** \name Cursor Positioning Control Sequences */ - //@{ + /**@{*/ /** Saves the current cursor position so that it may be restored with \ref ESC_CURSOR_POS_RESTORE. */ #define ESC_CURSOR_POS_SAVE ANSI_ESCAPE_SEQUENCE("s") @@ -211,10 +211,10 @@ * \param[in] Columns Number of columns to move the cursor position */ #define ESC_CURSOR_BACKWARD(Columns) ANSI_ESCAPE_SEQUENCE(#Columns "D") - //@} + /**@}*/ /** \name Miscellaneous Control Sequences */ - //@{ + /**@{*/ /** Resets any escape sequence modifiers back to their defaults. */ #define ESC_RESET ANSI_ESCAPE_SEQUENCE("0m") @@ -223,7 +223,7 @@ /** Erases the current line, returning the cursor to the far left. */ #define ESC_ERASE_LINE ANSI_ESCAPE_SEQUENCE("K") - //@} + /**@}*/ #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/ADC.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/ADC.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/ADC.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/ADC.h index 295c6e1..aa48569 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/ADC.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/ADC.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h index 03b6ed0..82e20e6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -100,7 +100,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name ADC Reference Configuration Masks */ - //@{ + /**@{*/ /** Reference mask, for using the voltage present at the AVR's AREF pin for the ADC reference. */ #define ADC_REFERENCE_AREF 0 @@ -109,10 +109,10 @@ /** Reference mask, for using the internally generated 2.56V reference voltage as the ADC reference. */ #define ADC_REFERENCE_INT2560MV ((1 << REFS1) | (1 << REFS0)) - //@} + /**@}*/ /** \name ADC Result Adjustment Configuration Masks */ - //@{ + /**@{*/ /** Left-adjusts the 10-bit ADC result, so that the upper 8 bits of the value returned by the * \ref ADC_GetResult() macro contain the 8 most significant bits of the result. */ @@ -122,10 +122,10 @@ * \ref ADC_GetResult() macro contain the 8 least significant bits of the result. */ #define ADC_RIGHT_ADJUSTED (0 << ADLAR) - //@} + /**@}*/ /** \name ADC Mode Configuration Masks */ - //@{ + /**@{*/ /** Sets the ADC mode to free running, so that conversions take place continuously as fast as the ADC * is capable of at the given input clock speed. */ @@ -135,10 +135,10 @@ * the ADC returns to idle. */ #define ADC_SINGLE_CONVERSION (0 << ADATE) - //@} + /**@}*/ /** \name ADC Prescaler Configuration Masks */ - //@{ + /**@{*/ /** Sets the ADC input clock to prescale by a factor of 2 the AVR's system clock. */ #define ADC_PRESCALE_2 (1 << ADPS0) @@ -159,10 +159,10 @@ /** Sets the ADC input clock to prescale by a factor of 128 the AVR's system clock. */ #define ADC_PRESCALE_128 ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)) - //@} + /**@}*/ /** \name ADC MUX Masks */ - //@{ + /**@{*/ /** MUX mask define for the ADC0 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */ #define ADC_CHANNEL0 (0x00 << MUX0) @@ -251,7 +251,7 @@ * \param[in] Channel Index of the ADC channel whose MUX mask is to be retrieved. */ #define ADC_GET_CHANNEL_MASK(Channel) CONCAT_EXPANDED(ADC_CHANNEL, Channel) - //@} + /**@}*/ /* Inline Functions: */ /** Configures the given ADC channel, ready for ADC conversions. This function sets the diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h index 1b8f53e..30b8ee4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -99,7 +99,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI Prescaler Configuration Masks */ - //@{ + /**@{*/ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 2. */ #define SPI_SPEED_FCPU_DIV_2 SPI_USE_DOUBLESPEED @@ -120,43 +120,43 @@ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 128. */ #define SPI_SPEED_FCPU_DIV_128 ((1 << SPR1) | (1 << SPR0)) - //@} + /**@}*/ /** \name SPI SCK Polarity Configuration Masks */ - //@{ + /**@{*/ /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the rising edge. */ #define SPI_SCK_LEAD_RISING (0 << CPOL) /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the falling edge. */ #define SPI_SCK_LEAD_FALLING (1 << CPOL) - //@} + /**@}*/ /** \name SPI Sample Edge Configuration Masks */ - //@{ + /**@{*/ /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should sampled on the leading edge. */ #define SPI_SAMPLE_LEADING (0 << CPHA) /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should be sampled on the trailing edge. */ #define SPI_SAMPLE_TRAILING (1 << CPHA) - //@} + /**@}*/ /** \name SPI Data Ordering Configuration Masks */ - //@{ + /**@{*/ /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out MSB first. */ #define SPI_ORDER_MSB_FIRST (0 << DORD) /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out LSB first. */ #define SPI_ORDER_LSB_FIRST (1 << DORD) - //@} + /**@}*/ /** \name SPI Mode Configuration Masks */ - //@{ + /**@{*/ /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */ #define SPI_MODE_SLAVE (0 << MSTR) /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */ #define SPI_MODE_MASTER (1 << MSTR) - //@} + /**@}*/ /* Inline Functions: */ /** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h index 8d58369..9fe7020 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -105,31 +105,31 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI SCK Polarity Configuration Masks */ - //@{ + /**@{*/ /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the rising edge. */ #define USART_SPI_SCK_LEAD_RISING (0 << UCPOL1) /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the falling edge. */ #define USART_SPI_SCK_LEAD_FALLING (1 << UCPOL1) - //@} + /**@}*/ /** \name SPI Sample Edge Configuration Masks */ - //@{ + /**@{*/ /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should sampled on the leading edge. */ #define USART_SPI_SAMPLE_LEADING (0 << UCPHA1) /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should be sampled on the trailing edge. */ #define USART_SPI_SAMPLE_TRAILING (1 << UCPHA1) - //@} + /**@}*/ /** \name SPI Data Ordering Configuration Masks */ - //@{ + /**@{*/ /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out MSB first. */ #define USART_SPI_ORDER_MSB_FIRST (0 << UDORD1) /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out LSB first. */ #define USART_SPI_ORDER_LSB_FIRST (1 << UDORD1) - //@} + /**@}*/ /* Inline Functions: */ /** Initialize the USART module in Master SPI mode. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c index 8785a4b..73cc797 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -88,8 +88,10 @@ void Serial_SendString(const char* StringPtr) void Serial_SendData(const void* Buffer, uint16_t Length) { + uint8_t* CurrByte = (uint8_t*)Buffer; + while (Length--) - Serial_SendByte(*((uint8_t*)Buffer++)); + Serial_SendByte(*(CurrByte++)); } void Serial_CreateStream(FILE* Stream) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h index e8860a5..3397b6c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -168,7 +168,8 @@ /** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to * standard 8-bit, no parity, 1 stop bit settings suitable for most applications. * - * \param[in] BaudRate Serial baud rate, in bits per second. + * \param[in] BaudRate Serial baud rate, in bits per second. This should be the target baud rate regardless of the + * \c DoubleSpeed parameter's value. * \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate. */ static inline void Serial_Init(const uint32_t BaudRate, diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c index 2a6c160..68cd954 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -135,7 +135,7 @@ uint8_t TWI_ReadPacket(const uint8_t SlaveAddress, const uint8_t* InternalAddress, uint8_t InternalAddressLen, uint8_t* Buffer, - uint8_t Length) + uint16_t Length) { uint8_t ErrorCode; @@ -175,7 +175,7 @@ uint8_t TWI_WritePacket(const uint8_t SlaveAddress, const uint8_t* InternalAddress, uint8_t InternalAddressLen, const uint8_t* Buffer, - uint8_t Length) + uint16_t Length) { uint8_t ErrorCode; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h index 584b584..8ba5a94 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -273,7 +273,7 @@ const uint8_t* InternalAddress, uint8_t InternalAddressLen, uint8_t* Buffer, - uint8_t Length) ATTR_NON_NULL_PTR_ARG(3); + uint16_t Length) ATTR_NON_NULL_PTR_ARG(3); /** High level function to perform a complete packet transfer over the TWI bus from the specified * device. @@ -292,7 +292,7 @@ const uint8_t* InternalAddress, uint8_t InternalAddressLen, const uint8_t* Buffer, - uint8_t Length) ATTR_NON_NULL_PTR_ARG(3); + uint16_t Length) ATTR_NON_NULL_PTR_ARG(3); /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SPI.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SPI.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SPI.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SPI.h index 54c4642..67d1096 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SPI.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SPI.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/Serial.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/Serial.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/Serial.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/Serial.h index 46ee61b..e2b3ba5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/Serial.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/Serial.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SerialSPI.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SerialSPI.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SerialSPI.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SerialSPI.h index 9a42ba5..fd6ab5f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/SerialSPI.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/SerialSPI.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/TWI.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/TWI.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/TWI.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/TWI.h index 5290e66..4143474 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/TWI.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/TWI.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h index c623048..531fc72 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -96,7 +96,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI Prescaler Configuration Masks */ - //@{ + /**@{*/ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 2. */ #define SPI_SPEED_FCPU_DIV_2 SPI_USE_DOUBLESPEED @@ -117,43 +117,43 @@ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 128. */ #define SPI_SPEED_FCPU_DIV_128 (3 << SPI_PRESCALER_gp) - //@} + /**@}*/ /** \name SPI SCK Polarity Configuration Masks */ - //@{ + /**@{*/ /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the rising edge. */ #define SPI_SCK_LEAD_RISING 0 /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the falling edge. */ #define SPI_SCK_LEAD_FALLING SPI_MODE1_bm - //@} + /**@}*/ /** \name SPI Sample Edge Configuration Masks */ - //@{ + /**@{*/ /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should sampled on the leading edge. */ #define SPI_SAMPLE_LEADING 0 /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should be sampled on the trailing edge. */ #define SPI_SAMPLE_TRAILING SPI_MODE0_bm - //@} + /**@}*/ /** \name SPI Data Ordering Configuration Masks */ - //@{ + /**@{*/ /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out MSB first. */ #define SPI_ORDER_MSB_FIRST 0 /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out LSB first. */ #define SPI_ORDER_LSB_FIRST SPI_DORD_bm - //@} + /**@}*/ /** \name SPI Mode Configuration Masks */ - //@{ + /**@{*/ /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */ #define SPI_MODE_SLAVE 0 /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */ #define SPI_MODE_MASTER SPI_MASTER_bm - //@} + /**@}*/ /* Inline Functions: */ /** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h index a981ce6..a2445dd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -97,28 +97,28 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI SCK Polarity Configuration Masks */ - //@{ + /**@{*/ /** SPI clock polarity mask for \ref SerialSPI_Init(). Indicates that the SCK should lead on the rising edge. */ #define USART_SPI_SCK_LEAD_RISING 0 - //@} + /**@}*/ /** \name SPI Sample Edge Configuration Masks */ - //@{ + /**@{*/ /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should sampled on the leading edge. */ #define USART_SPI_SAMPLE_LEADING 0 /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should be sampled on the trailing edge. */ #define USART_SPI_SAMPLE_TRAILING (1 << 1) - //@} + /**@}*/ /** \name SPI Data Ordering Configuration Masks */ - //@{ + /**@{*/ /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out MSB first. */ #define USART_SPI_ORDER_MSB_FIRST 0 /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out LSB first. */ #define USART_SPI_ORDER_LSB_FIRST (1 << 2) - //@} + /**@}*/ /* Inline Functions: */ /** Initialize the USART module in Master SPI mode. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c similarity index 81% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c index 4e29357..9a9e10d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -91,23 +91,26 @@ void Serial_SendData(USART_t* const USART, const void* Buffer, uint16_t Length) { + uint8_t* CurrByte = (uint8_t*)Buffer; + while (Length--) - Serial_SendByte(USART, *((uint8_t*)Buffer++)); + Serial_SendByte(USART, *(CurrByte++)); } -void Serial_CreateStream(FILE* Stream) +void Serial_CreateStream(USART_t* USART, FILE* Stream) { if (!(Stream)) { Stream = &USARTSerialStream; stdin = Stream; stdout = Stream; - } + } - *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW); + *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW); + fdev_set_udata(Stream, USART); } -void Serial_CreateBlockingStream(FILE* Stream) +void Serial_CreateBlockingStream(USART_t* USART, FILE* Stream) { if (!(Stream)) { @@ -116,7 +119,8 @@ void Serial_CreateBlockingStream(FILE* Stream) stdout = Stream; } - *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar_Blocking, _FDEV_SETUP_RW); + *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar_Blocking, _FDEV_SETUP_RW); + fdev_set_udata(Stream, USART); } #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h similarity index 94% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h index ad34c85..a879062 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -151,29 +151,32 @@ * be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own * line buffering. * + * \param[in,out] USART Pointer to the base of the USART peripheral within the device. * \param[in,out] Stream Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout * and \c stdin will be configured to use the USART. * * \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used. */ - void Serial_CreateStream(FILE* Stream); + void Serial_CreateStream(USART_t* USART, FILE* Stream); - /** Identical to \ref Serial_CreateStream(), except that reads are blocking until the calling stream function terminates + /** Identical to \ref Serial_CreateStream(), except that reads are blocking until the calling stream function terminates * the transfer. * + * \param[in,out] USART Pointer to the base of the USART peripheral within the device. * \param[in,out] Stream Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout * and \c stdin will be configured to use the USART. * * \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used. */ - void Serial_CreateBlockingStream(FILE* Stream); + void Serial_CreateBlockingStream(USART_t* USART, FILE* Stream); /* Inline Functions: */ /** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to * standard 8-bit, no parity, 1 stop bit settings suitable for most applications. * * \param[in,out] USART Pointer to the base of the USART peripheral within the device. - * \param[in] BaudRate Serial baud rate, in bits per second. + * \param[in] BaudRate Serial baud rate, in bits per second. This should be the target baud rate regardless of + * the \c DoubleSpeed parameter's value. * \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate. */ static inline void Serial_Init(USART_t* const USART, diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c index 6f8ab1d..38e9839 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -110,7 +110,7 @@ uint8_t TWI_ReadPacket(TWI_t* const TWI, const uint8_t* InternalAddress, uint8_t InternalAddressLen, uint8_t* Buffer, - uint8_t Length) + uint16_t Length) { uint8_t ErrorCode; @@ -151,7 +151,7 @@ uint8_t TWI_WritePacket(TWI_t* const TWI, const uint8_t* InternalAddress, uint8_t InternalAddressLen, const uint8_t* Buffer, - uint8_t Length) + uint16_t Length) { uint8_t ErrorCode; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h index 72437e5..c97ab52 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -268,7 +268,7 @@ const uint8_t* InternalAddress, uint8_t InternalAddressLen, uint8_t* Buffer, - uint8_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4); + uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4); /** High level function to perform a complete packet transfer over the TWI bus from the specified * device. @@ -289,7 +289,7 @@ const uint8_t* InternalAddress, uint8_t InternalAddressLen, const uint8_t* Buffer, - uint8_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4); + uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4); /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h index 24978ca..58afdc4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AudioClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AudioClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AudioClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AudioClass.h index 0e3ca8d..da8ac69 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/AudioClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/AudioClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CCIDClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CCIDClass.h new file mode 100644 index 0000000..0d90e56 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CCIDClass.h @@ -0,0 +1,82 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Master include file for the library USB CCID Class driver. + * + * Master include file for the library USB CCID Class driver, for both host and device modes, where available. + * + * This file should be included in all user projects making use of this optional class driver, instead of + * including any headers in the USB/ClassDriver/Device, USB/ClassDriver/Host or USB/ClassDriver/Common subdirectories. + */ + +/** \ingroup Group_USBClassDrivers + * \defgroup Group_USBClassCCID CCID Class Driver + * \brief USB class driver for the USB-IF CCID class standard. + * + * \section Sec_USBClassCCID_Dependencies Module Source Dependencies + * The following files must be built with any user project that uses this module: + * - LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) + * + * \section Sec_USBClassCCID_ModDescription Module Description + * CCID Class Driver module. This module contains an internal implementation of the USB CCID Class, for Device USB + * mode. User applications can use this class driver instead of implementing the CCID class manually via the low-level + * LUFA APIs. + * + * This module is designed to simplify the user code by exposing only the required interface needed to interface with + * Devices using the USB CCID Class. + * + * \warning + * LUFA is not a secure USB stack, and has not undergone, not is it expected to pass, any form of security audit. The + * CCID class here is presented as-is and is intended for research purposes only, and *should not* be used in a security + * critical application under any circumstances. + * + * @{ + */ + +#ifndef _CCID_CLASS_H_ +#define _CCID_CLASS_H_ + + /* Macros: */ + #define __INCLUDE_FROM_USB_DRIVER + #define __INCLUDE_FROM_CCID_DRIVER + + /* Includes: */ + #include "../Core/USBMode.h" + + #if defined(USB_CAN_BE_DEVICE) + #include "Device/CCIDClassDevice.h" + #endif + +#endif + +/** @} */ + diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/CDCClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CDCClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/CDCClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CDCClass.h index 3bad74b..9781dc3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/CDCClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/CDCClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h index c3153da..66dd8ca 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h index 2db5eee..e9dd5d2 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -65,7 +65,7 @@ /* Macros: */ /** \name Audio Channel Masks */ - //@{ + /**@{*/ /** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */ #define AUDIO_CHANNEL_LEFT_FRONT (1 << 0) @@ -101,10 +101,10 @@ /** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */ #define AUDIO_CHANNEL_TOP (1 << 11) - //@} + /**@}*/ /** \name Audio Feature Masks */ - //@{ + /**@{*/ /** Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details. */ #define AUDIO_FEATURE_MUTE (1 << 0) @@ -134,10 +134,10 @@ /** Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details. */ #define AUDIO_FEATURE_BASS_LOUDNESS (1 << 9) - //@} + /**@}*/ /** \name Audio Terminal Types */ - //@{ + /**@{*/ /** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */ #define AUDIO_TERMINAL_UNDEFINED 0x0100 @@ -191,7 +191,7 @@ /** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */ #define AUDIO_TERMINAL_OUT_LOWFREQ 0x0307 - //@} + /**@}*/ /** Convenience macro to fill a 24-bit \ref USB_Audio_SampleFreq_t structure with the given sample rate as a 24-bit number. * @@ -245,6 +245,13 @@ */ }; + /** Enum for the Audio class specific descriptor types. */ + enum AUDIO_DescriptorTypes_t + { + AUDIO_DTYPE_CSInterface = 0x24, /**< Audio class specific Interface functional descriptor. */ + AUDIO_DTYPE_CSEndpoint = 0x25, /**< Audio class specific Endpoint functional descriptor. */ + }; + /** Audio class specific interface description subtypes, for the Audio Control interface. */ enum Audio_CSInterface_AC_SubTypes_t { diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CCIDClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CCIDClassCommon.h new file mode 100644 index 0000000..aad741b --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CCIDClassCommon.h @@ -0,0 +1,293 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Common definitions and declarations for the library USB CCID Class driver. + * + * Common definitions and declarations for the library USB CCID Class driver. + * + * \note This file should not be included directly. It is automatically included as needed by the USB module driver + * dispatch header located in LUFA/Drivers/USB.h. + */ + +/** \ingroup Group_USBClassCCID + * \defgroup Group_USBClassCCIDCommon Common Class Definitions + * + * \section Sec_USBClassCCIDCommon_ModDescription Module Description + * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB + * CCID Class. + * + * @{ + */ + +#ifndef _CCID_CLASS_COMMON_H_ +#define _CCID_CLASS_COMMON_H_ + + /* Includes: */ + #include "../../Core/StdDescriptors.h" + + /* Enable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + extern "C" { + #endif + + /* Preprocessor Checks: */ + #if !defined(__INCLUDE_FROM_CCID_DRIVER) + #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. + #endif + + /* Macros: */ + #define CCID_CURRENT_SPEC_RELEASE_NUMBER 0x0110 + #define CCID_VOLTAGESUPPORT_5V 0 + #define CCID_VOLTAGESUPPORT_3V (1 << 0) + #define CCID_VOLTAGESUPPORT_1V8 (1 << 1) + + #define CCID_PROTOCOLS_T0 (1 << 0) + #define CCID_PROTOCOLS_T1 (1 << 1) + + #define CCID_PROTOCOLNUM_T0 0 + #define CCID_PROTOCOLNUM_T1 (1 << 0) + + #define CCID_ICCSTATUS_PRESENTANDACTIVE 0 + #define CCID_ICCSTATUS_PRESENTANDINACTIVE (1 << 0) + #define CCID_ICCSTATUS_NOICCPRESENT (1 << 1) + + #define CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR 0 + #define CCID_COMMANDSTATUS_ERROR 1 + #define CCID_COMMANDSTATUS_FAILED (1 << 6) + #define CCID_COMMANDSTATUS_TIMEEXTENSIONREQUESTED (2 << 6) + #define CCID_COMMANDSTATUS_RFU (3 << 6) + + #define CCID_ERROR_RFU_START 0x80 + #define CCID_ERROR_NO_ERROR 0x80 + #define CCID_ERROR_NOT_SUPPORTED 0 + #define CCID_ERROR_CMD_ABORTED 0xFF + #define CCID_ERROR_CMD_NOT_ABORTED 0xFF + + #define CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED 0x7 + + #define CCID_ERROR_SLOT_NOT_FOUND 5 + + #define CCID_DESCRIPTOR_CLOCK_KHZ(khz) (khz) + #define CCID_DESCRIPTOR_CLOCK_MHZ(mhz) ((mhz) * 1000) + + + /* Enums: */ + /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the CCID + * device class. + */ + enum CCID_Descriptor_ClassSubclassProtocol_t + { + CCID_CSCP_CCIDClass = 0x0b, /**< Descriptor Class value indicating that the device or interface + * belongs to the CCID class. + */ + CCID_CSCP_NoSpecificSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface + * belongs to no specific subclass of the CCID class. + */ + CCID_CSCP_NoSpecificProtocol = 0x00, /**< Descriptor Protocol value indicating that the device or interface + * belongs to no specific protocol of the CCID class. + */ + }; + + /** Enum for possible bulk messages between PC and Reader */ + enum CCID_BulkOutMessages_t + { + CCID_PC_to_RDR_IccPowerOn = 0x62, + CCID_PC_to_RDR_IccPowerOff = 0x63, + CCID_PC_to_RDR_GetSlotStatus = 0x65, + CCID_PC_to_RDR_XfrBlock = 0x6f, + CCID_PC_to_RDR_GetParameters = 0x6c, + CCID_PC_to_RDR_ResetParameters = 0x6d, + CCID_PC_to_RDR_SetParameters = 0x61, + CCID_PC_to_RDR_Escape = 0x6b, + CCID_PC_to_RDR_IccClock = 0x6e, + CCID_PC_to_RDR_T0APDU = 0x6a, + CCID_PC_to_RDR_Secure = 0x69, + CCID_PC_to_RDR_Mechanical = 0x71, + CCID_PC_to_RDR_Abort = 0x72, + CCID_PC_to_RDR_SetDataRateAndClockFrequency = 0x73, + + CCID_RDR_to_PC_DataBlock = 0x80, + CCID_RDR_to_PC_SlotStatus = 0x81, + CCID_RDR_to_PC_Parameters = 0x82, + CCID_RDR_to_PC_Escape = 0x83, + CCID_RDR_to_PC_DataRateAndClockFrequency = 0x84, + }; + + /** Enum for the CCID class specific control requests that can be issued by the USB bus host. */ + enum CCID_ClassRequests_t + { + CCID_ABORT = 0x1, + CCID_GET_CLOCK_FREQUENCIES = 0x2, + CCID_GET_DATA_RATES = 0x3, + }; + + /** Enum for the CCID class specific descriptor types. */ + enum CCID_DescriptorTypes_t + { + CCID_DTYPE_Functional = 0x21, /**< CCID class specific Interface functional descriptor. */ + }; + + enum CCID_Features_Auto_t + { + CCID_Features_Auto_None = 0x0, + CCID_Features_Auto_ParameterConfiguration = 0x2, + CCID_Features_Auto_ICCActivation = 0x4, + CCID_Features_Auto_VoltageSelection = 0x8, + + CCID_Features_Auto_ICCClockFrequencyChange = 0x10, + CCID_Features_Auto_ICCBaudRateChange = 0x20, + CCID_Features_Auto_ParameterNegotiation = 0x40, + CCID_Features_Auto_PPS = 0x80, + }; + + enum CCID_Features_ExchangeLevel_t + { + CCID_Features_ExchangeLevel_TPDU = 0x00010000, + CCID_Features_ExchangeLevel_ShortAPDU = 0x00020000, + CCID_Features_ExchangeLevel_ShortExtendedAPDU = 0x00040000 + }; + + /* Type Defines: */ + typedef struct + { + USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ + + uint16_t CCID; + uint8_t MaxSlotIndex; + uint8_t VoltageSupport; + uint32_t Protocols; + uint32_t DefaultClock; + uint32_t MaximumClock; + uint8_t NumClockSupported; + uint32_t DataRate; + uint32_t MaxDataRate; + uint8_t NumDataRatesSupported; + uint32_t MaxIFSD; + uint32_t SynchProtocols; + uint32_t Mechanical; + uint32_t Features; + uint32_t MaxCCIDMessageLength; + uint8_t ClassGetResponse; + uint8_t ClassEnvelope; + uint16_t LcdLayout; + uint8_t PINSupport; + uint8_t MaxCCIDBusySlots; + } ATTR_PACKED USB_CCID_Descriptor_t; + + typedef struct + { + uint8_t FindexDindex; + uint8_t TCCKST0; + uint8_t GuardTimeT0; + uint8_t WaitingIntegerT0; + uint8_t ClockStop; + } ATTR_PACKED USB_CCID_ProtocolData_T0_t; + + typedef struct + { + uint8_t FindexDindex; + uint8_t TCCKST1; + uint8_t GuardTimeT1; + uint8_t WaitingIntegerT1; + uint8_t ClockStop; + uint8_t FSC; + uint8_t NadValue; + } ATTR_PACKED USB_CCID_ProtocolData_T1_t; + + + /** Enum for a common bulk message header. */ + typedef struct + { + uint8_t MessageType; + uint32_t Length; + uint8_t Slot; + uint8_t Seq; + } ATTR_PACKED USB_CCID_BulkMessage_Header_t; + + typedef struct + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + uint8_t Status; + uint8_t Error; + uint8_t ChainParam; + uint8_t Data[0]; + } ATTR_PACKED USB_CCID_RDR_to_PC_DataBlock_t; + + typedef struct + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + uint8_t Status; + uint8_t Error; + uint8_t ClockStatus; + } ATTR_PACKED USB_CCID_RDR_to_PC_SlotStatus_t; + + typedef struct + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + uint8_t Status; + uint8_t Error; + uint8_t ProtocolNum; + union + { + USB_CCID_ProtocolData_T0_t T0; + USB_CCID_ProtocolData_T1_t T1; + } ProtocolData; + } ATTR_PACKED USB_CCID_RDR_to_PC_Parameters_t; + + typedef struct + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + uint8_t Status; + uint8_t Error; + uint8_t RFU; + uint8_t Data[0]; + } ATTR_PACKED USB_CCID_RDR_to_PC_Escape_t; + + typedef struct + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + uint8_t Status; + uint8_t Error; + uint8_t RFU; + uint32_t ClockFrequency; + uint32_t DataRate; + } ATTR_PACKED USB_CCID_RDR_to_PC_DataRateAndClockFrequency_t; + + /* Disable C linkage for C++ Compilers: */ + #if defined(__cplusplus) + } + #endif + +#endif + +/** @} */ + diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h similarity index 91% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h index 94e6c68..d069147 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -65,7 +65,7 @@ /* Macros: */ /** \name Virtual Control Line Masks */ - //@{ + /**@{*/ /** Mask for the DTR handshake line for use with the \ref CDC_REQ_SetControlLineState class-specific request * from the host, to indicate that the DTR line state should be high. */ @@ -110,22 +110,7 @@ * to indicate that a data overrun error has occurred on the virtual serial port. */ #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6) - //@} - - /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a - * uniform structure but variable sized data payloads, thus cannot be represented accurately by - * a single \c typedef \c struct. A macro is used instead so that functional descriptors can be created - * easily by specifying the size of the payload. This allows \c sizeof() to work correctly. - * - * \param[in] DataSize Size in bytes of the CDC functional descriptor's data payload. - */ - #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \ - struct \ - { \ - USB_Descriptor_Header_t Header; \ - uint8_t SubType; \ - uint8_t Data[DataSize]; \ - } + /**@}*/ /* Enums: */ /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the CDC @@ -183,26 +168,33 @@ */ }; + /** Enum for the CDC class specific descriptor types. */ + enum CDC_DescriptorTypes_t + { + CDC_DTYPE_CSInterface = 0x24, /**< CDC class specific Interface functional descriptor. */ + CDC_DTYPE_CSEndpoint = 0x25, /**< CDC class specific Endpoint functional descriptor. */ + }; + /** Enum for the CDC class specific interface descriptor subtypes. */ enum CDC_DescriptorSubtypes_t { - CDC_DSUBTYPE_CSInterface_Header = 0x00, /**< CDC class-specific Header functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CallManagement = 0x01, /**< CDC class-specific Call Management functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ACM = 0x02, /**< CDC class-specific Abstract Control Model functional descriptor. */ - CDC_DSUBTYPE_CSInterface_DirectLine = 0x03, /**< CDC class-specific Direct Line functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneRinger = 0x04, /**< CDC class-specific Telephone Ringer functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneCall = 0x05, /**< CDC class-specific Telephone Call functional descriptor. */ - CDC_DSUBTYPE_CSInterface_Union = 0x06, /**< CDC class-specific Union functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CountrySelection = 0x07, /**< CDC class-specific Country Selection functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneOpModes = 0x08, /**< CDC class-specific Telephone Operation Modes functional descriptor. */ - CDC_DSUBTYPE_CSInterface_USBTerminal = 0x09, /**< CDC class-specific USB Terminal functional descriptor. */ - CDC_DSUBTYPE_CSInterface_NetworkChannel = 0x0A, /**< CDC class-specific Network Channel functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ProtocolUnit = 0x0B, /**< CDC class-specific Protocol Unit functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ExtensionUnit = 0x0C, /**< CDC class-specific Extension Unit functional descriptor. */ - CDC_DSUBTYPE_CSInterface_MultiChannel = 0x0D, /**< CDC class-specific Multi-Channel Management functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CAPI = 0x0E, /**< CDC class-specific Common ISDN API functional descriptor. */ - CDC_DSUBTYPE_CSInterface_Ethernet = 0x0F, /**< CDC class-specific Ethernet functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ATM = 0x10, /**< CDC class-specific Asynchronous Transfer Mode functional descriptor. */ + CDC_DSUBTYPE_CSInterface_Header = 0x00, /**< CDC class specific Header functional descriptor. */ + CDC_DSUBTYPE_CSInterface_CallManagement = 0x01, /**< CDC class specific Call Management functional descriptor. */ + CDC_DSUBTYPE_CSInterface_ACM = 0x02, /**< CDC class specific Abstract Control Model functional descriptor. */ + CDC_DSUBTYPE_CSInterface_DirectLine = 0x03, /**< CDC class specific Direct Line functional descriptor. */ + CDC_DSUBTYPE_CSInterface_TelephoneRinger = 0x04, /**< CDC class specific Telephone Ringer functional descriptor. */ + CDC_DSUBTYPE_CSInterface_TelephoneCall = 0x05, /**< CDC class specific Telephone Call functional descriptor. */ + CDC_DSUBTYPE_CSInterface_Union = 0x06, /**< CDC class specific Union functional descriptor. */ + CDC_DSUBTYPE_CSInterface_CountrySelection = 0x07, /**< CDC class specific Country Selection functional descriptor. */ + CDC_DSUBTYPE_CSInterface_TelephoneOpModes = 0x08, /**< CDC class specific Telephone Operation Modes functional descriptor. */ + CDC_DSUBTYPE_CSInterface_USBTerminal = 0x09, /**< CDC class specific USB Terminal functional descriptor. */ + CDC_DSUBTYPE_CSInterface_NetworkChannel = 0x0A, /**< CDC class specific Network Channel functional descriptor. */ + CDC_DSUBTYPE_CSInterface_ProtocolUnit = 0x0B, /**< CDC class specific Protocol Unit functional descriptor. */ + CDC_DSUBTYPE_CSInterface_ExtensionUnit = 0x0C, /**< CDC class specific Extension Unit functional descriptor. */ + CDC_DSUBTYPE_CSInterface_MultiChannel = 0x0D, /**< CDC class specific Multi-Channel Management functional descriptor. */ + CDC_DSUBTYPE_CSInterface_CAPI = 0x0E, /**< CDC class specific Common ISDN API functional descriptor. */ + CDC_DSUBTYPE_CSInterface_Ethernet = 0x0F, /**< CDC class specific Ethernet functional descriptor. */ + CDC_DSUBTYPE_CSInterface_ATM = 0x10, /**< CDC class specific Asynchronous Transfer Mode functional descriptor. */ }; /** Enum for the possible line encoding formats of a virtual serial port. */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h index 9d701fb..da6614b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -66,7 +66,7 @@ /* Macros: */ /** \name Keyboard Standard Report Modifier Masks */ - //@{ + /**@{*/ /** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */ #define HID_KEYBOARD_MODIFIER_LEFTCTRL (1 << 0) @@ -90,10 +90,10 @@ /** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */ #define HID_KEYBOARD_MODIFIER_RIGHTGUI (1 << 7) - //@} + /**@}*/ /** \name Keyboard Standard Report LED Masks */ - //@{ + /**@{*/ /** Constant for a keyboard output report LED byte, indicating that the host's NUM LOCK mode is currently set. */ #define HID_KEYBOARD_LED_NUMLOCK (1 << 0) @@ -108,10 +108,11 @@ /** Constant for a keyboard output report LED byte, indicating that the host's KANA mode is currently set. */ #define HID_KEYBOARD_LED_KANA (1 << 4) - //@} + /**@}*/ /** \name Keyboard Standard Report Key Scan-codes */ - //@{ + /**@{*/ + #define HID_KEYBOARD_SC_RESERVED 0x00 #define HID_KEYBOARD_SC_ERROR_ROLLOVER 0x01 #define HID_KEYBOARD_SC_POST_FAIL 0x02 #define HID_KEYBOARD_SC_ERROR_UNDEFINED 0x03 @@ -347,10 +348,10 @@ #define HID_KEYBOARD_SC_MEDIA_LOCK 0xF9 #define HID_KEYBOARD_SC_MEDIA_RELOAD 0xFA #define HID_KEYBOARD_SC_MEDIA_CALCULATOR 0xFB - //@} + /**@}*/ /** \name Common HID Device Report Descriptors */ - //@{ + /**@{*/ /** \hideinitializer * A list of HID report item array elements that describe a typical HID USB Joystick. The resulting report * descriptor is structured according to the following layout: @@ -445,7 +446,7 @@ HID_RI_REPORT_SIZE(8, 0x03), \ HID_RI_OUTPUT(8, HID_IOF_CONSTANT), \ HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0xFF), \ + HID_RI_LOGICAL_MAXIMUM(16, 0xFF), \ HID_RI_USAGE_PAGE(8, 0x07), \ HID_RI_USAGE_MINIMUM(8, 0x00), \ HID_RI_USAGE_MAXIMUM(8, 0xFF), \ @@ -536,7 +537,7 @@ HID_RI_REPORT_COUNT(8, NumBytes), \ HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), \ HID_RI_END_COLLECTION(0) - //@} + /**@}*/ /* Type Defines: */ /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the HID @@ -679,4 +680,3 @@ #endif /** @} */ - diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.c index d93508f..66646ba 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -92,7 +92,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, memcpy((CurrStateTable + 1), CurrStateTable, - sizeof(HID_ReportItem_t)); + sizeof(HID_StateTable_t)); CurrStateTable++; break; @@ -105,9 +105,6 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, break; case HID_RI_USAGE_PAGE(0): - if ((HIDReportItem & HID_RI_DATA_SIZE_MASK) == HID_RI_DATA_BITS_32) - CurrStateTable->Attributes.Usage.Page = (ReportItemData >> 16); - CurrStateTable->Attributes.Usage.Page = ReportItemData; break; @@ -178,6 +175,9 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, if (UsageListSize == HID_USAGE_STACK_DEPTH) return HID_PARSE_UsageListOverflow; + if ((HIDReportItem & HID_RI_DATA_SIZE_MASK) == HID_RI_DATA_BITS_32) + CurrStateTable->Attributes.Usage.Page = (ReportItemData >> 16); + UsageList[UsageListSize++] = ReportItemData; break; @@ -364,8 +364,8 @@ void USB_SetHIDReportItemInfo(uint8_t* ReportData, while (DataBitsRem--) { - if (ReportItem->Value & (1 << (CurrentBit % 8))) - ReportData[CurrentBit / 8] |= BitMask; + if (ReportItem->Value & BitMask) + ReportData[CurrentBit / 8] |= (1 << (CurrentBit % 8)); CurrentBit++; BitMask <<= 1; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.h index 1f84ef4..d6d403d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDParser.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDParser.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDReportData.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDReportData.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDReportData.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDReportData.h index df4302c..0693d28 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/HIDReportData.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/HIDReportData.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -75,7 +75,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name HID Input, Output and Feature Report Descriptor Item Flags */ - //@{ + /**@{*/ #define HID_IOF_CONSTANT (1 << 0) #define HID_IOF_DATA (0 << 0) #define HID_IOF_VARIABLE (1 << 1) @@ -94,10 +94,10 @@ #define HID_IOF_NON_VOLATILE (0 << 7) #define HID_IOF_BUFFERED_BYTES (1 << 8) #define HID_IOF_BITFIELD (0 << 8) - //@} + /**@}*/ /** \name HID Report Descriptor Item Macros */ - //@{ + /**@{*/ #define HID_RI_INPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x80, DataBits, __VA_ARGS__) #define HID_RI_OUTPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x90, DataBits, __VA_ARGS__) #define HID_RI_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xA0, DataBits, __VA_ARGS__) @@ -118,7 +118,7 @@ #define HID_RI_USAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__) #define HID_RI_USAGE_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__) #define HID_RI_USAGE_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__) - //@} + /**@}*/ /** @} */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h index b6f6034..18c1a2a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -71,7 +71,7 @@ /** \name MIDI Command Values * See http://www.midi.org/techspecs/midimessages.php for more information. */ - //@{ + /**@{*/ /** MIDI command for System Exclusive (SysEx) single event that has one byte of data total. */ #define MIDI_COMMAND_SYSEX_1BYTE MIDI_COMMAND_SYSEX_END_1BYTE @@ -113,7 +113,7 @@ /** MIDI command for a pitch change event. */ #define MIDI_COMMAND_PITCH_WHEEL_CHANGE 0xE0 - //@} + /**@}*/ /** Standard key press velocity value used for all note events. */ #define MIDI_STANDARD_VELOCITY 64 diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h index 8a12f31..e74ba67 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -77,7 +77,7 @@ #define MS_COMMAND_DIR_DATA_IN (1 << 7) /** \name SCSI Commands*/ - //@{ + /**@{*/ /** SCSI Command Code for an INQUIRY command. */ #define SCSI_CMD_INQUIRY 0x12 @@ -119,10 +119,10 @@ /** SCSI Command Code for a MODE SENSE (10) command. */ #define SCSI_CMD_MODE_SENSE_10 0x5A - //@} + /**@}*/ /** \name SCSI Sense Key Values */ - //@{ + /**@{*/ /** SCSI Sense Code to indicate no error has occurred. */ #define SCSI_SENSE_KEY_GOOD 0x00 @@ -166,10 +166,10 @@ /** SCSI Sense Code to indicate that the source data did not match the data read from the medium. */ #define SCSI_SENSE_KEY_MISCOMPARE 0x0E - //@} + /**@}*/ /** \name SCSI Additional Sense Codes */ - //@{ + /**@{*/ /** SCSI Additional Sense Code to indicate no additional sense information is available. */ #define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION 0x00 @@ -198,10 +198,10 @@ /** SCSI Additional Sense Code to indicate that no removable medium is inserted into the device. */ #define SCSI_ASENSE_MEDIUM_NOT_PRESENT 0x3A - //@} + /**@}*/ /** \name SCSI Additional Sense Key Code Qualifiers */ - //@{ + /**@{*/ /** SCSI Additional Sense Qualifier Code to indicate no additional sense qualifier information is available. */ #define SCSI_ASENSEQ_NO_QUALIFIER 0x00 @@ -215,7 +215,7 @@ /** SCSI Additional Sense Qualifier Code to indicate that an operation is currently in progress. */ #define SCSI_ASENSEQ_OPERATION_IN_PROGRESS 0x07 - //@} + /**@}*/ /* Enums: */ /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Mass diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h index 1edd1dd..fb62c8a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -65,7 +65,7 @@ /* Macros: */ /** \name Virtual Printer Status Line Masks */ - //@{ + /**@{*/ /** Port status mask for a printer device, indicating that an error has *not* occurred. */ #define PRNT_PORTSTATUS_NOTERROR (1 << 3) @@ -74,7 +74,7 @@ /** Port status mask for a printer device, indicating that the device is currently out of paper. */ #define PRNT_PORTSTATUS_PAPEREMPTY (1 << 5) - //@} + /**@}*/ /* Enums: */ /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Printer diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h index 640745e..c376922 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -78,7 +78,7 @@ #define REMOTE_NDIS_VERSION_MINOR 0x00 /** \name RNDIS Message Values */ - //@{ + /**@{*/ #define REMOTE_NDIS_PACKET_MSG 0x00000001UL #define REMOTE_NDIS_INITIALIZE_MSG 0x00000002UL #define REMOTE_NDIS_HALT_MSG 0x00000003UL @@ -87,46 +87,46 @@ #define REMOTE_NDIS_RESET_MSG 0x00000006UL #define REMOTE_NDIS_INDICATE_STATUS_MSG 0x00000007UL #define REMOTE_NDIS_KEEPALIVE_MSG 0x00000008UL - //@} + /**@}*/ /** \name RNDIS Response Values */ - //@{ + /**@{*/ #define REMOTE_NDIS_INITIALIZE_CMPLT 0x80000002UL #define REMOTE_NDIS_QUERY_CMPLT 0x80000004UL #define REMOTE_NDIS_SET_CMPLT 0x80000005UL #define REMOTE_NDIS_RESET_CMPLT 0x80000006UL #define REMOTE_NDIS_KEEPALIVE_CMPLT 0x80000008UL - //@} + /**@}*/ /** \name RNDIS Status Values */ - //@{ + /**@{*/ #define REMOTE_NDIS_STATUS_SUCCESS 0x00000000UL #define REMOTE_NDIS_STATUS_FAILURE 0xC0000001UL #define REMOTE_NDIS_STATUS_INVALID_DATA 0xC0010015UL #define REMOTE_NDIS_STATUS_NOT_SUPPORTED 0xC00000BBUL #define REMOTE_NDIS_STATUS_MEDIA_CONNECT 0x4001000BUL #define REMOTE_NDIS_STATUS_MEDIA_DISCONNECT 0x4001000CUL - //@} + /**@}*/ /** \name RNDIS Media States */ - //@{ + /**@{*/ #define REMOTE_NDIS_MEDIA_STATE_CONNECTED 0x00000000UL #define REMOTE_NDIS_MEDIA_STATE_DISCONNECTED 0x00000001UL - //@} + /**@}*/ /** \name RNDIS Media Types */ - //@{ + /**@{*/ #define REMOTE_NDIS_MEDIUM_802_3 0x00000000UL - //@} + /**@}*/ /** \name RNDIS Connection Types */ - //@{ + /**@{*/ #define REMOTE_NDIS_DF_CONNECTIONLESS 0x00000001UL #define REMOTE_NDIS_DF_CONNECTION_ORIENTED 0x00000002UL - //@} + /**@}*/ /** \name RNDIS Packet Types */ - //@{ + /**@{*/ #define REMOTE_NDIS_PACKET_DIRECTED 0x00000001UL #define REMOTE_NDIS_PACKET_MULTICAST 0x00000002UL #define REMOTE_NDIS_PACKET_ALL_MULTICAST 0x00000004UL @@ -139,10 +139,10 @@ #define REMOTE_NDIS_PACKET_ALL_FUNCTIONAL 0x00002000UL #define REMOTE_NDIS_PACKET_FUNCTIONAL 0x00004000UL #define REMOTE_NDIS_PACKET_MAC_FRAME 0x00008000UL - //@} + /**@}*/ /** \name RNDIS OID Values */ - //@{ + /**@{*/ #define OID_GEN_SUPPORTED_LIST 0x00010101UL #define OID_GEN_HARDWARE_STATUS 0x00010102UL #define OID_GEN_MEDIA_SUPPORTED 0x00010103UL @@ -170,7 +170,7 @@ #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101UL #define OID_802_3_XMIT_ONE_COLLISION 0x01020102UL #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103UL - //@} + /**@}*/ /** Maximum size in bytes of an Ethernet frame according to the Ethernet standard. */ #define ETHERNET_FRAME_SIZE_MAX 1500 diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h index 09a9eab..ad8ee3a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c index f862ba7..b86907f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -188,7 +188,7 @@ bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioIn return true; } -void Audio_Device_Event_Stub(void) +void Audio_Device_Event_Stub(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) { } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h index 6cdf4db..743133e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -377,7 +377,7 @@ #if !defined(__DOXYGEN__) /* Function Prototypes: */ #if defined(__INCLUDE_FROM_AUDIO_DEVICE_C) - void Audio_Device_Event_Stub(void) ATTR_CONST; + void Audio_Device_Event_Stub(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo); void EVENT_Audio_Device_StreamStartStop(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(Audio_Device_Event_Stub); diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c new file mode 100644 index 0000000..d0305d6 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c @@ -0,0 +1,392 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#define __INCLUDE_FROM_USB_DRIVER +#include "../../Core/USBMode.h" + +#if defined(USB_CAN_BE_DEVICE) + +#define __INCLUDE_FROM_CCID_DRIVER +#define __INCLUDE_FROM_CCID_DEVICE_C +#include "CCIDClassDevice.h" + + +bool CCID_CheckStatusNoError(uint8_t Status) +{ + return (Status & 0xC0) == 0x0; +} + +void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) +{ + if (!(Endpoint_IsSETUPReceived())) + return; + + if (USB_ControlRequest.wIndex != CCIDInterfaceInfo->Config.InterfaceNumber) + return; + + switch (USB_ControlRequest.bRequest) + { + case CCID_ABORT: + { + // Initiates the abort process. + // The host should send 2 messages in the following order: + // - CCID_ABORT control request + // - CCID_PC_t_PCo_RDR_Abort command + // + // If the device is still processing a message, it should fail it until receiving a CCIRPC_to_RDR_Abort + // command. + // + // When the device receives the CCIRPC_to_RDR_Abort message, it replies with RDR_to_PC_SlotStatus + // and the abort process ends. + + // The wValue field contains the slot number (bSlot) in the low byte and the sequence number (bSeq) in + // the high byte + uint8_t Slot = USB_ControlRequest.wValue & 0xFF; + uint8_t Seq = USB_ControlRequest.wValue >> 8; + + if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE) && Slot == 0) + { + Endpoint_ClearSETUP(); + + CCIDInterfaceInfo->State.Aborted = true; + CCIDInterfaceInfo->State.AbortedSeq = Seq; + + Endpoint_ClearOUT(); + } + + break; + } + + case CCID_GET_CLOCK_FREQUENCIES: + { + if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) + { + + Endpoint_ClearSETUP(); + Endpoint_Write_8(0); // Not supported + Endpoint_ClearOUT(); + } + break; + } + + case CCID_GET_DATA_RATES: + { + if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) + { + + Endpoint_ClearSETUP(); + Endpoint_Write_8(0); // Not supported + Endpoint_ClearOUT(); + } + break; + } + } +} + +bool CCID_Device_ConfigureEndpoints(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) +{ + CCIDInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK; + CCIDInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK; + + if (!(Endpoint_ConfigureEndpointTable(&CCIDInterfaceInfo->Config.DataINEndpoint, 1))) + return false; + + if (!(Endpoint_ConfigureEndpointTable(&CCIDInterfaceInfo->Config.DataOUTEndpoint, 1))) + return false; + + return true; +} + +void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) +{ + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataOUTEndpoint.Address); + + uint8_t RequestBuffer[0x40 - sizeof(USB_CCID_BulkMessage_Header_t)]; + uint8_t ResponseBuffer[0x40]; + + CCIDInterfaceInfo->State.Aborted = false; + CCIDInterfaceInfo->State.AbortedSeq = -1; + + if (Endpoint_IsOUTReceived()) + { + USB_CCID_BulkMessage_Header_t CCIDHeader; + CCIDHeader.MessageType = Endpoint_Read_8(); + CCIDHeader.Length = Endpoint_Read_32_LE(); + CCIDHeader.Slot = Endpoint_Read_8(); + CCIDHeader.Seq = Endpoint_Read_8(); + + uint8_t Status; + uint8_t Error = CCID_ERROR_NO_ERROR; + + switch (CCIDHeader.MessageType) + { + case CCID_PC_to_RDR_IccPowerOn: + { + uint8_t AtrLength; + USB_CCID_RDR_to_PC_DataBlock_t* ResponseATR = (USB_CCID_RDR_to_PC_DataBlock_t*)&ResponseBuffer; + + ResponseATR->CCIDHeader.MessageType = CCID_RDR_to_PC_DataBlock; + ResponseATR->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseATR->CCIDHeader.Seq = CCIDHeader.Seq; + ResponseATR->ChainParam = 0; + + Status = CALLBACK_CCID_IccPowerOn(CCIDInterfaceInfo, ResponseATR->CCIDHeader.Slot, (uint8_t*)ResponseATR->Data, &AtrLength, &Error); + + if (CCID_CheckStatusNoError(Status) && !CCIDInterfaceInfo->State.Aborted) + { + ResponseATR->CCIDHeader.Length = AtrLength; + } + else if (CCIDInterfaceInfo->State.Aborted) + { + Status = CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_PRESENTANDACTIVE; + Error = CCID_ERROR_CMD_ABORTED; + AtrLength = 0; + } + else + { + AtrLength = 0; + } + + ResponseATR->Status = Status; + ResponseATR->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseATR, sizeof(USB_CCID_RDR_to_PC_DataBlock_t) + AtrLength, NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_IccPowerOff: + { + USB_CCID_RDR_to_PC_SlotStatus_t* ResponsePowerOff = (USB_CCID_RDR_to_PC_SlotStatus_t*)&ResponseBuffer; + ResponsePowerOff->CCIDHeader.MessageType = CCID_RDR_to_PC_SlotStatus; + ResponsePowerOff->CCIDHeader.Length = 0; + ResponsePowerOff->CCIDHeader.Slot = CCIDHeader.Slot; + ResponsePowerOff->CCIDHeader.Seq = CCIDHeader.Seq; + + ResponsePowerOff->ClockStatus = 0; + + Status = CALLBACK_CCID_IccPowerOff(CCIDInterfaceInfo, CCIDHeader.Slot, &Error); + + ResponsePowerOff->Status = Status; + ResponsePowerOff->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponsePowerOff, sizeof(USB_CCID_RDR_to_PC_SlotStatus_t), NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_GetSlotStatus: + { + USB_CCID_RDR_to_PC_SlotStatus_t* ResponseSlotStatus = (USB_CCID_RDR_to_PC_SlotStatus_t*)&ResponseBuffer; + ResponseSlotStatus->CCIDHeader.MessageType = CCID_RDR_to_PC_SlotStatus; + ResponseSlotStatus->CCIDHeader.Length = 0; + ResponseSlotStatus->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseSlotStatus->CCIDHeader.Seq = CCIDHeader.Seq; + + ResponseSlotStatus->ClockStatus = 0; + + Status = CALLBACK_CCID_GetSlotStatus(CCIDInterfaceInfo, CCIDHeader.Slot, &Error); + + ResponseSlotStatus->Status = Status; + ResponseSlotStatus->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseSlotStatus, sizeof(USB_CCID_RDR_to_PC_SlotStatus_t), NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_SetParameters: + { + uint8_t ProtocolNum = Endpoint_Read_8(); + uint8_t RFU = Endpoint_Read_16_LE(); + + (void)RFU; + + USB_CCID_RDR_to_PC_Parameters_t* ResponseParametersStatus = (USB_CCID_RDR_to_PC_Parameters_t*)&ResponseBuffer; + ResponseParametersStatus->CCIDHeader.MessageType = CCID_RDR_to_PC_Parameters; + ResponseParametersStatus->CCIDHeader.Length = 0; + ResponseParametersStatus->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseParametersStatus->CCIDHeader.Seq = CCIDHeader.Seq; + + if (ProtocolNum == CCID_PROTOCOLNUM_T0) + { + if (CCIDHeader.Length * sizeof(uint8_t) == sizeof(USB_CCID_ProtocolData_T0_t)) + { + + Endpoint_Read_Stream_LE(RequestBuffer, CCIDHeader.Length * sizeof(uint8_t), NULL); + Status = CALLBACK_CCID_SetParameters_T0(CCIDInterfaceInfo, CCIDHeader.Slot, &Error, (USB_CCID_ProtocolData_T0_t*) RequestBuffer); + if (CCID_CheckStatusNoError(Status)) + { + ResponseParametersStatus->CCIDHeader.Length = CCIDHeader.Length; + Status = CALLBACK_CCID_GetParameters_T0(CCIDInterfaceInfo, CCIDHeader.Slot, &Error, &ResponseParametersStatus->ProtocolNum, (USB_CCID_ProtocolData_T0_t*) &ResponseParametersStatus->ProtocolData); + } + } + else + { + // Unexpected length + Status = CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_PRESENTANDACTIVE; + } + } + else + { + ResponseParametersStatus->ProtocolNum = CCID_PROTOCOLNUM_T0; + + // For now, we don't support T=1 protocol + Error = CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED; + Status = CCID_COMMANDSTATUS_ERROR | CCID_ICCSTATUS_PRESENTANDACTIVE; + } + + ResponseParametersStatus->Status = Status; + ResponseParametersStatus->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length , NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_GetParameters: + { + USB_CCID_RDR_to_PC_Parameters_t* ResponseParametersStatus = (USB_CCID_RDR_to_PC_Parameters_t*)&ResponseBuffer; + ResponseParametersStatus->CCIDHeader.MessageType = CCID_RDR_to_PC_Parameters; + ResponseParametersStatus->CCIDHeader.Length = sizeof(USB_CCID_ProtocolData_T0_t); + ResponseParametersStatus->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseParametersStatus->CCIDHeader.Seq = CCIDHeader.Seq; + + Status = CALLBACK_CCID_GetParameters_T0(CCIDInterfaceInfo, CCIDHeader.Slot, &Error, &ResponseParametersStatus->ProtocolNum, (USB_CCID_ProtocolData_T0_t*) &ResponseParametersStatus->ProtocolData); + + ResponseParametersStatus->Status = Status; + ResponseParametersStatus->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length , NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_XfrBlock: + { + uint8_t Bwi = Endpoint_Read_8(); + uint16_t LevelParameter = Endpoint_Read_16_LE(); + uint8_t ReceivedBuffer[0x4]; + + (void)Bwi; + (void)LevelParameter; + + Endpoint_Read_Stream_LE(ReceivedBuffer, sizeof(ReceivedBuffer), NULL); + + uint8_t ResponseDataLength = 0; + + USB_CCID_RDR_to_PC_DataBlock_t* ResponseBlock = (USB_CCID_RDR_to_PC_DataBlock_t*)&ResponseBuffer; + ResponseBlock->CCIDHeader.MessageType = CCID_RDR_to_PC_DataBlock; + ResponseBlock->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseBlock->CCIDHeader.Seq = CCIDHeader.Seq; + + ResponseBlock->ChainParam = 0; + + Status = CALLBACK_CCID_XfrBlock(CCIDInterfaceInfo, CCIDHeader.Slot, RequestBuffer, CCIDHeader.Length, (uint8_t*) &ResponseBlock->Data, &ResponseDataLength, &Error); + + if (CCID_CheckStatusNoError(Status) && !CCIDInterfaceInfo->State.Aborted) + { + ResponseBlock->CCIDHeader.Length = ResponseDataLength; + } + else if (CCIDInterfaceInfo->State.Aborted) + { + Status = CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_PRESENTANDACTIVE; + Error = CCID_ERROR_CMD_ABORTED; + ResponseDataLength = 0; + } + else + { + ResponseDataLength = 0; + } + + ResponseBlock->Status = Status; + ResponseBlock->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseBlock, sizeof(USB_CCID_RDR_to_PC_DataBlock_t) + ResponseDataLength, NULL); + Endpoint_ClearIN(); + break; + } + + case CCID_PC_to_RDR_Abort: + { + USB_CCID_RDR_to_PC_SlotStatus_t* ResponseAbort = (USB_CCID_RDR_to_PC_SlotStatus_t*)&ResponseBuffer; + ResponseAbort->CCIDHeader.MessageType = CCID_RDR_to_PC_SlotStatus; + ResponseAbort->CCIDHeader.Length = 0; + ResponseAbort->CCIDHeader.Slot = CCIDHeader.Slot; + ResponseAbort->CCIDHeader.Seq = CCIDHeader.Seq; + + ResponseAbort->ClockStatus = 0; + + Status = CALLBACK_CCID_Abort(CCIDInterfaceInfo, CCIDHeader.Slot, CCIDHeader.Seq, &Error); + + ResponseAbort->Status = Status; + ResponseAbort->Error = Error; + + Endpoint_ClearOUT(); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseAbort, sizeof(USB_CCID_RDR_to_PC_SlotStatus_t), NULL); + Endpoint_ClearIN(); + break; + } + + default: + { + memset(ResponseBuffer, 0x00, sizeof(ResponseBuffer)); + + Endpoint_SelectEndpoint(CCIDInterfaceInfo->Config.DataINEndpoint.Address); + Endpoint_Write_Stream_LE(ResponseBuffer, sizeof(ResponseBuffer), NULL); + Endpoint_ClearIN(); + break; + } + } + } +} + +#endif diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h new file mode 100644 index 0000000..133da16 --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h @@ -0,0 +1,233 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2020. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaims all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief Device mode driver for the library USB CCID Class driver. + * + * Device mode driver for the library USB CCID Class driver. + * + * \note This file should not be included directly. It is automatically included as needed by the USB module driver + * dispatch header located in LUFA/Drivers/USB.h. + */ + +/** \ingroup Group_USBClassCCID + * \defgroup Group_USBClassCCIDDevice CCID Class Device Mode Driver + * + * \section Sec_USBClassCCIDDevice_Dependencies Module Source Dependencies + * The following files must be built with any user project that uses this module: + * - LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) + * + * \section Sec_USBClassCCIDDevice_ModDescription Module Description + * Device Mode USB Class driver framework interface, for the CCID USB Class driver. + * + * @{ + */ + +#ifndef _CCID_CLASS_DEVICE_H_ +#define _CCID_CLASS_DEVICE_H_ + + /* Includes: */ + #include "../../USB.h" + #include "../Common/CCIDClassCommon.h" + + /* Public Interface - May be used in end-application: */ + /* Type Defines: */ + /** \brief CCID Class Device Mode Configuration and State Structure. + * + * Class state structure. An instance of this structure should be made for each CCID interface + * within the user application, and passed to each of the CCID class driver functions as the + * CCIDInterfaceInfo parameter. This stores each CCID interface's configuration and state information. + */ + typedef struct + { + struct + { + uint8_t InterfaceNumber; /**< Interface number of the CCID interface within the device. */ + uint8_t TotalSlots; /**< Total of slots no this device. */ + USB_Endpoint_Table_t DataINEndpoint; /**< Data IN endpoint configuration table. */ + USB_Endpoint_Table_t DataOUTEndpoint; /**< Data OUT endpoint configuration table. */ + } Config; /**< Config data for the USB class interface within the device. All elements in this section + * must be set or the interface will fail to enumerate and operate correctly. + */ + struct + { + bool Aborted; //< Set if host has started an abort process + uint8_t AbortedSeq; //< Sequence number for the current abort process + } State; /**< State data for the USB class interface within the device. All elements in this section + * are reset to their defaults when the interface is enumerated. + */ + USB_CCID_ProtocolData_T0_t ProtocolData; + } USB_ClassInfo_CCID_Device_t; + + /* Function Prototypes: */ + /** Configures the endpoints of a given CCID interface, ready for use. This should be linked to the library + * \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration containing + * the given CCID interface is selected. + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration. + * + * \return Boolean \c true if the endpoints were successfully configured, \c false otherwise. + */ + bool CCID_Device_ConfigureEndpoints(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); + + /** Processes incoming control requests from the host, that are directed to the given CCID class interface. This should be + * linked to the library \ref EVENT_USB_Device_ControlRequest() event. + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + */ + void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); + + /** General management task for a given CCID class interface, required for the correct operation of the interface. This should + * be called frequently in the main program loop, before the master USB management task \ref USB_USBTask(). + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + */ + void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for PC_TO_RDR_IccPowerOn CCID message + * When the ICC is inserted into a slot of a CCID, the CCID can activate the ICC, and the ICC will respond with an ATR + * (answer to reset) + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + * \param[in] Slot The slot ID currently being powered on. + * \param[in,out] Atr Pointer to an array containing the Power On ATR being sent to the device. + * \param[out] AtrSize The size of the ATR being sent (up to 15 bytes maximum). + * \param[out] Error The result of the operation, or error. + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_IccPowerOn(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + uint8_t* const Atr, + uint8_t* const AtrSize, + uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for PC_TO_RDR_IccPowerOff CCID message + * Turns off the ICC + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + * \param[in] Slot The slot ID currently being powered off. + * \param[out] Error The result of the operation, or error. + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_IccPowerOff(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for PC_TO_RDR_GetSlotStatus CCID message + * Retrieves the current status of a given slot + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + * \param[in] Slot The slot ID from which we want to retrieve the status. + * \param[out] Error The result of the operation, or error. + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1); + + + /** CCID class driver callback for PC_TO_RDR_SetParameters CCID message for T=0 + * Sets the current parameters of a given slot + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration, state and protocol data. + * \param[in] Slot The slot ID from which we want to retrieve the status. + * \param[out] Error The result of the operation, or error. + * \param[out] T0 Pointer to a buffer containing the new parameters + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_SetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + uint8_t* const Error, + USB_CCID_ProtocolData_T0_t* const T0) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for PC_TO_RDR_SetParameters CCID message for T=0 + * Retrieves the current parameters of a given slot + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration, state and protocol data. + * \param[in] Slot The slot ID from which we want to retrieve the status. + * \param[out] Error The result of the operation, or error. + * \param[out] ProtocolNum The CCID protocol ID of the parameter being retrieved. + * \param[out] T0 Pointer to a buffer where the parameters will be returned + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_GetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + uint8_t* const Error, + uint8_t* const ProtocolNum, + USB_CCID_ProtocolData_T0_t* const T0) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for PC_TO_RDR_XfrBlock CCID message + * Send a block of bytes from the host to a slot in the device + * and also received a block of bytes as a response + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + * \param[in] Slot The slot ID from which we want to retrieve the status. + * \param[in] ReceivedBuffer Pointer to an array holding the received block of bytes + * \param[in] ReceivedBufferSize The size of the received block of bytes + * \param[out] SendBuffer Pointer to a buffer which will hold the bytes being sent back to the host + * \param[out] SentBufferSize The size of the block of bytes being sent back to the host + * \param[out] Error The result of the operation, or error. + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_XfrBlock(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + const uint8_t* ReceivedBuffer, + const uint8_t ReceivedBufferSize, + uint8_t* const SendBuffer, + uint8_t* const SentBufferSize, + uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1); + + /** CCID class driver callback for CCID_PC_to_RDR_Abort CCID message + * Aborts a BULK out message previously sent to a slot + * + * \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state. + * \param[in] Slot The slot ID to where the message being aborted was sent to. + * \param[in] Seq The current sequence number for this message. Must be checked against + * the current abort message being sent at the control pipe. + * \param[out] Error The result of the operation, or error. + * + * \return The command result code. + */ + uint8_t CALLBACK_CCID_Abort(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo, + const uint8_t Slot, + const uint8_t Seq, + uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1); + + +#endif + +/** @} */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c similarity index 76% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c index f4e74cf..228b018 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -166,6 +166,29 @@ uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, return Endpoint_Write_Stream_LE(Buffer, Length, NULL); } +#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const char* const String) + { + if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) + return ENDPOINT_RWSTREAM_DeviceDisconnected; + + Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); + return Endpoint_Write_PStream_LE(String, strlen_P(String), NULL); + } + + uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) + { + if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) + return ENDPOINT_RWSTREAM_DeviceDisconnected; + + Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); + return Endpoint_Write_PStream_LE(Buffer, Length, NULL); + } +#endif + uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data) { @@ -285,57 +308,62 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC } #if defined(FDEV_SETUP_STREAM) -void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} - -void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} + void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + FILE* const Stream) + { + *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW); + fdev_set_udata(Stream, CDCInterfaceInfo); + } -static int CDC_Device_putchar(char c, - FILE* Stream) -{ - return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0; -} + void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + FILE* const Stream) + { + *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW); + fdev_set_udata(Stream, CDCInterfaceInfo); + } -static int CDC_Device_getchar(FILE* Stream) -{ - int16_t ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); + static int CDC_Device_putchar(char c, + FILE* Stream) + { + return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : c; + } - if (ReceivedByte < 0) - return _FDEV_EOF; + static int CDC_Device_getchar(FILE* Stream) + { + int16_t ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); - return ReceivedByte; -} + if (ReceivedByte < 0) + return _FDEV_EOF; -static int CDC_Device_getchar_Blocking(FILE* Stream) -{ - int16_t ReceivedByte; + return ReceivedByte; + } - while ((ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))) < 0) + static int CDC_Device_getchar_Blocking(FILE* Stream) { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return _FDEV_EOF; + int16_t ReceivedByte; - CDC_Device_USBTask((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); - USB_USBTask(); - } + while ((ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))) < 0) + { + if (USB_DeviceState == DEVICE_STATE_Unattached) + return _FDEV_EOF; - return ReceivedByte; -} + CDC_Device_USBTask((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); + USB_USBTask(); + } + + return ReceivedByte; + } #endif -void CDC_Device_Event_Stub(void) +void CDC_Device_Event_Stub(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { } +void CDC_Device_Event_Stub_2(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t _1) +{ + CDC_Device_Event_Stub(CDCInterfaceInfo); +} + #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h similarity index 86% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h index 05c0fdd..54ad49a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -182,6 +182,22 @@ void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1); + /** Sends a given null terminated string to the attached USB host, if connected. If a host is not connected when + * the function is called, the string is discarded. Bytes will be queued for transmission to the host until either + * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to + * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput. + * + * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or + * the call will fail. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. + * \param[in] String Pointer to the null terminated string to send to the host. + * + * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given data buffer to the attached USB host, if connected. If a host is not connected when the function is * called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint bank * becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows @@ -200,21 +216,47 @@ const void* const Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - /** Sends a given null terminated string to the attached USB host, if connected. If a host is not connected when - * the function is called, the string is discarded. Bytes will be queued for transmission to the host until either - * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to - * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in] String Pointer to the null terminated string to send to the host. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + /** Sends a given null terminated string from PROGMEM space to the attached USB host, if connected. If a host is not connected + * when the function is called, the string is discarded. Bytes will be queued for transmission to the host until either + * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to + * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput. + * + * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or + * the call will fail. + * + * \note This function does not exist on architectures that do not have a separate flash memory space. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. + * \param[in] String Pointer to the null terminated string to send to the host. + * + * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + #endif + + #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + /** Sends a given data buffer from PROGMEM space to the attached USB host, if connected. If a host is not connected when the + * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint + * bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows + * for multiple bytes to be packed into a single endpoint packet, increasing data throughput. + * + * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or + * the call will fail. + * + * \note This function does not exist on architectures that do not have a separate flash memory space. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. + * \param[in] Buffer Pointer to a buffer containing the data to send to the device. + * \param[in] Length Length of the data to send to the host. + * + * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + #endif /** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the * byte is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the @@ -328,7 +370,8 @@ static int CDC_Device_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); #endif - void CDC_Device_Event_Stub(void) ATTR_CONST; + void CDC_Device_Event_Stub(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); + void CDC_Device_Event_Stub_2(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t _1); void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub); @@ -336,7 +379,7 @@ ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub); void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Duration) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) - ATTR_ALIAS(CDC_Device_Event_Stub); + ATTR_ALIAS(CDC_Device_Event_Stub_2); #endif #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c index 03a745c..5d1f0bd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h index f373cf0..51672e3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c index b002525..4565dba 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h index 70eb442..465bba1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c index d090796..e2529e0 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h index 5132213..00fa2f1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c index fd3454b..313d64b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -59,7 +59,7 @@ void PRNT_Device_ProcessControlRequest(USB_ClassInfo_PRNT_Device_t* const PRNTIn } uint16_t IEEEStringLen = strlen(PRNTInterfaceInfo->Config.IEEE1284String); - Endpoint_Write_16_BE(IEEEStringLen); + Endpoint_Write_16_BE(IEEEStringLen + sizeof(uint16_t)); Endpoint_Write_Control_Stream_LE(PRNTInterfaceInfo->Config.IEEE1284String, IEEEStringLen); Endpoint_ClearStatusStage(); } @@ -77,6 +77,8 @@ void PRNT_Device_ProcessControlRequest(USB_ClassInfo_PRNT_Device_t* const PRNTIn } Endpoint_Write_8(PRNTInterfaceInfo->State.PortStatus); + Endpoint_ClearIN(); + Endpoint_ClearStatusStage(); } @@ -305,7 +307,7 @@ static int PRNT_Device_getchar_Blocking(FILE* Stream) } #endif -void PRNT_Device_Event_Stub(void) +void PRNT_Device_Event_Stub(USB_ClassInfo_PRNT_Device_t* const PRNTInterfaceInfo) { } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h index d9d9644..d8b3b07 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -273,7 +273,7 @@ static int PRNT_Device_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); #endif - void PRNT_Device_Event_Stub(void) ATTR_CONST; + void PRNT_Device_Event_Stub(USB_ClassInfo_PRNT_Device_t* const PRNTInterfaceInfo); void EVENT_PRNT_Device_SoftReset(USB_ClassInfo_PRNT_Device_t* const PRNTInterfaceInfo) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(PRNT_Device_Event_Stub); diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c index 6ee73c5..076e668 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h index 2821d7d..de09984 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/HIDClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/HIDClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/HIDClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/HIDClass.h index d2eea75..60419d4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/HIDClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/HIDClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c index ac8d5dc..8f0c676 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h index 0476f2e..4d2c684 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.c index 3b5bceb..ae0ebcc 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.h index b00bb5f..80f261c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/AudioClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/AudioClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.c similarity index 83% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.c index b32a237..484d349 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -276,9 +276,8 @@ uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, return USB_Host_SendControlRequest(NULL); } -uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, - const void* const Buffer, - const uint16_t Length) +uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const char* const String) { if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive)) return PIPE_READYWAIT_DeviceDisconnected; @@ -288,14 +287,15 @@ uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address); Pipe_Unfreeze(); - ErrorCode = Pipe_Write_Stream_LE(Buffer, Length, NULL); + ErrorCode = Pipe_Write_Stream_LE(String, strlen(String), NULL); Pipe_Freeze(); return ErrorCode; } -uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, - const char* const String) +uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) { if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive)) return PIPE_READYWAIT_DeviceDisconnected; @@ -305,12 +305,49 @@ uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address); Pipe_Unfreeze(); - ErrorCode = Pipe_Write_Stream_LE(String, strlen(String), NULL); + ErrorCode = Pipe_Write_Stream_LE(Buffer, Length, NULL); Pipe_Freeze(); return ErrorCode; } +#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const char* const String) + { + if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive)) + return PIPE_READYWAIT_DeviceDisconnected; + + uint8_t ErrorCode; + + Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address); + + Pipe_Unfreeze(); + ErrorCode = Pipe_Write_PStream_LE(String, strlen_P(String), NULL); + Pipe_Freeze(); + + return ErrorCode; + } + + uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) + { + if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive)) + return PIPE_READYWAIT_DeviceDisconnected; + + uint8_t ErrorCode; + + Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address); + + Pipe_Unfreeze(); + ErrorCode = Pipe_Write_PStream_LE(Buffer, Length, NULL); + Pipe_Freeze(); + + return ErrorCode; + } +#endif + uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Data) { @@ -421,54 +458,54 @@ uint8_t CDC_Host_Flush(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) } #if defined(FDEV_SETUP_STREAM) -void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} - -void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar_Blocking, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} + void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + FILE* const Stream) + { + *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar, _FDEV_SETUP_RW); + fdev_set_udata(Stream, CDCInterfaceInfo); + } -static int CDC_Host_putchar(char c, - FILE* Stream) -{ - return CDC_Host_SendByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0; -} + void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + FILE* const Stream) + { + *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar_Blocking, _FDEV_SETUP_RW); + fdev_set_udata(Stream, CDCInterfaceInfo); + } -static int CDC_Host_getchar(FILE* Stream) -{ - int16_t ReceivedByte = CDC_Host_ReceiveByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream)); + static int CDC_Host_putchar(char c, + FILE* Stream) + { + return CDC_Host_SendByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0; + } - if (ReceivedByte < 0) - return _FDEV_EOF; + static int CDC_Host_getchar(FILE* Stream) + { + int16_t ReceivedByte = CDC_Host_ReceiveByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream)); - return ReceivedByte; -} + if (ReceivedByte < 0) + return _FDEV_EOF; -static int CDC_Host_getchar_Blocking(FILE* Stream) -{ - int16_t ReceivedByte; + return ReceivedByte; + } - while ((ReceivedByte = CDC_Host_ReceiveByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream))) < 0) + static int CDC_Host_getchar_Blocking(FILE* Stream) { - if (USB_HostState == HOST_STATE_Unattached) - return _FDEV_EOF; + int16_t ReceivedByte; - CDC_Host_USBTask((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream)); - USB_USBTask(); - } + while ((ReceivedByte = CDC_Host_ReceiveByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream))) < 0) + { + if (USB_HostState == HOST_STATE_Unattached) + return _FDEV_EOF; - return ReceivedByte; -} + CDC_Host_USBTask((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream)); + USB_USBTask(); + } + + return ReceivedByte; + } #endif -void CDC_Host_Event_Stub(void) +void CDC_Host_Event_Stub(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) { } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.h similarity index 87% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.h index aeee23e..b4af580 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/CDCClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/CDCClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -183,6 +183,22 @@ uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1); + /** Sends a given null-terminated string to the attached USB device, if connected. If a device is not connected when the + * function is called, the string is discarded. Bytes will be queued for transmission to the device until either the pipe + * bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows + * for multiple bytes to be packed into a single pipe packet, increasing data throughput. + * + * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the + * call will fail. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. + * \param[in] String Pointer to the null terminated string to send to the device. + * + * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given data buffer to the attached USB device, if connected. If a device is not connected when the function is * called, the data will be discarded. Bytes will be queued for transmission to the device until either the pipe bank * becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows for @@ -201,21 +217,47 @@ const void* const Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - /** Sends a given null-terminated string to the attached USB device, if connected. If a device is not connected when the - * function is called, the string is discarded. Bytes will be queued for transmission to the device until either the pipe - * bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows - * for multiple bytes to be packed into a single pipe packet, increasing data throughput. - * - * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the - * call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. - * \param[in] String Pointer to the null terminated string to send to the device. - * - * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. - */ - uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, - const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + /** Sends a given null terminated string from PROGMEM space to the attached USB device, if connected. If a device is not connected + * when the function is called, the string is discarded. Bytes will be queued for transmission to the device until either + * the pipe bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to + * the device. This allows for multiple bytes to be packed into a single pipe packet, increasing data throughput. + * + * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or + * the call will fail. + * + * \note This function does not exist on architectures that do not have a separate flash memory space. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. + * \param[in] String Pointer to the null terminated string to send to the host. + * + * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + #endif + + #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) + /** Sends a given data buffer from PROGMEM space to the attached USB device, if connected. If a device is not connected when the + * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the pipe + * bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows + * for multiple bytes to be packed into a single pipe packet, increasing data throughput. + * + * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or + * the call will fail. + * + * \note This function does not exist on architectures that do not have a separate flash memory space. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. + * \param[in] Buffer Pointer to a buffer containing the data to send to the device. + * \param[in] Length Length of the data to send to the host. + * + * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); + #endif /** Sends a given byte to the attached USB device, if connected. If a device is not connected when the function is called, the * byte is discarded. Bytes will be queued for transmission to the device until either the pipe bank becomes full, or the @@ -326,7 +368,7 @@ static int CDC_Host_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); #endif - void CDC_Host_Event_Stub(void) ATTR_CONST; + void CDC_Host_Event_Stub(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo); void EVENT_CDC_Host_ControLineStateChanged(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Host_Event_Stub); diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.c index b43435d..65f91de 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -113,6 +113,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo HIDInterfaceInfo->State.InterfaceNumber = HIDInterface->InterfaceNumber; HIDInterfaceInfo->State.HIDReportSize = LE16_TO_CPU(HIDDescriptor->HIDReportLength); + HIDInterfaceInfo->State.DeviceUsesOUTPipe = DataOUTEndpoint; HIDInterfaceInfo->State.SupportsBootProtocol = (HIDInterface->SubClass != HID_CSCP_NonBootProtocol); HIDInterfaceInfo->State.LargestReportSize = 8; HIDInterfaceInfo->State.IsActive = true; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.h index 703b698..e62c9af 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/HIDClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/HIDClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c index 8b898cb..431e4be 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h index 7624f8e..9c2b4de 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c index ac448a5..cca01e8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h index 6e55807..5bfc1ca 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c index fd32e1c..4413750 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h index 8089aa5..035daa6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c index 3ed51c8..1e89a22 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h index 79334b4..2eb6269 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c index 24a6308..4bf9431 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h index f9f41ad..6ed2e6a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MIDIClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MIDIClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MIDIClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MIDIClass.h index 7e6ba1c..aa1496e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MIDIClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MIDIClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MassStorageClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MassStorageClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MassStorageClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MassStorageClass.h index 79a0521..5bff6dd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/MassStorageClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/MassStorageClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/PrinterClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/PrinterClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/PrinterClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/PrinterClass.h index 91121b5..d86250f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/PrinterClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/PrinterClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/RNDISClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/RNDISClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/RNDISClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/RNDISClass.h index 1555f0d..d0fe431 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/RNDISClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/RNDISClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/StillImageClass.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/StillImageClass.h similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/StillImageClass.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/StillImageClass.h index f2ec37b..bd6f99a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Class/StillImageClass.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Class/StillImageClass.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c index d23e7b8..1372a3d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h index 5efffe7..f9a1182 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -80,7 +80,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Device Mode Option Masks */ - //@{ + /**@{*/ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) || defined(__DOXYGEN__) /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the * USB interface should be initialized in low speed (1.5Mb/s) mode. @@ -98,7 +98,7 @@ * USB interface should be initialized in full speed (12Mb/s) mode. */ #define USB_DEVICE_OPT_FULLSPEED (0 << 0) - //@} + /**@}*/ #if (!defined(NO_INTERNAL_SERIAL) && \ (defined(USB_SERIES_7_AVR) || defined(USB_SERIES_6_AVR) || \ @@ -113,22 +113,25 @@ * On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR and so will force the host to create a pseudo-serial * number for the device. */ - #define USE_INTERNAL_SERIAL 0xDC + #ifndef USE_INTERNAL_SERIAL + #define USE_INTERNAL_SERIAL 0xDC + #endif /** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller * model. */ - #define INTERNAL_SERIAL_LENGTH_BITS 80 + #define INTERNAL_SERIAL_LENGTH_BITS 80 /** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller * model. */ - #define INTERNAL_SERIAL_START_ADDRESS 0x0E + #define INTERNAL_SERIAL_START_ADDRESS 0x0E #else - #define USE_INTERNAL_SERIAL NO_DESCRIPTOR + #undef USE_INTERNAL_SERIAL + #define USE_INTERNAL_SERIAL NO_DESCRIPTOR - #define INTERNAL_SERIAL_LENGTH_BITS 0 - #define INTERNAL_SERIAL_START_ADDRESS 0 + #define INTERNAL_SERIAL_LENGTH_BITS 0 + #define INTERNAL_SERIAL_START_ADDRESS 0 #endif /* Function Prototypes: */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c index 5782824..970c113 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h index 2032789..2e6920f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -67,7 +67,7 @@ /* Public Interface - May be used in end-application: */ /* Function Prototypes: */ /** \name Stream functions for null data */ - //@{ + /**@{*/ /** Reads and discards the given number of bytes from the currently selected endpoint's bank, * discarding fully read packets from the host as needed. The last packet is not automatically @@ -175,10 +175,10 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed); - //@} + /**@}*/ /** \name Stream functions for RAM source/destination data */ - //@{ + /**@{*/ /** Writes the given number of bytes to the endpoint from the given buffer in little endian, * sending full packets to the host as needed. The last packet filled is not automatically sent; @@ -425,10 +425,10 @@ */ uint8_t Endpoint_Read_Control_Stream_BE(void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for EEPROM source/destination data */ - //@{ + /**@{*/ /** EEPROM buffer source version of \ref Endpoint_Write_Stream_LE(). * @@ -565,10 +565,10 @@ */ uint8_t Endpoint_Read_Control_EStream_BE(void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for PROGMEM source/destination data */ - //@{ + /**@{*/ /** FLASH buffer source version of \ref Endpoint_Write_Stream_LE(). * @@ -645,7 +645,7 @@ */ uint8_t Endpoint_Write_Control_PStream_BE(const void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c index f5d2034..c63ad4c 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h index 1632d93..98609f4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c index 4e38c75..43fe17e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h index f0ffa5a..efe3968 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h index c2e8496..998d78a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c index 47169b3..a7214db 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h index 264dab5..606558f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -67,7 +67,7 @@ /* Public Interface - May be used in end-application: */ /* Function Prototypes: */ /** \name Stream functions for null data */ - //@{ + /**@{*/ /** Reads and discards the given number of bytes from the pipe, discarding fully read packets from the host * as needed. The last packet is not automatically discarded once the remaining bytes has been read; the @@ -173,10 +173,10 @@ uint8_t Pipe_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed); - //@} + /**@}*/ /** \name Stream functions for RAM source/destination data */ - //@{ + /**@{*/ /** Writes the given number of bytes to the pipe from the given buffer in little endian, * sending full packets to the device as needed. The last packet filled is not automatically sent; @@ -339,10 +339,10 @@ uint8_t Pipe_Read_Stream_BE(void* const Buffer, uint16_t Length, uint16_t* const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for EEPROM source/destination data */ - //@{ + /**@{*/ /** EEPROM buffer source version of \ref Pipe_Write_Stream_LE(). * @@ -395,10 +395,10 @@ uint8_t Pipe_Read_EStream_BE(void* const Buffer, uint16_t Length, uint16_t* const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for PROGMEM source/destination data */ - //@{ + /**@{*/ /** FLASH buffer source version of \ref Pipe_Write_Stream_LE(). * @@ -429,7 +429,7 @@ uint8_t Pipe_Write_PStream_BE(const void* const Buffer, uint16_t Length, uint16_t* const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c index fc99ae4..c6cfd61 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h index bac324f..15d2d24 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -99,7 +99,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name Pipe Error Flag Masks */ - //@{ + /**@{*/ /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */ #define PIPE_ERRORFLAG_OVERFLOW (1 << 6) @@ -120,10 +120,10 @@ /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data toggle error occurred in the pipe. */ #define PIPE_ERRORFLAG_DATATGL (1 << 0) - //@} + /**@}*/ /** \name Pipe Token Masks */ - //@{ + /**@{*/ /** Token mask for \ref Pipe_SetPipeToken() and \ref Pipe_GetPipeToken(). This sets the pipe as a SETUP token (for CONTROL type pipes), * which will trigger a control request on the attached device when data is written to the pipe. */ @@ -138,7 +138,7 @@ * indicating that the pipe data will flow from host to device. */ #define PIPE_TOKEN_OUT (2 << PTOKEN0) - //@} + /**@}*/ /** Default size of the default control pipe's bank, until altered by the Endpoint0Size value * in the device descriptor of the attached device. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c index 59c620a..4aa8bbf 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c index 9888700..c09f278 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c index d51afdf..757876f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c index 2685c9b..19cdfb1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c index 71c5f91..5178b2a 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h index de34f42..d231b49 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -117,7 +117,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Controller Option Masks */ - //@{ + /**@{*/ /** Regulator disable option mask for \ref USB_Init(). This indicates that the internal 3.3V USB data pad * regulator should be disabled and the AVR's VCC level used for the data pads. * @@ -152,7 +152,7 @@ * that the USB controller requires) and ensuring that it is locked at the correct frequency for USB operations. */ #define USB_OPT_AUTO_PLL (0 << 2) - //@} + /**@}*/ #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__) /** Constant for the maximum software timeout period of the USB data stream transfer functions diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c index 7efaea6..927a788 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h index e6f5ff9..27884fc 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.c index da6812a..00638c3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.h index b4a9788..b6a4161 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/ConfigDescriptors.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/ConfigDescriptors.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Device.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Device.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Device.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Device.h index 10d739f..197a1f9 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Device.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Device.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -131,7 +131,7 @@ * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise. */ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, + const uint16_t wIndex, const void** const DescriptorAddress #if (defined(ARCH_HAS_MULTI_ADDRESS_SPACE) || defined(__DOXYGEN__)) && \ !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS)) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.c index adf615a..88cc7f8 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -152,8 +152,8 @@ static void USB_Device_SetConfiguration(void) #define MemoryAddressSpace MEMSPACE_FLASH #elif defined(USE_EEPROM_DESCRIPTORS) #define MemoryAddressSpace MEMSPACE_EEPROM - #elif defined(USE_SRAM_DESCRIPTORS) - #define MemoryAddressSpace MEMSPACE_SRAM + #elif defined(USE_RAM_DESCRIPTORS) + #define MemoryAddressSpace MEMSPACE_RAM #else uint8_t MemoryAddressSpace; #endif @@ -292,6 +292,7 @@ static void USB_Device_GetStatus(void) switch (USB_ControlRequest.bmRequestType) { case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE): + { #if !defined(NO_DEVICE_SELF_POWER) if (USB_Device_CurrentlySelfPowered) CurrentStatus |= FEATURE_SELFPOWERED_ENABLED; @@ -302,9 +303,16 @@ static void USB_Device_GetStatus(void) CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED; #endif break; + } case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT): + { #if !defined(CONTROL_ONLY_DEVICE) - Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); + uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); + + if (EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS) + return; + + Endpoint_SelectEndpoint(EndpointIndex); CurrentStatus = Endpoint_IsStalled(); @@ -312,6 +320,7 @@ static void USB_Device_GetStatus(void) #endif break; + } default: return; } @@ -330,20 +339,23 @@ static void USB_Device_ClearSetFeature(void) { #if !defined(NO_DEVICE_REMOTE_WAKEUP) case REQREC_DEVICE: + { if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup) USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); else return; break; + } #endif #if !defined(CONTROL_ONLY_DEVICE) case REQREC_ENDPOINT: + { if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt) { uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); - if (EndpointIndex == ENDPOINT_CONTROLEP) + if (EndpointIndex == ENDPOINT_CONTROLEP || EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS) return; Endpoint_SelectEndpoint(EndpointIndex); @@ -364,6 +376,7 @@ static void USB_Device_ClearSetFeature(void) } break; + } #endif default: return; diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.h index 396e205..20ef8a3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/DeviceStandardReq.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/DeviceStandardReq.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Endpoint.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Endpoint.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Endpoint.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Endpoint.h index bf41376..596e310 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Endpoint.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Endpoint.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/EndpointStream.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/EndpointStream.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/EndpointStream.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/EndpointStream.h index 5675c32..0b5b2d3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/EndpointStream.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/EndpointStream.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.c similarity index 81% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.c index a63b002..abf922b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -37,3 +37,15 @@ void USB_Event_Stub(void) } +void USB_Event_Stub_2(const uint8_t _1) +{ + (void)_1; + USB_Event_Stub(); +} + +void USB_Event_Stub_3(const uint8_t _1, const uint8_t _2) +{ + (void)_1; + (void)_2; + USB_Event_Stub(); +} diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.h index 9c85112..36039a5 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Events.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Events.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -331,20 +331,22 @@ #if !defined(__DOXYGEN__) /* Function Prototypes: */ #if defined(__INCLUDE_FROM_EVENTS_C) - void USB_Event_Stub(void) ATTR_CONST; + void USB_Event_Stub(void); + void USB_Event_Stub_2(const uint8_t _1); + void USB_Event_Stub_3(const uint8_t _1, const uint8_t _2); #if defined(USB_CAN_BE_BOTH) void EVENT_USB_UIDChange(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); #endif #if defined(USB_CAN_BE_HOST) - void EVENT_USB_Host_HostError(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); + void EVENT_USB_Host_HostError(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub_2); void EVENT_USB_Host_DeviceAttached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); void EVENT_USB_Host_DeviceUnattached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); void EVENT_USB_Host_DeviceEnumerationComplete(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) - ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); + ATTR_WEAK ATTR_ALIAS(USB_Event_Stub_3); void EVENT_USB_Host_StartOfFrame(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Host.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Host.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Host.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Host.h index 6146cc5..1297cdb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Host.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Host.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.c index 4a21ce7..205e3c7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.h index bd67bcb..a711a16 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/HostStandardReq.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/HostStandardReq.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/OTG.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/OTG.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/OTG.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/OTG.h index 58d47ba..3e11ef4 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/OTG.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/OTG.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Pipe.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Pipe.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Pipe.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Pipe.h index ca3fdbe..5d03a1b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/Pipe.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/Pipe.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/PipeStream.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/PipeStream.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/PipeStream.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/PipeStream.h index 2399696..82a0bd6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/PipeStream.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/PipeStream.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdDescriptors.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdDescriptors.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdDescriptors.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdDescriptors.h index e0a1a37..c574c78 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdDescriptors.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdDescriptors.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -97,7 +97,7 @@ * * \param[in] ... Characters to initialize a USB String Descriptor structure with. */ - #define USB_STRING_DESCRIPTOR_ARRAY(...) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + sizeof((uint16_t){__VA_ARGS__}), .Type = DTYPE_String}, .UnicodeString = {__VA_ARGS__} } + #define USB_STRING_DESCRIPTOR_ARRAY(...) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + sizeof((uint16_t[]){__VA_ARGS__}), .Type = DTYPE_String}, .UnicodeString = {__VA_ARGS__} } /** Macro to encode a given major/minor/revision version number into Binary Coded Decimal format for descriptor * fields requiring BCD encoding, such as the USB version number in the standard device descriptor. @@ -120,15 +120,18 @@ #define LANGUAGE_ID_ENG 0x0409 /** \name USB Configuration Descriptor Attribute Masks */ - //@{ - /** Mask for the reserved bit in the Configuration Descriptor's \c ConfigAttributes field, which must be set on all - * devices for historical purposes. + /**@{*/ + /** Mask for the reserved bit in the Configuration Descriptor's \c ConfigAttributes field, which must be always + * set on all USB devices for historical purposes. */ #define USB_CONFIG_ATTR_RESERVED 0x80 /** Can be masked with other configuration descriptor attributes for a \ref USB_Descriptor_Configuration_Header_t * descriptor's \c ConfigAttributes value to indicate that the specified configuration can draw its power - * from the device's own power source. + * from the device's own power source, instead of drawing it from the USB host. + * + * Note that the host will probe this dynamically - the device should report its current power state via the + * \ref USB_Device_CurrentlySelfPowered global variable. */ #define USB_CONFIG_ATTR_SELFPOWERED 0x40 @@ -136,12 +139,16 @@ * descriptor's \c ConfigAttributes value to indicate that the specified configuration supports the * remote wakeup feature of the USB standard, allowing a suspended USB device to wake up the host upon * request. + * + * If set, the host will dynamically enable and disable remote wakeup support, indicated via the + * \ref USB_Device_RemoteWakeupEnabled global variable. To initiate a remote wakeup of the host (when allowed) + * see \ref USB_Device_RemoteWakeupEnabled(). */ #define USB_CONFIG_ATTR_REMOTEWAKEUP 0x20 - //@} + /**@}*/ /** \name Endpoint Descriptor Attribute Masks */ - //@{ + /**@{*/ /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's * \c Attributes value to indicate that the specified endpoint is not synchronized. * @@ -169,10 +176,10 @@ * \see The USB specification for more details on the possible Endpoint attributes. */ #define ENDPOINT_ATTR_SYNC (3 << 2) - //@} + /**@}*/ /** \name Endpoint Descriptor Usage Masks */ - //@{ + /**@{*/ /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's * \c Attributes value to indicate that the specified endpoint is used for data transfers. * @@ -193,7 +200,7 @@ * \see The USB specification for more details on the possible Endpoint usage attributes. */ #define ENDPOINT_USAGE_IMPLICIT_FEEDBACK (2 << 4) - //@} + /**@}*/ /* Enums: */ /** Enum for the possible standard descriptor types, as given in each descriptor's header. */ @@ -208,8 +215,6 @@ DTYPE_Other = 0x07, /**< Indicates that the descriptor is of other type. */ DTYPE_InterfacePower = 0x08, /**< Indicates that the descriptor is an interface power descriptor. */ DTYPE_InterfaceAssociation = 0x0B, /**< Indicates that the descriptor is an interface association descriptor. */ - DTYPE_CSInterface = 0x24, /**< Indicates that the descriptor is a class specific interface descriptor. */ - DTYPE_CSEndpoint = 0x25, /**< Indicates that the descriptor is a class specific endpoint descriptor. */ }; /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors. */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdRequestType.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdRequestType.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdRequestType.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdRequestType.h index b2506cd..4901fed 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/StdRequestType.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/StdRequestType.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -88,7 +88,7 @@ #define CONTROL_REQTYPE_RECIPIENT 0x1F /** \name Control Request Data Direction Masks */ - //@{ + /**@{*/ /** Request data direction mask, indicating that the request data will flow from host to device. * * \see \ref CONTROL_REQTYPE_DIRECTION macro. @@ -100,10 +100,10 @@ * \see \ref CONTROL_REQTYPE_DIRECTION macro. */ #define REQDIR_DEVICETOHOST (1 << 7) - //@} + /**@}*/ /** \name Control Request Type Masks */ - //@{ + /**@{*/ /** Request type mask, indicating that the request is a standard request. * * \see \ref CONTROL_REQTYPE_TYPE macro. @@ -121,10 +121,10 @@ * \see \ref CONTROL_REQTYPE_TYPE macro. */ #define REQTYPE_VENDOR (2 << 5) - //@} + /**@}*/ /** \name Control Request Recipient Masks */ - //@{ + /**@{*/ /** Request recipient mask, indicating that the request is to be issued to the device as a whole. * * \see \ref CONTROL_REQTYPE_RECIPIENT macro. @@ -151,7 +151,7 @@ * \see \ref CONTROL_REQTYPE_RECIPIENT macro. */ #define REQREC_OTHER (3 << 0) - //@} + /**@}*/ /* Type Defines: */ /** \brief Standard USB Control Request diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.c similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.c index 6f6de3f..aba71d0 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.h index 5579ea0..9a1a970 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Device_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Device_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -68,7 +68,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Device Mode Option Masks */ - //@{ + /**@{*/ /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the * USB interface should be initialized in low speed (1.5Mb/s) mode. * @@ -88,7 +88,7 @@ */ #define USB_DEVICE_OPT_HIGHSPEED (1 << 1) #endif - //@} + /**@}*/ #if (!defined(NO_INTERNAL_SERIAL) && \ (defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) || \ @@ -102,7 +102,9 @@ * On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR and so will force the host to create a pseudo-serial * number for the device. */ - #define USE_INTERNAL_SERIAL 0xDC + #ifndef USE_INTERNAL_SERIAL + #define USE_INTERNAL_SERIAL 0xDC + #endif /** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller * model. @@ -114,6 +116,7 @@ */ #define INTERNAL_SERIAL_START_ADDRESS 0x80800204 #else + #undef USE_INTERNAL_SERIAL #define USE_INTERNAL_SERIAL NO_DESCRIPTOR #define INTERNAL_SERIAL_LENGTH_BITS 0 diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c index 6e98629..7149c80 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h index 831c714..9aaa9fb 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -67,7 +67,7 @@ /* Public Interface - May be used in end-application: */ /* Function Prototypes: */ /** \name Stream functions for null data */ - //@{ + /**@{*/ /** Reads and discards the given number of bytes from the currently selected endpoint's bank, * discarding fully read packets from the host as needed. The last packet is not automatically @@ -175,10 +175,10 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed); - //@} + /**@}*/ /** \name Stream functions for RAM source/destination data */ - //@{ + /**@{*/ /** Writes the given number of bytes to the endpoint from the given buffer in little endian, * sending full packets to the host as needed. The last packet filled is not automatically sent; @@ -425,7 +425,7 @@ */ uint8_t Endpoint_Read_Control_Stream_BE(void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c index 5dce488..53a27bc 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h index cf35d2b..c4c3bbe 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -216,7 +216,7 @@ (AVR32_USBB_ALLOC_MASK | ((uint32_t)Type << AVR32_USBB_EPTYPE_OFFSET) | ((Address & ENDPOINT_DIR_IN) ? AVR32_USBB_UECFG0_EPDIR_MASK : 0) | - ((Banks > 1) ? AVR32_USBB_UECFG0_EPBK_SINGLE : AVR32_USBB_UECFG0_EPBK_DOUBLE) | + (((Banks > 1) ? AVR32_USBB_UECFG0_EPBK_DOUBLE : AVR32_USBB_UECFG0_EPBK_SINGLE) << AVR32_USBB_EPBK_OFFSET) | Endpoint_BytesToEPSizeMask(Size))); } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.c index 7780752..d974d46 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.h index eb803b0..2a3d626 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Host_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Host_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c index 7dfe448..1d2b073 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h index 4dd79c9..7f76191 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -67,7 +67,7 @@ /* Public Interface - May be used in end-application: */ /* Function Prototypes: */ /** \name Stream functions for null data */ - //@{ + /**@{*/ /** Reads and discards the given number of bytes from the pipe, discarding fully read packets from the host * as needed. The last packet is not automatically discarded once the remaining bytes has been read; the @@ -173,10 +173,10 @@ uint8_t Pipe_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed); - //@} + /**@}*/ /** \name Stream functions for RAM source/destination data */ - //@{ + /**@{*/ /** Writes the given number of bytes to the pipe from the given buffer in little endian, * sending full packets to the device as needed. The last packet filled is not automatically sent; @@ -339,7 +339,7 @@ uint8_t Pipe_Read_Stream_BE(void* const Buffer, uint16_t Length, uint16_t* const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c index a24c7b1..e807192 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h index 1a0ada8..1ae8937 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -109,7 +109,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name Pipe Error Flag Masks */ - //@{ + /**@{*/ /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */ #define PIPE_ERRORFLAG_OVERFLOW (AVR32_USBB_UPSTA0_OVERFI_MASK << 8) @@ -127,10 +127,10 @@ /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data toggle error occurred in the pipe. */ #define PIPE_ERRORFLAG_DATATGL AVR32_USBB_UPERR0_DATATGL_MASK - //@} + /**@}*/ /** \name Pipe Token Masks */ - //@{ + /**@{*/ /** Token mask for \ref Pipe_SetPipeToken() and \ref Pipe_GetPipeToken(). This sets the pipe as a SETUP token (for CONTROL type pipes), * which will trigger a control request on the attached device when data is written to the pipe. */ @@ -145,7 +145,7 @@ * indicating that the pipe data will flow from host to device. */ #define PIPE_TOKEN_OUT AVR32_USBB_UPCFG0_PTOKEN_OUT - //@} + /**@}*/ /** Default size of the default control pipe's bank, until altered by the Endpoint0Size value * in the device descriptor of the attached device. diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c index 59c620a..4aa8bbf 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c index 9888700..c09f278 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c index d51afdf..757876f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c index 2685c9b..19cdfb1 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c index fda0ddc..a74a2b7 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h index 2e82458..8c99d1b 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -97,7 +97,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Controller Option Masks */ - //@{ + /**@{*/ /** Selects one of the system's main clock oscillators as the input clock to the USB Generic Clock source * generation module. This indicates that an external oscillator should be used directly instead of an * internal PLL clock source. @@ -115,7 +115,7 @@ /** Selects PLL or External Oscillator 1 as the USB Generic Clock source module input clock. */ #define USB_OPT_GCLK_CHANNEL_1 (0 << 3) - //@} + /**@}*/ #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__) /** Constant for the maximum software timeout period of the USB data stream transfer functions diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c index 83ada8c..fc93537 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h index ddd5389..6f95d40 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBController.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBController.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBController.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBController.h index c1d74c3..19de8cd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBController.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBController.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -64,7 +64,7 @@ /* Defines: */ /** \name Endpoint Direction Masks */ - //@{ + /**@{*/ /** Endpoint direction mask, for masking against endpoint addresses to retrieve the endpoint's * direction for comparing with the \c ENDPOINT_DIR_* masks. */ @@ -79,10 +79,10 @@ * the index of the address within a device to obtain the full endpoint address. */ #define ENDPOINT_DIR_IN 0x80 - //@} + /**@}*/ /** \name Pipe Direction Masks */ - //@{ + /**@{*/ /** Pipe direction mask, for masking against pipe addresses to retrieve the pipe's * direction for comparing with the \c PIPE_DIR_* masks. */ @@ -97,10 +97,10 @@ * the index of the address within a device to obtain the full endpoint address. */ #define PIPE_DIR_IN 0x80 - //@} + /**@}*/ /** \name Endpoint/Pipe Type Masks */ - //@{ + /**@{*/ /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared * with the \c EP_TYPE_* masks to determine the exact type of the endpoint. */ @@ -129,7 +129,7 @@ * \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions. */ #define EP_TYPE_INTERRUPT 0x03 - //@} + /**@}*/ /* Enums: */ /** Enum for the possible USB controller modes, for initialization via \ref USB_Init() and indication back to the diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBInterrupt.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBInterrupt.h similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBInterrupt.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBInterrupt.h index 3dcfd5f..a38d7b0 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBInterrupt.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBInterrupt.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBMode.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBMode.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBMode.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBMode.h index 09cf307..073e716 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBMode.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBMode.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.c index 30a3cd6..bf89841 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.h index 7205ea1..03a9604 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/USBTask.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/USBTask.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c index 10c3279..29d7072 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h similarity index 93% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h index b203e10..56dff70 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -80,7 +80,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Device Mode Option Masks */ - //@{ + /**@{*/ /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the * USB interface should be initialized in low speed (1.5Mb/s) mode. * @@ -98,7 +98,7 @@ */ #define USB_DEVICE_OPT_FULLSPEED (0 << 0) #endif - //@} + /**@}*/ #if (!defined(NO_INTERNAL_SERIAL) || defined(__DOXYGEN__)) /** String descriptor index for the device's unique serial number string descriptor within the device. @@ -110,22 +110,25 @@ * On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR and so will force the host to create a pseudo-serial * number for the device. */ - #define USE_INTERNAL_SERIAL 0xDC + #ifndef USE_INTERNAL_SERIAL + #define USE_INTERNAL_SERIAL 0xDC + #endif /** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller * model. */ - #define INTERNAL_SERIAL_LENGTH_BITS (8 * (1 + (offsetof(NVM_PROD_SIGNATURES_t, COORDY1) - offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0)))) + #define INTERNAL_SERIAL_LENGTH_BITS (8 * (1 + (offsetof(NVM_PROD_SIGNATURES_t, COORDY1) - offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0)))) /** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller * model. */ - #define INTERNAL_SERIAL_START_ADDRESS offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0) + #define INTERNAL_SERIAL_START_ADDRESS offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0) #else - #define USE_INTERNAL_SERIAL NO_DESCRIPTOR + #undef USE_INTERNAL_SERIAL + #define USE_INTERNAL_SERIAL NO_DESCRIPTOR - #define INTERNAL_SERIAL_LENGTH_BITS 0 - #define INTERNAL_SERIAL_START_ADDRESS 0 + #define INTERNAL_SERIAL_LENGTH_BITS 0 + #define INTERNAL_SERIAL_START_ADDRESS 0 #endif /* Function Prototypes: */ diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c index 421d717..6a9ac09 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length, else { Endpoint_Discard_8(); - - Length--; BytesInTransfer++; } } @@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed) { uint8_t ErrorCode; - uint16_t BytesInTransfer = 0; + uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0; if ((ErrorCode = Endpoint_WaitUntilReady())) return ErrorCode; - if (BytesProcessed != NULL) - Length -= *BytesProcessed; - - while (Length) + while (BytesInTransfer < Length) { if (!(Endpoint_IsReadWriteAllowed())) { @@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, if (BytesProcessed != NULL) { - *BytesProcessed += BytesInTransfer; + *BytesProcessed = BytesInTransfer; return ENDPOINT_RWSTREAM_IncompleteTransfer; } @@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, else { Endpoint_Write_8(0); - - Length--; BytesInTransfer++; } } diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h index cba6537..d1e3241 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -67,7 +67,7 @@ /* Public Interface - May be used in end-application: */ /* Function Prototypes: */ /** \name Stream functions for null data */ - //@{ + /**@{*/ /** Reads and discards the given number of bytes from the currently selected endpoint's bank, * discarding fully read packets from the host as needed. The last packet is not automatically @@ -175,10 +175,10 @@ uint8_t Endpoint_Null_Stream(uint16_t Length, uint16_t* const BytesProcessed); - //@} + /**@}*/ /** \name Stream functions for RAM source/destination data */ - //@{ + /**@{*/ /** Writes the given number of bytes to the endpoint from the given buffer in little endian, * sending full packets to the host as needed. The last packet filled is not automatically sent; @@ -425,10 +425,10 @@ */ uint8_t Endpoint_Read_Control_Stream_BE(void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for EEPROM source/destination data */ - //@{ + /**@{*/ /** EEPROM buffer source version of \ref Endpoint_Write_Stream_LE(). * @@ -565,10 +565,10 @@ */ uint8_t Endpoint_Read_Control_EStream_BE(void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /** \name Stream functions for PROGMEM source/destination data */ - //@{ + /**@{*/ /** FLASH buffer source version of \ref Endpoint_Write_Stream_LE(). * @@ -645,7 +645,7 @@ */ uint8_t Endpoint_Write_Control_PStream_BE(const void* const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - //@} + /**@}*/ /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c index 8155ecf..36873ae 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h index 42c476b..9407403 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c index c467733..1ce9029 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c index c467733..1ce9029 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c similarity index 92% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c index 69f369e..1eb2837 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c index 0bd3843..b8648d3 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c index 703f253..8c05b40 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c similarity index 95% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c index d51afdf..757876f 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c index 9958980..c30fa4e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h index 15d4eec..4de25ca 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -108,7 +108,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name USB Controller Option Masks */ - //@{ + /**@{*/ /** Sets the USB bus interrupt priority level to be low priority. The USB bus interrupt is used for Start of Frame events, bus suspend * and resume events, bus reset events and other events related to the management of the USB bus. */ @@ -129,7 +129,7 @@ /** Sets the USB controller to source its clock from the internal PLL. */ #define USB_OPT_PLLCLKSRC (1 << 3) - //@} + /**@}*/ #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__) /** Constant for the maximum software timeout period of the USB data stream transfer functions diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c index f03f3f2..5779bd6 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h index e224e22..a54886e 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/USB.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/USB.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/USB.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/USB.h index a8df26f..785dc0d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Drivers/USB/USB.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Drivers/USB/USB.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -410,6 +410,7 @@ #include "Class/AndroidAccessoryClass.h" #include "Class/AudioClass.h" + #include "Class/CCIDClass.h" #include "Class/CDCClass.h" #include "Class/HIDClass.h" #include "Class/MassStorageClass.h" diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/License.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/License.txt similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/License.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/License.txt index 8d4ad75..6937104 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/License.txt +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/License.txt @@ -1,5 +1,5 @@ LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/Platform.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/Platform.h similarity index 97% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/Platform.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/Platform.h index a9eedeb..f276d7d 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/Platform.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/Platform.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/ClockManagement.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/ClockManagement.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/ClockManagement.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/ClockManagement.h index fb06262..4119101 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/ClockManagement.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/ClockManagement.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/Exception.S b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/Exception.S similarity index 96% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/Exception.S rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/Exception.S index 3a5f240..b3c6850 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/Exception.S +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/Exception.S @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.c b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.c similarity index 94% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.c rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.c index 80d193f..4a75143 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.c +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.h similarity index 98% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.h index 90198cd..8c25bcd 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/InterruptManagement.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/InterruptManagement.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/UC3ExperimentalInfo.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/UC3ExperimentalInfo.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/UC3/UC3ExperimentalInfo.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/UC3/UC3ExperimentalInfo.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/XMEGA/ClockManagement.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/XMEGA/ClockManagement.h similarity index 99% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/XMEGA/ClockManagement.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/XMEGA/ClockManagement.h index 9edaa72..63da717 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/XMEGA/ClockManagement.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/XMEGA/ClockManagement.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt b/avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/Version.h b/avr/bootloaders/lufa-LUFA-170418/LUFA/Version.h similarity index 63% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/Version.h rename to avr/bootloaders/lufa-LUFA-170418/LUFA/Version.h index 264c941..327b278 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/Version.h +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/Version.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2014. + Copyright (C) Dean Camera, 2020. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2020 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -42,11 +42,26 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ - /** Indicates the version number of the library, as an integer. */ - #define LUFA_VERSION_INTEGER 0x140928 + /** \name LUFA Release Type Constants */ + /**@{*/ + /** Constant for \ref LUFA_VERSION_RELEASE_TYPE indicating a development release. */ + #define LUFA_VERSION_RELEASE_TYPE_DEVELOPMENT 0 - /** Indicates the version number of the library, as a string. */ - #define LUFA_VERSION_STRING "140928" + /** Constant for \ref LUFA_VERSION_RELEASE_TYPE indicating a beta release. */ + #define LUFA_VERSION_RELEASE_TYPE_BETA 1 + + /** Constant for \ref LUFA_VERSION_RELEASE_TYPE indicating a full official release. */ + #define LUFA_VERSION_RELEASE_TYPE_FULL 2 + /**@}*/ + + /** Indicates the version number of the library, as an integer. \note This value is only updates in non-development releases. */ + #define LUFA_VERSION_INTEGER 0x170418 + + /** Indicates the version number of the library, as a string. \note This value is only updates in non-development releases. */ + #define LUFA_VERSION_STRING "170418" + + /** Indicates the release type of the library. */ + #define LUFA_VERSION_RELEASE_TYPE LUFA_VERSION_RELEASE_TYPE_DEVELOPMENT #endif diff --git a/avr/bootloaders/lufa-LUFA-140928/LUFA/doxyfile b/avr/bootloaders/lufa-LUFA-170418/LUFA/doxyfile similarity index 82% rename from avr/bootloaders/lufa-LUFA-140928/LUFA/doxyfile rename to avr/bootloaders/lufa-LUFA-170418/LUFA/doxyfile index 77e8def..8376b50 100644 --- a/avr/bootloaders/lufa-LUFA-140928/LUFA/doxyfile +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.8.8 +# Doxyfile 1.8.18 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -17,11 +17,11 @@ # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 @@ -46,10 +46,10 @@ PROJECT_NUMBER = 000000 PROJECT_BRIEF = -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in -# the documentation. The maximum height of the logo should not exceed 55 pixels -# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo -# to the output directory. +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. PROJECT_LOGO = ./DoxygenPages/Images/LUFA_thumb.png @@ -60,7 +60,7 @@ PROJECT_LOGO = ./DoxygenPages/Images/LUFA_thumb.png OUTPUT_DIRECTORY = ./Documentation/ -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where @@ -93,14 +93,22 @@ ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -145,7 +153,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -189,6 +197,16 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus @@ -215,9 +233,9 @@ MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a -# new page for each member. If set to NO, the documentation of a member will be -# part of the file/class/namespace that contains it. +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO @@ -236,16 +254,15 @@ TAB_SIZE = 4 # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) ALIASES = -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all @@ -274,19 +291,28 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. # -# Note For files without extension you can use no_extension as a placeholder. +# Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. @@ -295,7 +321,7 @@ EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. +# documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. @@ -303,10 +329,19 @@ EXTENSION_MAPPING = MARKDOWN_SUPPORT = NO +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by by putting a % sign in front of the word -# or globally by setting AUTOLINK_SUPPORT to NO. +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES @@ -328,7 +363,7 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. @@ -346,13 +381,20 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first +# tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent @@ -411,7 +453,7 @@ LOOKUP_CACHE_SIZE = 0 # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -421,35 +463,41 @@ LOOKUP_CACHE_SIZE = 0 EXTRACT_ALL = YES -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = YES -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO -# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES -# This flag is only useful for Objective-C code. When set to YES local methods, +# This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO only methods in the interface are +# included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. @@ -474,21 +522,21 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set -# to NO these classes will be included in the various overviews. This option has -# no effect if EXTRACT_ALL is enabled. +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO these declarations will be -# included in the documentation. +# declarations. If set to NO, these declarations will be included in the +# documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO these +# documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -502,21 +550,28 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES upper-case letters are also +# names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. +# (including Cygwin) ands Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES the +# their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -544,14 +599,14 @@ INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. +# name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. Note that +# name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. @@ -596,27 +651,25 @@ SORT_BY_SCOPE_NAME = NO STRICT_PROTO_MATCHING = YES -# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the -# todo list. This list is created by putting \todo commands in the -# documentation. +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = NO -# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the -# test list. This list is created by putting \test commands in the -# documentation. +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = NO -# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = NO -# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. @@ -641,8 +694,8 @@ ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 1 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES the list -# will mention the files that were used to generate the documentation. +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES @@ -687,7 +740,7 @@ LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. @@ -706,7 +759,7 @@ CITE_BIB_FILES = QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -714,7 +767,7 @@ QUIET = YES WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. @@ -731,12 +784,19 @@ WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO doxygen will only warn about wrong or incomplete parameter -# documentation, but not about the absence of documentation. +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. # The default value is: NO. WARN_NO_PARAMDOC = YES +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated @@ -760,7 +820,7 @@ WARN_LOGFILE = # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with -# spaces. +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = ./ @@ -768,7 +828,7 @@ INPUT = ./ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of # possible encodings. # The default value is: UTF-8. @@ -776,12 +836,19 @@ INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.h \ *.txt @@ -800,7 +867,7 @@ RECURSIVE = YES # run. EXCLUDE = Documentation/ \ - StudioIntegration/ \ + Build/ \ License.txt # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or @@ -872,6 +939,10 @@ IMAGE_PATH = ./ # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. INPUT_FILTER = @@ -881,11 +952,15 @@ INPUT_FILTER = # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER ) will also be used to filter the input files that are used for +# INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. @@ -933,7 +1008,7 @@ INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. +# entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO @@ -945,7 +1020,7 @@ REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. @@ -965,12 +1040,12 @@ SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version +# (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # @@ -992,13 +1067,13 @@ USE_HTAGS = NO VERBATIM_HEADERS = NO -# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. +# generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO @@ -1011,6 +1086,16 @@ CLANG_ASSISTED_PARSING = NO CLANG_OPTIONS = +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1041,7 +1126,7 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES @@ -1107,10 +1192,10 @@ HTML_STYLESHEET = # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefor more robust against future updates. +# standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra stylesheet files is of importance (e.g. the last -# stylesheet in the list overrules the setting of the previous ones in the +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1127,9 +1212,9 @@ HTML_EXTRA_STYLESHEET = ./DoxygenPages/Style/Style.css HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the stylesheet and background images according to +# will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. @@ -1158,12 +1243,24 @@ HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. @@ -1187,13 +1284,13 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1232,7 +1329,7 @@ DOCSET_PUBLISHER_NAME = DeanCamera # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output @@ -1255,28 +1352,28 @@ GENERATE_HTMLHELP = NO CHM_FILE = ../LUFA.chm # The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = -# The GENERATE_CHI flag controls if a separate .chi index file is generated ( -# YES) or that it should be included in the master .chm file ( NO). +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = -# The BINARY_TOC flag controls whether a binary table of contents is generated ( -# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1308,7 +1405,7 @@ QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1316,7 +1413,7 @@ QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1325,7 +1422,7 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1333,7 +1430,7 @@ QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1341,7 +1438,7 @@ QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = @@ -1390,7 +1487,7 @@ DISABLE_INDEX = YES # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has @@ -1418,13 +1515,24 @@ ENUM_VALUES_PER_LINE = 1 TREEVIEW_WIDTH = 300 -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png The default and svg Looks nicer but requires the +# pdf2svg tool. +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML @@ -1434,7 +1542,7 @@ EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # @@ -1445,9 +1553,15 @@ FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. @@ -1473,8 +1587,8 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax @@ -1516,7 +1630,7 @@ MATHJAX_CODEFILE = SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a web server instead of a web client using Javascript. There +# implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH # setting. When disabled, doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing @@ -1533,9 +1647,9 @@ SERVER_BASED_SEARCH = NO # external search engine pointed to by the SEARCHENGINE_URL option to obtain the # search results. # -# Doxygen ships with an example indexer ( doxyindexer) and search engine +# Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). +# Xapian (see: https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1546,9 +1660,9 @@ EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will return the search results when EXTERNAL_SEARCH is enabled. # -# Doxygen ships with an example indexer ( doxyindexer) and search engine +# Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Xapian (see: https://xapian.org/). See the section "External Indexing and # Searching" for details. # This tag requires that the tag SEARCHENGINE is set to YES. @@ -1584,7 +1698,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -1600,22 +1714,36 @@ LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. # -# Note that when enabling USE_PDFLATEX this option is only used for generating -# bitmaps for formulas in the HTML output, but not in the Makefile that is -# written to the output directory. -# The default file is: latex. +# Note that when not enabling USE_PDFLATEX the default is latex when enabling +# USE_PDFLATEX the default is pdflatex and when in the later case latex is +# chosen this is overwritten by pdflatex. For specific output languages the +# default can have been set differently, this depends on the implementation of +# the output language. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate # index for LaTeX. +# Note: This tag is used in the Makefile / make.bat. +# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file +# (.tex). # The default file is: makeindex. # This tag requires that the tag GENERATE_LATEX is set to YES. MAKEINDEX_CMD_NAME = makeindex -# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX +# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to +# generate index for LaTeX. In case there is no backslash (\) as first character +# it will be automatically added in the LaTeX code. +# Note: This tag is used in the generated output file (.tex). +# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. +# The default value is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_MAKEINDEX_CMD = makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1630,12 +1758,15 @@ COMPACT_LATEX = NO # The default value is: a4. # This tag requires that the tag GENERATE_LATEX is set to YES. -PAPER_TYPE = a4wide +PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names -# that should be included in the LaTeX output. To get the times font for -# instance you can specify -# EXTRA_PACKAGES=times +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} # If left blank no extra packages will be included. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1650,9 +1781,9 @@ EXTRA_PACKAGES = # Note: Only use a user-defined header if you know what you are doing! The # following commands have a special meaning inside the header: $title, # $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empy string, -# for the replacement values of the other commands the user is refered to -# HTML_HEADER. +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HEADER = @@ -1668,6 +1799,17 @@ LATEX_HEADER = LATEX_FOOTER = +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the LATEX_OUTPUT output # directory. Note that the files will be copied as-is; there are no commands or @@ -1686,7 +1828,7 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate -# the PDF file directly from the LaTeX files. Set this option to YES to get a +# the PDF file directly from the LaTeX files. Set this option to YES, to get a # higher quality PDF documentation. # The default value is: YES. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1721,17 +1863,33 @@ LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. # The default value is: plain. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_BIB_STYLE = plain +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_TIMESTAMP = NO + +# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) +# path from which the emoji images will be read. If a relative path is entered, +# it will be relative to the LATEX_OUTPUT directory. If left blank the +# LATEX_OUTPUT directory will be used. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EMOJI_DIRECTORY = + #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -1746,7 +1904,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1766,9 +1924,9 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's config -# file, i.e. a series of assignments. You only have to provide replacements, -# missing definitions are set to their default value. +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# configuration file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the # default style sheet that doxygen normally uses. @@ -1777,17 +1935,27 @@ RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's config file. A template extensions file can be generated -# using doxygen -e rtf extensionFile. +# similar to doxygen's configuration file. A template extensions file can be +# generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_EXTENSIONS_FILE = +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_SOURCE_CODE = NO + #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -1831,7 +1999,7 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. @@ -1845,7 +2013,7 @@ GENERATE_XML = NO XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -1854,11 +2022,18 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# namespace members in file scope as well, matching the HTML output. +# The default value is: NO. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_NS_MEMB_FILE_SCOPE = NO + #--------------------------------------------------------------------------- # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -1872,7 +2047,7 @@ GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -# If the DOCBOOK_PROGRAMLISTING tag is set to YES doxygen will include the +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the # program listings (including syntax highlighting and cross-referencing # information) to the DOCBOOK output. Note that enabling this will significantly # increase the size of the DOCBOOK output. @@ -1885,10 +2060,10 @@ DOCBOOK_PROGRAMLISTING = NO # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen -# Definitions (see http://autogen.sf.net) file that captures the structure of -# the code including all documentation. Note that this feature is still -# experimental and incomplete at the moment. +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# the structure of the code including all documentation. Note that this feature +# is still experimental and incomplete at the moment. # The default value is: NO. GENERATE_AUTOGEN_DEF = NO @@ -1897,7 +2072,7 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -1905,7 +2080,7 @@ GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -1913,9 +2088,9 @@ GENERATE_PERLMOD = NO PERLMOD_LATEX = NO -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely # formatted so it can be parsed by a human reader. This is useful if you want to -# understand what is going on. On the other hand, if this tag is set to NO the +# understand what is going on. On the other hand, if this tag is set to NO, the # size of the Perl module output will be much smaller and Perl will parse it # just the same. # The default value is: YES. @@ -1935,14 +2110,14 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names -# in the source code. If set to NO only conditional compilation will be +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. # The default value is: NO. @@ -1958,7 +2133,7 @@ MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES -# If the SEARCH_INCLUDES tag is set to YES the includes files in the +# If the SEARCH_INCLUDES tag is set to YES, the include files in the # INCLUDE_PATH will be searched if a #include is found. # The default value is: YES. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. @@ -2037,37 +2212,32 @@ TAGFILES = GENERATE_TAGFILE = -# If the ALLEXTERNALS tag is set to YES all external class will be listed in the -# class index. If set to NO only the inherited external classes will be listed. +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. # The default value is: NO. ALLEXTERNALS = NO -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in -# the modules index. If set to NO, only the current project's groups will be +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be # listed. # The default value is: YES. EXTERNAL_GROUPS = YES -# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in # the related pages index. If set to NO, only the current project's pages will # be listed. # The default value is: YES. EXTERNAL_PAGES = YES -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of 'which perl'). -# The default file (with absolute path) is: /usr/bin/perl. - -PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram # (in HTML and LaTeX) for classes with base or super classes. Setting the tag to # NO turns the diagrams off. Note that this option also works with HAVE_DOT # disabled, but it is recommended to install and use dot, since it yields more @@ -2076,15 +2246,6 @@ PERL_PATH = /usr/bin/perl CLASS_DIAGRAMS = NO -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see: -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. @@ -2092,7 +2253,7 @@ MSCGEN_PATH = DIA_PATH = -# If set to YES, the inheritance and collaboration graphs will hide inheritance +# If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. @@ -2165,7 +2326,7 @@ COLLABORATION_GRAPH = NO GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2217,7 +2378,8 @@ INCLUDED_BY_GRAPH = YES # # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2228,7 +2390,8 @@ CALL_GRAPH = NO # # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2251,11 +2414,15 @@ GRAPHICAL_HIERARCHY = NO DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). -# Possible values are: png, jpg, gif and svg. +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. # The default value is: png. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2303,10 +2470,19 @@ DIAFILE_DIRS = # PlantUML is not used or called during a preprocessing step. Doxygen will # generate a warning when it encounters a \startuml command in this case and # will not generate output for the diagram. -# This tag requires that the tag HAVE_DOT is set to YES. PLANTUML_JAR_PATH = +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes # larger than this value, doxygen will truncate the graph, which is visualized @@ -2343,7 +2519,7 @@ MAX_DOT_GRAPH_DEPTH = 2 DOT_TRANSPARENT = YES -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support # this, this feature is disabled by default. @@ -2360,7 +2536,7 @@ DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot # files that are used to generate the various graphs. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. diff --git a/avr/bootloaders/lufa-LUFA-170418/LUFA/makefile b/avr/bootloaders/lufa-LUFA-170418/LUFA/makefile new file mode 100644 index 0000000..e3ccb4b --- /dev/null +++ b/avr/bootloaders/lufa-LUFA-170418/LUFA/makefile @@ -0,0 +1,40 @@ +# +# LUFA Library +# Copyright (C) Dean Camera, 2020. +# +# dean [at] fourwalledcubicle [dot] com +# www.lufa-lib.org +# +# --------------------------------------- +# Makefile for the LUFA library itself. +# --------------------------------------- + +LUFA_VERSION_NUM := $(shell grep LUFA_VERSION_STRING Version.h | cut -d'"' -f2) + +# Default target - no default action when attempting to build the core directly +all: + +# Display the LUFA version of this library copy +version: + @echo "LUFA $(LUFA_VERSION_NUM)" + +LUFA_PATH := . +ARCH := {AVR8,UC3,XMEGA} +DOXYGEN_OVERRIDE_PARAMS := QUIET=YES PROJECT_NUMBER=$(LUFA_VERSION_NUM) + +# Remove all object and associated files from the LUFA library core +clean: + rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o) + rm -f $(LUFA_SRC_ALL_FILES:%.c=%.d) + rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst) + +# Include LUFA-specific DMBS extension modules +DMBS_LUFA_PATH ?= $(LUFA_PATH)/Build/LUFA +include $(DMBS_LUFA_PATH)/lufa-sources.mk + +# Include common DMBS build system modules +DMBS_PATH ?= $(LUFA_PATH)/Build/DMBS/DMBS +include $(DMBS_PATH)/core.mk +include $(DMBS_PATH)/doxygen.mk + +.PHONY: all version diff --git a/avr/bootloaders/lufa-LUFA-140928/README.txt b/avr/bootloaders/lufa-LUFA-170418/README.txt similarity index 100% rename from avr/bootloaders/lufa-LUFA-140928/README.txt rename to avr/bootloaders/lufa-LUFA-170418/README.txt diff --git a/avr/bootloaders/lufa-LUFA-140928/makefile b/avr/bootloaders/lufa-LUFA-170418/makefile similarity index 83% rename from avr/bootloaders/lufa-LUFA-140928/makefile rename to avr/bootloaders/lufa-LUFA-170418/makefile index 880c0cf..a415fbe 100644 --- a/avr/bootloaders/lufa-LUFA-140928/makefile +++ b/avr/bootloaders/lufa-LUFA-170418/makefile @@ -1,6 +1,6 @@ # # LUFA Library -# Copyright (C) Dean Camera, 2014. +# Copyright (C) Dean Camera, 2020. # # dean [at] fourwalledcubicle [dot] com # www.lufa-lib.org @@ -9,7 +9,6 @@ # Makefile to build the LUFA library, projects and demos. # Call with "make all" to rebuild everything, "make clean" to clean everything, -# "make mostlyclean" to remove all intermediary files but preserve any binaries, # "make doxygen" to document everything with Doxygen (if installed). Call # "make help" for additional target build information within a specific project. From 729dd4eff28e4b1fbac7a6fe5edd20dcd9f14c1a Mon Sep 17 00:00:00 2001 From: Jonathan Vetter Date: Sat, 24 Jul 2021 18:24:31 +0200 Subject: [PATCH 2/4] Add SoftwareReset to replace the capacitor by a resistor --- avr/bootloaders/HoodLoader2/Board/Board.h | 46 +++++++++++++++++------ avr/bootloaders/HoodLoader2/makefile | 11 ++++++ 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/avr/bootloaders/HoodLoader2/Board/Board.h b/avr/bootloaders/HoodLoader2/Board/Board.h index 9869ed7..441268b 100644 --- a/avr/bootloaders/HoodLoader2/Board/Board.h +++ b/avr/bootloaders/HoodLoader2/Board/Board.h @@ -150,7 +150,8 @@ extern "C" { #define AVR_RESET_LINE_DDR DDRD #define AVR_RESET_LINE_PIN PIND #define AVR_RESET_LINE_MASK (1 << PD4) // PD4 = D4, PD6 = D12, PD7 = D7 - + + /* Pin that is used to de-/activate (0/1) Autoreset */ #define AUTORESET_PORT PORTB #define AUTORESET_DDR DDRB #define AUTORESET_PIN PINB @@ -171,8 +172,25 @@ extern "C" { static inline void Board_Reset(bool reset) { + #ifdef AUTORESET_JUMPER + if(!(AUTORESET_PIN & AUTORESET_MASK)) + return; + #endif + if (reset) + { AVR_RESET_LINE_PORT &= ~AVR_RESET_LINE_MASK; + #ifdef USING_SOFTWARE_RESET + // Changing this delay to specific values between 3 and 42 μs saves some bytes of flash (due to perfect timer interrupt) + // 4 Bytes for 3, 6, 12, 18, 24, 30, 36, 42 μs + // 6 Bytes for 1, 2, 5, 7, 8, 10, 20, 40, 46, μs, + // 10 Bytes for 200, 500, 1000 μs (values > 48 μs) + // 1, 2, 3, 5, 12, 20, 40, 200, 500 μs values tested with Arduino Uno R3 @ 16 MHz, so the valid range is: 1 to 500 μs; values like 800, 1000 μs didn't work for me + // 12 μs seams to bee a good default value + _delay_us(12); // wait 12 microsecords to reset main MCU on boards with resistor instead of capacitor on reset line + AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; + #endif + } else AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; } @@ -186,16 +204,18 @@ extern "C" { // Arduino Uno/Mega 8/16/32u2 #else - /** Pin that can reset the main MCU. */ + /* Pin that can reset the main MCU. */ #define AVR_RESET_LINE_PORT PORTD #define AVR_RESET_LINE_DDR DDRD #define AVR_RESET_LINE_PIN PIND #define AVR_RESET_LINE_MASK (1 << PD7) + /* Pin that is used to de-/activate (0/1) Autoreset */ #define AUTORESET_PORT PORTB #define AUTORESET_DDR DDRB #define AUTORESET_PIN PINB #define AUTORESET_MASK (1 << PB6) // D6 + /* Inline Functions: */ #if !defined(__DOXYGEN__) @@ -211,20 +231,24 @@ extern "C" { #ifdef AUTORESET_JUMPER if(!(AUTORESET_PIN & AUTORESET_MASK)) return; - - if (reset) - AVR_RESET_LINE_PORT &= ~AVR_RESET_LINE_MASK; - else - AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; + #endif - #else - if (reset) + { AVR_RESET_LINE_PORT &= ~AVR_RESET_LINE_MASK; + #ifdef USING_SOFTWARE_RESET + // Changing this delay to specific values between 3 and 42 μs saves some bytes of flash (due to perfect timer interrupt) + // 4 Bytes for 3, 6, 12, 18, 24, 30, 36, 42 μs + // 6 Bytes for 1, 2, 5, 7, 8, 10, 20, 40, 46, μs, + // 10 Bytes for 200, 500, 1000 μs (values > 48 μs) + // 1, 2, 3, 5, 12, 20, 40, 200, 500 μs values tested with Arduino Uno R3 @ 16 MHz, so the valid range is: 1 to 500 μs; values like 800, 1000 μs didn't work for me + // 12 μs seams to bee a good default value + _delay_us(12); // wait 12 microsecords to reset main MCU on boards with resistor instead of capacitor on reset line + AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; + #endif + } else AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; - - #endif } static inline void Board_Erase(bool erase) diff --git a/avr/bootloaders/HoodLoader2/makefile b/avr/bootloaders/HoodLoader2/makefile index 8b70681..e02465f 100644 --- a/avr/bootloaders/HoodLoader2/makefile +++ b/avr/bootloaders/HoodLoader2/makefile @@ -61,6 +61,17 @@ HOODLOADER2_OPTS += -DPOWER_ON_TO_BOOTLOADER=false # Pull the pin low to disable autoreset. You may change the pin in the Board.h file #HOODLOADER2_OPTS += -DAUTORESET_JUMPER + +# Arduino modifications to support DebugWire: +# SoftwareReset: +# Due to SoftwareReset it is possible to optionally replace the capacitor +# between DTR (pin 20) of the USB MCU and RESET pin (PB6) of the main MCU by a resistor. +# This enables ISP programming without a bypass capacitor of 10 μF +# which is usually needed to be connected to main MCU's RESET and GND. +# Furthermore it does not affect upload to Arduinos with capacitor! (==> enabled by default) +HOODLOADER2_OPTS += -DUSING_SOFTWARE_RESET # needs 4 Bytes of flash memory only + + # Bootkey locations # 2nd Bootkey is not used for 32u4 devices (due to flash size) # 2nd Bootkey option only makes sense if you compile with the old programming speed 57600 From 5518e3f64ca7e99b10bc2fbc302d842097a7cd9e Mon Sep 17 00:00:00 2001 From: Jonathan Vetter Date: Sat, 24 Jul 2021 23:49:38 +0200 Subject: [PATCH 3/4] Add PowerSwitch to switch on/off the target mcu --- avr/bootloaders/HoodLoader2/Board/Board.h | 31 +++++++++++++++++++++++ avr/bootloaders/HoodLoader2/makefile | 9 +++++++ 2 files changed, 40 insertions(+) diff --git a/avr/bootloaders/HoodLoader2/Board/Board.h b/avr/bootloaders/HoodLoader2/Board/Board.h index 441268b..1c6e570 100644 --- a/avr/bootloaders/HoodLoader2/Board/Board.h +++ b/avr/bootloaders/HoodLoader2/Board/Board.h @@ -156,11 +156,27 @@ extern "C" { #define AUTORESET_DDR DDRB #define AUTORESET_PIN PINB #define AUTORESET_MASK (1 << PB4) // D8 + + /* Pin that can power the main MCU */ + #define AVR_VCCEN_LINE_PORT PORTB + #define AVR_VCCEN_LINE_DDR DDRB + #define AVR_VCCEN_LINE_PIN PINB + #define AVR_VCCEN_LINE_MASK (1 << PB5) // D9 /* Inline Functions: */ #if !defined(__DOXYGEN__) static inline void Board_Init(void) { + /* switch on the main MCU */ + #ifdef WITH_VCC_ENABLE + // when switching is done via pullup/input pin can stay input (saves 2 bytes) + AVR_VCCEN_LINE_DDR |= AVR_VCCEN_LINE_MASK; // Set VCCEN pin to output + #if(VCCEN_ACTIVE_HIGH) + AVR_VCCEN_LINE_PORT |= AVR_VCCEN_LINE_MASK; // VCCEN is HIGH active (n-ch mosfet) + #else + AVR_VCCEN_LINE_PORT &= ~AVR_VCCEN_LINE_MASK; // VCCEN is LOW active (p-ch mosfet) + #endif + #endif // We use = here since the pins should be input/low anyways. // This saves us some more bytes for flash DDRD = LEDMASK_TX | (1 << PD3) | AVR_RESET_LINE_MASK; @@ -216,11 +232,26 @@ extern "C" { #define AUTORESET_PIN PINB #define AUTORESET_MASK (1 << PB6) // D6 + /* Pin that can power the main MCU */ + #define AVR_VCCEN_LINE_PORT PORTB + #define AVR_VCCEN_LINE_DDR DDRB + #define AVR_VCCEN_LINE_PIN PINB + #define AVR_VCCEN_LINE_MASK (1 << PB5) // D5 /* Inline Functions: */ #if !defined(__DOXYGEN__) static inline void Board_Init(void) { + /* switch on the main MCU */ + #ifdef WITH_VCC_ENABLE + // when switching is done via pullup/input pin can stay input (saves 2 bytes) + AVR_VCCEN_LINE_DDR |= AVR_VCCEN_LINE_MASK; // Set VCCEN pin to output + #if(VCCEN_ACTIVE_HIGH) + AVR_VCCEN_LINE_PORT |= AVR_VCCEN_LINE_MASK; // VCCEN is HIGH active (n-ch mosfet) + #else + AVR_VCCEN_LINE_PORT &= ~AVR_VCCEN_LINE_MASK; // VCCEN is LOW active (p-ch mosfet) + #endif + #endif DDRD |= LEDS_ALL_LEDS | (1 << PD3) | AVR_RESET_LINE_MASK; PORTD |= AVR_RESET_LINE_MASK; PORTD |= (1 << PD2); diff --git a/avr/bootloaders/HoodLoader2/makefile b/avr/bootloaders/HoodLoader2/makefile index e02465f..de6541f 100644 --- a/avr/bootloaders/HoodLoader2/makefile +++ b/avr/bootloaders/HoodLoader2/makefile @@ -71,6 +71,15 @@ HOODLOADER2_OPTS += -DPOWER_ON_TO_BOOTLOADER=false # Furthermore it does not affect upload to Arduinos with capacitor! (==> enabled by default) HOODLOADER2_OPTS += -DUSING_SOFTWARE_RESET # needs 4 Bytes of flash memory only +# PowerSwitch: +# A Mosfet is soldered between +5V and the output of the voltage regulator +# to switch on/off power supply of the main MCU by software running on USB MCU. +# Besides the power supply of the USB MCU is not affected. +# The default VCCEN pin to control the active low p-channel mosfet is PB5. (set to output!!!) +#HOODLOADER2_OPTS += -DWITH_VCC_ENABLE +# change this to true for n-ch Mosfet (tricky to use because of n-channels inflated GS-Voltage) +#HOODLOADER2_OPTS += -DVCCEN_ACTIVE_HIGH=false # false (default) for p-ch Mosfet (recommanded) + # Bootkey locations # 2nd Bootkey is not used for 32u4 devices (due to flash size) From e05b41e1558d1bdc57b3852dcd0f2f8cf6a77ce4 Mon Sep 17 00:00:00 2001 From: Jonathan Vetter Date: Wed, 10 Nov 2021 12:29:00 +0100 Subject: [PATCH 4/4] Add hexfiles that support SoftwareReset for Uno, Mega, Micro and Leonardo --- avr/boards.txt | 24 +- .../HoodLoader2_0_6_Leonardo_atmega32u4.hex | 256 ++++++++++++++++++ .../HoodLoader2_0_6_Mega_at90usb162.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Mega_at90usb82.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Mega_atmega16u2.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Mega_atmega32u2.hex | 253 +++++++++++++++++ .../HoodLoader2_0_6_Mega_atmega8u2.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Micro_atmega32u4.hex | 256 ++++++++++++++++++ .../HoodLoader2_0_6_Uno_at90usb162.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Uno_at90usb82.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Uno_atmega16u2.hex | 255 +++++++++++++++++ .../HoodLoader2_0_6_Uno_atmega32u2.hex | 253 +++++++++++++++++ .../HoodLoader2_0_6_Uno_atmega8u2.hex | 255 +++++++++++++++++ .../HoodLoader2_0_5_Leonardo_atmega32u4.hex | 0 .../HoodLoader2_0_5_Mega_at90usb162.hex | 0 .../HoodLoader2_0_5_Mega_at90usb82.hex | 0 .../HoodLoader2_0_5_Mega_atmega16u2.hex | 0 .../HoodLoader2_0_5_Mega_atmega32u2.hex | 0 .../HoodLoader2_0_5_Mega_atmega8u2.hex | 0 .../HoodLoader2_0_5_Micro_atmega32u4.hex | 0 .../HoodLoader2_0_5_Uno_at90usb162.hex | 0 .../HoodLoader2_0_5_Uno_at90usb82.hex | 0 .../HoodLoader2_0_5_Uno_atmega16u2.hex | 0 .../HoodLoader2_0_5_Uno_atmega32u2.hex | 0 .../HoodLoader2_0_5_Uno_atmega8u2.hex | 0 avr/platform.txt | 2 +- 26 files changed, 3071 insertions(+), 13 deletions(-) create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Leonardo_atmega32u4.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb162.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb82.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega16u2.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega32u2.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega8u2.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Micro_atmega32u4.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb162.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb82.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega16u2.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega32u2.hex create mode 100644 avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega8u2.hex rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Leonardo_atmega32u4.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Mega_at90usb162.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Mega_at90usb82.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Mega_atmega16u2.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Mega_atmega32u2.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Mega_atmega8u2.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Micro_atmega32u4.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Uno_at90usb162.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Uno_at90usb82.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Uno_atmega16u2.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Uno_atmega32u2.hex (100%) rename avr/bootloaders/{HexFiles => LegacyVersions}/HoodLoader2_0_5_Uno_atmega8u2.hex (100%) diff --git a/avr/boards.txt b/avr/boards.txt index 0c3c878..0332078 100644 --- a/avr/boards.txt +++ b/avr/boards.txt @@ -46,9 +46,9 @@ HoodLoader2atmega16u2.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEN #Board selection (only important for burning bootloaders) HoodLoader2atmega16u2.menu.board.uno=HoodLoader2 Uno -HoodLoader2atmega16u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_5_Uno_atmega16u2.hex +HoodLoader2atmega16u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_6_Uno_atmega16u2.hex HoodLoader2atmega16u2.menu.board.mega2560=HoodLoader2 Mega -HoodLoader2atmega16u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_5_Mega_atmega16u2.hex +HoodLoader2atmega16u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_6_Mega_atmega16u2.hex HoodLoader2atmega16u2.menu.board.dev=HoodLoader2 Dev HoodLoader2atmega16u2.menu.board.dev.bootloader.file=HoodLoader2/HoodLoader2.hex @@ -120,9 +120,9 @@ HoodLoader2atmega32u2.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEN #Board selection (only important for burning bootloaders) HoodLoader2atmega32u2.menu.board.uno=HoodLoader2 Uno -HoodLoader2atmega32u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_5_Uno_atmega32u2.hex +HoodLoader2atmega32u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_6_Uno_atmega32u2.hex HoodLoader2atmega32u2.menu.board.mega2560=HoodLoader2 Mega -HoodLoader2atmega32u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_5_Mega_32u2.hex +HoodLoader2atmega32u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_6_Mega_32u2.hex HoodLoader2atmega32u2.menu.board.dev=HoodLoader2 Dev HoodLoader2atmega32u2.menu.board.dev.bootloader.file=HoodLoader2/HoodLoader2.hex @@ -179,9 +179,9 @@ HoodLoader2atmega8u2.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEND #Board selection (only important for burning bootloaders) HoodLoader2atmega8u2.menu.board.uno=HoodLoader2 Uno -HoodLoader2atmega8u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_5_Uno_atmega8u2.hex +HoodLoader2atmega8u2.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_6_Uno_atmega8u2.hex HoodLoader2atmega8u2.menu.board.mega2560=HoodLoader2 Mega -HoodLoader2atmega8u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_5_Mega_atmega8u2.hex +HoodLoader2atmega8u2.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_6_Mega_atmega8u2.hex # DFU fuse settings are not suitable for HoodLoader2 HoodLoader2atmega8u2.menu.board.dfu=DFU @@ -237,9 +237,9 @@ HoodLoader2at90usb82.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEND #Board selection (only important for burning bootloaders) HoodLoader2at90usb82.menu.board.uno=HoodLoader2 Uno -HoodLoader2at90usb82.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_5_Uno_at90usb82.hex +HoodLoader2at90usb82.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_6_Uno_at90usb82.hex HoodLoader2at90usb82.menu.board.mega2560=HoodLoader2 Mega -HoodLoader2at90usb82.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_5_Mega_at90usb82.hex +HoodLoader2at90usb82.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_6_Mega_at90usb82.hex # DFU fuse settings are not suitable for HoodLoader2 HoodLoader2at90usb82.menu.board.dfu=DFU @@ -295,9 +295,9 @@ HoodLoader2at90usb162.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEN #Board selection (only important for burning bootloaders) HoodLoader2at90usb162.menu.board.uno=HoodLoader2 Uno -HoodLoader2at90usb162.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_5_Uno_at90usb162.hex +HoodLoader2at90usb162.menu.board.uno.bootloader.file=HexFiles/HoodLoader2_0_6_Uno_at90usb162.hex HoodLoader2at90usb162.menu.board.mega2560=HoodLoader2 Mega -HoodLoader2at90usb162.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_5_Mega_at90usb162.hex +HoodLoader2at90usb162.menu.board.mega2560.bootloader.file=HexFiles/HoodLoader2_0_6_Mega_at90usb162.hex # DFU fuse settings are not suitable for HoodLoader2 HoodLoader2at90usb162.menu.board.dfu=DFU @@ -351,9 +351,9 @@ HoodLoader2atmega32u4.build.extra_flags={build.usb_flags} -DMAGIC_KEY_POS=(RAMEN #Board/Bootloader selection HoodLoader2atmega32u4.menu.board.leo=HoodLoader2 Leonardo -HoodLoader2atmega32u4.menu.board.leo.bootloader.file=HexFiles/HoodLoader2_0_5_Leonardo_atmega32u4.hex +HoodLoader2atmega32u4.menu.board.leo.bootloader.file=HexFiles/HoodLoader2_0_6_Leonardo_atmega32u4.hex HoodLoader2atmega32u4.menu.board.micro=HoodLoader2 Micro -HoodLoader2atmega32u4.menu.board.micro.bootloader.file=HexFiles/HoodLoader2_0_5_Micro_atmega32u4.hex +HoodLoader2atmega32u4.menu.board.micro.bootloader.file=HexFiles/HoodLoader2_0_6_Micro_atmega32u4.hex HoodLoader2atmega32u4.menu.board.micro.build.variant=arduino:micro HoodLoader2atmega32u4.menu.board.micro.build.pid=0x8037 HoodLoader2atmega32u4.menu.board.micro.build.board=AVR_MICRO diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Leonardo_atmega32u4.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Leonardo_atmega32u4.hex new file mode 100644 index 0000000..6e56592 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Leonardo_atmega32u4.hex @@ -0,0 +1,256 @@ +:1070000055C00000B0C00000AEC00000ACC0000021 +:10701000AAC00000A8C00000A6C00000A4C00000D4 +:10702000A2C00000A0C00000CFC100009CC00000B2 +:107030009AC0000098C0000096C0000094C00000F4 +:1070400092C0000090C000008EC000008CC0000004 +:107050008AC0000088C0000086C0000084C0000014 +:1070600082C0000049C4000034C400007CC000009D +:107070007AC0000078C0000076C0000074C0000034 +:1070800072C0000070C000006EC000006CC0000044 +:107090006AC0000068C0000066C0000064C0000054 +:1070A00062C0000060C000005EC0000011241FBE6E +:1070B000CFEFDAE0DEBFCDBF2091FF0A1092FF0ACA +:1070C000909100801092008084B714BE0FB6F8949F +:1070D000A895309160003861309360001092600094 +:1070E0000FBE5D9A289AE0E0F0E0459154914F3F41 +:1070F0005F4F21F181FF18C0273701F19737F1F079 +:1071000087E78093FF0A809300808FEF9EE924E257 +:10711000815090402040E1F700C000001092FF0A2B +:10712000109200804ED10AC080FF02C04AD106C032 +:1071300083FF04C0273711F09737C1F713E0A2E8A7 +:10714000B2E0EEEEFEE702C005900D92AC31B10761 +:10715000D9F723E0ACE1B3E001C01D92AD32B20734 +:10716000E1F7D3D3C2C64CCF8091240387FF0FC071 +:107170008091E80082FD04C08BB58111F9CF10C069 +:107180008091E8008B770AC08BB5882349F0809105 +:10719000E80080FFF9CF8091E8008E778093E800C7 +:1071A00008958F708093E900EBEEF0E080818160BC +:1071B0008083EDEEF0E010826093EC0040838091DC +:1071C000EE00881F8827881F089520912A03309198 +:1071D0002B032617370748F06115710539F4209104 +:1071E000E8002E772093E80001C0B901FC0120E0FF +:1071F0006115710571F18BB58823E9F18530E9F1ED +:107200008091E80083FD3BC08091E80082FD2DC0A5 +:107210008091E80080FFECCF2091F3008091F20094 +:1072200090E0922B6115710551F08830910538F48A +:1072300021912093F100615071090196F3CF21E073 +:10724000089709F020E08091E8008E778093E800AD +:10725000CFCF2111D0CF09C08BB5882361F0853005 +:1072600061F08091E80083FD0AC08091E80082FF10 +:10727000F3CF80E0089582E0089583E0089581E0EF +:107280000895CF935B9A1092C9001092C800109293 +:10729000CA001EBA10922303109222031ABC209136 +:1072A000830230918402409185025091860221151B +:1072B00031054105510519F4109221034FC02115E4 +:1072C00081EE38074105510521F481E080932103C7 +:1072D00045C082E08093210380918802813021F0B3 +:1072E000823021F4C0E203C0C0E301C0C0E080915D +:1072F0008702823009F4C86080918902873031F0BA +:10730000883031F0863029F4C26003C0C46001C007 +:10731000C660DA01C901B695A79597958795BC0116 +:10732000CD0160587B47814E9F4FBDD5215031091B +:1073300020FD04C0211580E1380720F036952795FF +:1073400080E001C082E03093CD002093CC00C09358 +:10735000CA008093C80088E98093C9005B98CF91E8 +:10736000089593E09093E9009BB5992391F0909153 +:10737000E80090FFF9CF8093F10081E0860D8F3314 +:1073800010F4682E0895612C8091E8008E77809328 +:10739000E800089584E08093E9008091E80085FD8D +:1073A0000DC08091E8008B778093E8008091E80021 +:1073B00082FDF3CF8BB58111F9CF02C08091F1002E +:1073C0000895E0E0F0E009941F920F920FB60F923B +:1073D00011242F933F934F935F936F937F938F93DA +:1073E0009F93AF93BF93EF93FF938091DA0080FF59 +:1073F00019C08091D80080FF15C08091DA008E7F7F +:107400008093DA008091D90080FF0AC080E189BDB5 +:1074100082E189BD09B400FEFDCF81E08BBD02C0D1 +:1074200019BC1BBC8091E10080FF16C08091E20076 +:1074300080FF12C08091E2008E7F8093E2008091F5 +:10744000E20080618093E2008091D80080628093A6 +:10745000D80019BC85E08BBD8091E10084FF2DC070 +:107460008091E20084FF29C080E189BD82E189BD6D +:1074700009B400FEFDCF8091D8008F7D8093D800A5 +:107480008091E1008F7E8093E1008091E2008F7E09 +:107490008093E2008091E20081608093E20080911D +:1074A0002C03882311F084E007C08091E30087FD5E +:1074B00002C081E001C083E08BBD8091E10083FFC9 +:1074C00020C08091E20083FF1CC08091E100877F93 +:1074D0008093E10082E08BBD10922C038091E1004B +:1074E0008E7F8093E1008091E2008E7F8093E200A6 +:1074F0008091E20080618093E20042E060E080E001 +:1075000050DEFF91EF91BF91AF919F918F917F914D +:107510006F915F914F913F912F910F900FBE0F9000 +:107520001F9018959FB7F89407B600FCFDCFF99906 +:10753000FECF809529E0E1E0F0E0082E209357008F +:10754000E8959FBF0895E1E0F0E089E0809357005F +:107550008491089529E0FC012093570084910895B7 +:1075600021E2FC01209357008491089507B600FCA6 +:10757000FDCFF999FECF21E0FB010A0120935700CE +:10758000E895112408952FB7F89407B600FCFDCFB5 +:10759000F999FECF35E0FB0130935700E89507B627 +:1075A00000FCFDCF91E190935700E8952FBF08951F +:1075B0002FB7F89407B600FCFDCFF999FECF33E062 +:1075C000FB0130935700E89507B600FCFDCF91E131 +:1075D00090935700E8952FBF08957F928F929F92C6 +:1075E000AF92BF92CF92DF92EF92FF920F931F93D1 +:1075F000CF93DF93612CCEDE082F853419F41092DF +:10760000820207C088E8800F823010F0043521F430 +:10761000C1DE8DE0A6DE36C10035D9F30C34C9F3E6 +:10762000043721F484E49DDE80E0F4CF013611F4C8 +:1076300089E5F0CF0134D1F4ADDEC82FABDE2C2FBD +:1076400030E0322F2227330F90E0880F991F822BD2 +:10765000932B092E000CAA0BBB0B80931D03909358 +:107660001E03A0931F03B0932003D3CF003711F460 +:1076700083E5D0CF033549F4C4E1D3E0899171DECD +:1076800083E0CB31D807D1F7FDC0063521F481E383 +:1076900068DE80E3BFCF033731F487E862DE85E937 +:1076A00060DE8EE1B7CF053691F4C12CD12C760186 +:1076B000C701B6017DDF80E8C80ED11CE11CF11CBA +:1076C000C11480E7D806E104F10491F7A2CF023794 +:1076D00011F439DF9FCF063419F4E0E0F0E009C07F +:1076E0000E3419F4E3E0F0E004C0013539F4E2E0CF +:1076F000F0E089E08093570084918CCF023631F41A +:1077000089E52FDE80E02DDE80E884CF023419F099 +:10771000073609F0B4C03EDEF82E3CDEC82F3ADE54 +:10772000182F8BEB810F823010F08FE373CFD0E0F6 +:10773000DF29073609F03EC000E0BB24B394209750 +:1077400009F4A0C0C0901D03D0901E03E0901F0359 +:10775000F09020031634B9F4E02FF0E0EC29FD2975 +:107760008491FFDD002369F082E0C80ED11CE11C8A +:10777000F11CC0921D03D0921E03E0921F03F092F1 +:1077800020030B2515C0D701C601B695A79597957F +:1077900087956FD3E6DD82E0C80ED11CE11CF11C99 +:1077A000C0921D03D0921E03E0921F03F0922003AB +:1077B0002197C5CF80901D0390901E03A0901F03BA +:1077C000B0902003163419F4C501B401F1DE712C18 +:1077D00000E0209709F44CC0163431F50023E9F09D +:1077E000D9DDC0901D03D0901E03E0901F03F090E0 +:1077F0002003472D50E0582BC701B601B7DE82E0C9 +:10780000C80ED11CE11CF11CC0921D03D0921E03B6 +:10781000E0921F03F092200302C0BCDD782E81E0CD +:10782000011180E0082F22C0B5DD682F80911D0373 +:1078300090911E03A0911F03B0912003B695A795C8 +:10784000979587951ED380911D0390911E03A0915B +:107850001F03B09120030296A11DB11D80931D034B +:1078600090931E03A0931F03B09320032197B1CFE1 +:10787000163409F0CECEC501B40185DECACE0B3177 +:1078800009F053CF662079F083E08093E9008BB54F +:10789000882389F08091E80080FFF9CF8091E8008B +:1078A0008E778093E80084E08093E9008091E8007F +:1078B0008B778093E800DF91CF911F910F91FF901C +:1078C000EF90DF90CF90BF90AF909F908F907F9080 +:1078D00008952F01EEB3F2E031903092CE00EEBB6E +:1078E000F798F2012EB23090230323101895E8E99F +:1078F000E093C900F20118953090CE002F01EAB54F +:10790000F1E03192EABDF201189590E080E80FB6FF +:10791000F89480936100909361000FBE91E095BF51 +:1079200082E085BF8091D8008F7E8093D8008091BF +:10793000D70081608093D70014E012BF90931C039E +:107940008091D8008E7F8093D8001092E200109230 +:10795000DA001092E1008091D8008F778093D800F0 +:107960008091D80080688093D8008091D8008F7D66 +:107970008093D80019BC1BBC10922C038091E000AE +:107980008B7F8093E0008091D80081608093D80045 +:1079900042E060E080E005DC8091E1008E7F809332 +:1079A000E1008091E20081608093E2008091E2003A +:1079B00088608093E2008091E0008E7F8093E000F9 +:1079C0008091D80080618093D80015BD88E38AB982 +:1079D000209A5C9A5A9A7894F12CE12C01E010E0FC +:1079E000DBB41092E9008091E80083FF7EC1E4E2FD +:1079F000F3E08091F100819323E0EC32F207C9F7C4 +:107A000080912403982F9F77913209F06AC090915A +:107A10002503913299F4813A09F063C08091E8001E +:107A2000877F8093E80067E070E083E892E0CDDB39 +:107A30008091E8008B778093E80053C0903209F082 +:107A40003DC0813209F04DC08091E800877F80936E +:107A5000E800E3E8F2E027E0222331F18BB5882348 +:107A600031F1853021F18091E80083FD20C08091C3 +:107A7000E80082FFF1CF3091F3008091F20090E0B6 +:107A8000932B892B29F08091F1008193215099F754 +:107A90008091E8008B778093E800DECF853039F065 +:107AA0008091E80080FD03C08BB58111F7CF8091F4 +:107AB000E8008E778093E800E4DB13C0923289F40B +:107AC000813279F48091E800877F8093E8004CDB75 +:107AD0008091260380FF04C05C9830E43A95F1F76A +:107AE0005C9A8091E80083FFF2C08091240390911A +:107AF0002503953009F46AC030F4913071F168F0D3 +:107B0000933059F1E4C0983009F4A6C0993009F4D3 +:107B1000B5C0963009F0DBC07BC0803899F0823860 +:107B200009F0D5C0809128038F70873008F0CFC04E +:107B30008093E9008091EB0085FB882780F9109203 +:107B4000E90001C080E09091E800977F9093E80001 +:107B50008093F1001092F1008AC0282F2D7F09F048 +:107B6000B6C0823009F0B3C080912603811128C0CD +:107B7000809128038F702FEF280F263008F0A7C0C0 +:107B80008093E9002091EB0020FF1AC0933021F48C +:107B90008091EB00806212C09091EB009061909315 +:107BA000EB00980102C0220F331F8A95E2F7209361 +:107BB000EA001092EA008091EB0088608093EB006D +:107BC0001092E9008091E800877F54C081117FC046 +:107BD000809126038F77C82E8091E30080788C29CE +:107BE0008093E3008091E800877F8093E800BCDA0F +:107BF0008091E80080FFFCCF8091E3008068809353 +:107C0000E300C11002C082E001C083E08BBD5FC011 +:107C10008058823008F05BC08091260330912703A2 +:107C2000C32F90E0D92FC230D10539F0C330D10530 +:107C300049F0219709F04BC0FDC06EE370E084EC81 +:107C400092E00BC1882309F4FAC0813009F4FCC02A +:107C5000823009F03CC0FDC08038C9F58091E80051 +:107C6000877F8093E80080912C038093F1008091BE +:107C7000E8008E778093E80077DA29C0811127C069 +:107C800080912603909127039927029704F580910C +:107C9000E800877F8093E800C0902603C0922C0301 +:107CA00063DAC11006C08091E30087FD02C081E065 +:107CB00001C084E08BBD42E061EC82E072DA46E311 +:107CC00061E883E06EDA42E260E884E06ADA80919B +:107CD000E80083FF0AC08091E800877F8093E80076 +:107CE0008091EB0080628093EB008BB5843079F05B +:107CF00024E0D21275CE1092830210928402109268 +:107D0000850210928602BDDA5D9A289A65CE90911E +:107D10008202911116C08FE99FE00197F1F700C030 +:107D200000008091E00081608093E0009CE088E1A9 +:107D30000FB6F894A895809360000FBE90936000F2 +:107D4000FFCF8093E9008091E80082FF0CC0809112 +:107D5000F3008091F200811107C09091E8009B77B9 +:107D60009093E80001C080E090912103913029F4C4 +:107D7000882309F44DC031DC4BC0923009F048C073 +:107D8000909123032EB3921B90959F778823B1F097 +:107D90009817A0F0F2E0E09123039091F100919305 +:107DA000EF778150D1F78091E8008B778093E800DE +:107DB000E093230388EB8093C90002C09F3719F03A +:107DC000289893E0F92E8AB590912203891B01F13E +:107DD000A89902C08F33C8F093E09093E900909186 +:107DE000E80090FF12C08F3308F08FE3E091220388 +:107DF000F1E091919093F1008150D1F78091E800EA +:107E00008E778093E800E09322035D9883E0E82E6C +:107E1000A89BE6CD81E085BBEE2021F0EA94E1103D +:107E200001C05D9AFF2009F4DBCDFA94F110D8CDA2 +:107E3000289AD6CD62E170E082E093E00EC064E063 +:107E400070E08CEA92E009C062E170E080EB92E0C1 +:107E500004C060E270E08AE892E02091E800277FA9 +:107E60002093E800B2D98091E8008B778093E800F6 +:107E70002ECFF999FECF92BD81BDF89A992780B592 +:107E80000895262FF999FECF92BD81BDF89A0197EA +:107E900000B4021639F01FBA20BD0FB6F894FA9A52 +:107EA000F99A0FBE0895A1E21A2EAA1BBB1BFD0171 +:107EB0000DC0AA1FBB1FEE1FFF1FA217B307E407C9 +:107EC000F50720F0A21BB30BE40BF50B661F771F21 +:107ED000881F991F1A9469F7609570958095909501 +:0E7EE0009B01AC01BD01CF010895F894FFCFC6 +:107EEE000100000000000008200348006F006F0032 +:107EFE0064004C006F006100640065007200320087 +:107F0E0020004C0065006F000000040309041203FA +:107F1E004E00690063006F0048006F006F00640040 +:107F2E00000009023E000201008032090400000137 +:107F3E000202010005240010010424020205240699 +:107F4E000001070582030800FF09040100020A0070 +:107F5E00000007050402200001070583024000010E +:107F6E001201100102000008412336000602010230 +:0A7F7E000001484C322E302E360070 +:107FA00007CBF1CAE3CADCCAD5CACDCABBCA089599 +:087FB000089508950895089555 +:107FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF21 +:087FF000DFCFDFCFDFCFDFCFD1 +:087FF8000070000000DFFBDC5B +:040000030000700089 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb162.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb162.hex new file mode 100644 index 0000000..2fe1657 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb162.hex @@ -0,0 +1,255 @@ +:103000007FC00000DAC00000D8C00000D6C00000B9 +:10301000D4C00000D2C00000D0C00000CEC000006C +:10302000CCC00000CAC00000C8C000009BC10000A6 +:10303000C4C00000C2C00000C0C00000BEC000008C +:10304000BCC00000BAC00000B8C00000B6C000009C +:10305000B4C00000B2C00000B0C0000002C4000054 +:10306000EDC30000AAC00000A8C00000A6C0000078 +:10307000A4C0000009023E000201008032090400E1 +:1030800000010202010005240010010424020205CF +:1030900024060001070582030800FF09040100025D +:1030A0000A00000007050402200001070583024012 +:1030B0000001120110010200000841234200060233 +:1030C00001020001220348006F006F0064004C0001 +:1030D0006F006100640065007200320020004D0046 +:1030E000650067006100000012034E006900630084 +:1030F0006F0048006F006F006400000004030904C3 +:1031000011241FBECFEFD2E0DEBFCDBF2091FF0262 +:103110001092FF02909180021092800284B714BE38 +:103120000FB6F894A8953091600038613093600034 +:10313000109260000FBE5D9A5C9AE0E0F0E045916D +:1031400054914F3F5F4F21F181FF18C0273701F1A4 +:103150009737F1F087E78093FF02809380028FEF2B +:103160009EE924E2815090402040E1F700C0000039 +:103170001092FF0210928002F2D00AC080FF02C0BB +:10318000EED006C083FF04C0273711F09737C1F790 +:1031900012E0A2E8B2E0E4E6FFE302C005900D927F +:1031A000A239B107D9F722E0A2E9B2E001C01D922D +:1031B000A33AB207E1F75ED3D3C622CF80919A0239 +:1031C00087FF0FC08091E80082FD04C08BB581119C +:1031D000F9CF10C08091E8008B770AC08BB58823A7 +:1031E00049F08091E80080FFF9CF8091E8008E7768 +:1031F0008093E80008958F708093E900EBEEF0E093 +:10320000808181608083EDEEF0E010826093EC00BD +:1032100040838091EE00881F8827881F0895CF93F0 +:103220005B9A1092C9001092C8001092CA001EBA90 +:1032300010929902109298021ABC20918302309148 +:103240008402409185025091860221153105410585 +:10325000510519F4109297024FC0211581EE3807DD +:103260004105510521F481E08093970245C082E039 +:103270008093970280918802813021F0823021F47E +:10328000C0E203C0C0E301C0C0E080918702823089 +:1032900009F4C86080918902873031F0883031F0BC +:1032A000863029F4C26003C0C46001C0C660DA0180 +:1032B000C901B695A79597958795BC01CD01605832 +:1032C0007B47814E9F4F2AD62150310920FD04C0F3 +:1032D000211580E1380720F03695279580E001C060 +:1032E00082E03093CD002093CC00C093CA0080933D +:1032F000C80088E98093C9005B98CF91089593E056 +:103300009093E9009BB5992391F09091E80090FF8C +:10331000F9CF8093F10081E0860D8F3310F4682E91 +:103320000895612C8091E8008E778093E8000895DD +:1033300084E08093E9008091E80085FD0DC08091D4 +:10334000E8008B778093E8008091E80082FDF3CF5E +:103350008BB58111F9CF02C08091F1000895E0E0B2 +:10336000F0E009941F920F920FB60F9211242F9341 +:103370003F934F935F936F937F938F939F93AF93FD +:10338000BF93EF93FF938091E10080FF15C0809180 +:10339000E20080FF11C08091E2008E7F8093E20006 +:1033A0008091E20080618093E2008091D800806289 +:1033B0008093D80019BC1BBC8091E10084FF2DC014 +:1033C0008091E20084FF29C084E089BD86E089BD48 +:1033D00009B400FEFDCF8091D8008F7D8093D80086 +:1033E0008091E1008F7E8093E1008091E2008F7EEA +:1033F0008093E2008091E20081608093E2008091FE +:10340000A202882311F084E007C08091E30087FDC9 +:1034100002C081E001C083E08BBD8091E10083FFA9 +:1034200020C08091E20083FF1CC08091E100877F73 +:103430008093E10082E08BBD1092A2028091E100B6 +:103440008E7F8093E1008091E2008E7F8093E20086 +:103450008091E20080618093E20042E060E080E0E1 +:10346000CADEFF91EF91BF91AF919F918F917F91B4 +:103470006F915F914F913F912F910F900FBE0F90E1 +:103480001F9018959FB7F89407B600FCFDCFF999E7 +:10349000FECF809529E0E1E0F0E0082E2093570070 +:1034A000E8959FBF0895E1E0F0E089E08093570040 +:1034B0008491089529E0FC01209357008491089598 +:1034C00021E2FC01209357008491089507B600FC87 +:1034D000FDCFF999FECF21E0FB010A0120935700AF +:1034E000E895112408952FB7F89407B600FCFDCF96 +:1034F000F999FECF35E0FB0130935700E89507B608 +:1035000000FCFDCF91E190935700E8952FBF0895FF +:103510002FB7F89407B600FCFDCFF999FECF33E042 +:10352000FB0130935700E89507B600FCFDCF91E111 +:1035300090935700E8952FBF08957F928F929F92A6 +:10354000AF92BF92CF92DF92EF92FF920F931F93B1 +:10355000CF93DF93612CECDE082F853419F41092A1 +:10356000820207C088E8800F823010F0043521F411 +:10357000DFDE8DE0C4DE3BC10035D9F30C34C9F386 +:10358000043721F484E4BBDE80E0F4CF013611F48B +:1035900089E5F0CF0134D1F4CBDEC82FC9DE2C2F62 +:1035A00030E0322F2227330F90E0880F991F822BB3 +:1035B000932B092E000CAA0BBB0B809393029093C4 +:1035C0009402A0939502B0939602D3CF003711F4E2 +:1035D00083E5D0CF033549F4CAE8D2E089918FDE84 +:1035E00082E0C139D807D1F702C1063521F481E361 +:1035F00086DE80E3BFCF033731F482E880DE84E9E2 +:103600007EDE8EE1B7CF053691F4C12CD12C760148 +:10361000C701B6017DDF80E8C80ED11CE11CF11C9A +:10362000C11480E3D806E104F10491F7A2CF0C366F +:1036300019F47EDE27DF9DCF023711F434DF9ACFF5 +:10364000063419F4E0E0F0E009C00E3419F4E3E0C8 +:10365000F0E004C0013539F4E2E0F0E089E0809365 +:103660005700849187CF023631F489E548DE80E047 +:1036700046DE80E87FCF023419F0073609F0B4C087 +:1036800057DEF82E55DEC82F53DE182F8BEB810F37 +:10369000823010F08FE36ECFD0E0DF29073609F0DB +:1036A0003EC000E0BB24B394209709F4A0C0C090B2 +:1036B0009302D0909402E0909502F0909602163416 +:1036C000B9F4E02FF0E0EC29FD29849118DE002305 +:1036D00069F082E0C80ED11CE11CF11CC09293027B +:1036E000D0929402E0929502F09296020B2515C0BA +:1036F000D701C601B695A79597958795F5D3FFDDB8 +:1037000082E0C80ED11CE11CF11CC0929302D09241 +:103710009402E0929502F09296022197C5CF809094 +:10372000930290909402A0909502B0909602163465 +:1037300019F4C501B401ECDE712C00E0209709F406 +:103740004CC0163431F50023E9F0F2DDC09093024D +:10375000D0909402E0909502F0909602472D50E0B0 +:10376000582BC701B601B2DE82E0C80ED11CE11CA5 +:10377000F11CC0929302D0929402E0929502F092D2 +:10378000960202C0D5DD782E81E0011180E0082F7D +:1037900022C0CEDD682F8091930290919402A09177 +:1037A0009502B0919602B695A79597958795A4D363 +:1037B0008091930290919402A0919502B09196020B +:1037C0000296A11DB11D8093930290939402A09341 +:1037D0009502B09396022197B1CF163409F0C9CE65 +:1037E000C501B40180DEC5CE0B3109F053CF662090 +:1037F00079F083E08093E9008BB5882389F080918C +:10380000E80080FFF9CF8091E8008E778093E80090 +:1038100084E08093E9008091E8008B778093E80052 +:10382000DF91CF911F910F91FF90EF90DF90CF909C +:10383000BF90AF909F908F907F9008952F01EEB32F +:10384000F2E031903092CE00EEBBF798F2012EB24A +:103850003090990223101895E8E9E093C900F2012D +:1038600018953090CE002F01EAB5F1E03192EABD13 +:10387000F2011895CF93DF9300D01F92CDB7DEB73A +:1038800090E080E80FB6F894809361009093610017 +:103890000FBE91E095BF82E085BF809163008E7F6F +:1038A00080936300909392021092E2001092E100E4 +:1038B0008091D8008F778093D8008091D80080685D +:1038C0008093D8008091D8008F7D8093D80084E0C9 +:1038D00089BD86E089BD09B400FEFDCF1BBC1092F6 +:1038E000A20242E060E080E086DC8091E1008E7F11 +:1038F0008093E1008091E20081608093E2008091FA +:10390000E20088608093E2008091E0008E7F8093E7 +:10391000E00084E085BD8AB1886B8AB95F9A5A9AC3 +:10392000789422EAE22E22E0F22E38EEA32E30E343 +:10393000B32E4CEFC42E40E3D42E812C912C01E009 +:1039400010E02BB529831092E9008091E80083FFF5 +:1039500022C2EAE9F2E08091F1008193EE16FF06BF +:10396000D1F780919A02982F9F77913209F0AAC0DF +:1039700090919B02913209F057C0813A09F0A2C0A0 +:103980008091E800877F8093E8008091A002909169 +:10399000A1028730910510F087E090E040E0E3E875 +:1039A000F2E0009759F12BB52223C1F12530B1F196 +:1039B0002091E80023FD32C02091E80022FD2AC0BA +:1039C0002091E80020FFEDCF2091F20030E0009739 +:1039D00051F02830310538F441914093F1000197BE +:1039E0002F5F3F4FF4CF41E02830310509F040E030 +:1039F0002091E8002E772093E800D3CF4111D3CF58 +:103A000009C08BB5882351F0853041F08091E800E2 +:103A100083FD04C08091E80082FFF3CF8091E8002D +:103A20008B778093E8004EC09032C9F5813209F05F +:103A300049C08091E800877F8093E800E3E8F2E0E6 +:103A400087E0882311F19BB5992311F1953001F19D +:103A50009091E80093FD1CC09091E80092FFF1CF97 +:103A60009091F200992329F09091F1009193815067 +:103A7000B9F79091E8009B779093E800E2CF85300A +:103A800039F08091E80080FD03C08BB58111F7CF3C +:103A90008091E8008E778093E800C1DB13C09232FA +:103AA00089F4813279F48091E800877F8093E8007F +:103AB00085DB80919C0280FF04C05F9830E43A95DA +:103AC000F1F75F9A8091E80083FF57C180919A02D5 +:103AD00090919B02953009F46DC030F4913071F1F2 +:103AE00068F0933059F149C1983009F40EC199300A +:103AF00009F41AC1963009F040C17EC0803899F0AF +:103B0000823809F03AC180919E028F70853008F0AA +:103B100034C18093E9008091EB0085FB882780F910 +:103B20001092E90001C080E09091E800977F9093A7 +:103B3000E8008093F1001092F100F2C0282F2D7F51 +:103B400009F01BC1823009F018C180919C028111DB +:103B500028C080919E028F702FEF280F243008F02C +:103B60000CC18093E9002091EB0020FF1AC0933034 +:103B700021F48091EB00806212C09091EB00906183 +:103B80009093EB00F80102C0EE0FFF1F8A95E2F759 +:103B9000E093EA001092EA008091EB008860809345 +:103BA000EB001092E9008091E800877F8093E800A5 +:103BB00005DBE3C08111E1C080919C028F77782EF4 +:103BC0008091E300807887298093E3008091E8006A +:103BD000877F8093E800F2DA8091E80080FFFCCFD5 +:103BE0008091E30080688093E300711002C082E05E +:103BF00001C083E08BBDC1C08058823008F0BDC0D9 +:103C000080919C02F0919D02FA831B822A813B8164 +:103C10002230310541F02330310551F0213031059A +:103C200009F0ABC05CC12EE330E0E4E7F0E31BC079 +:103C3000811106C0F601249130E0ECEFF0E30FC0F3 +:103C4000813031F4F501249130E0E8EEF0E307C073 +:103C5000823009F092C0E4ECF0E3249130E02115C9 +:103C6000310509F48AC08091E800877F8093E800DD +:103C70008091A0029091A1022817390708F4C90188 +:103C800040E0009761F12BB52223C9F12530B9F14D +:103C90002091E80023FD33C02091E80022FD2BC0D5 +:103CA0002091E80020FFEDCF2091F20030E0009756 +:103CB00059F02830310540F444914093F100319699 +:103CC00001972F5F3F4FF3CF41E02830310509F0D6 +:103CD00040E02091E8002E772093E800D2CF4111F8 +:103CE000D2CF09C08BB5882351F0853041F0809147 +:103CF000E80083FD04C08091E80082FFF3CF80914B +:103D0000E8008B778093E80038C08038B1F5809167 +:103D1000E800877F8093E8008091A2028093F10001 +:103D20008091E8008E7742CF811127C080919C025C +:103D300090919D029927029704F58091E800877F72 +:103D40008093E80070909C027092A20237DA7110A2 +:103D500006C08091E30087FD02C081E001C084E0DD +:103D60008BBD42E061EC82E046DA46E361E883E045 +:103D700042DA42E260E884E03EDA8091E80083FFC4 +:103D80000AC08091E800877F8093E8008091EB0073 +:103D900080628093EB008BB5843081F0F981F43040 +:103DA00009F0CFCD10928302109284021092850206 +:103DB0001092860234DA5D9A5C9ABFCD90918202AD +:103DC000911116C08FE99FE00197F1F700C0000044 +:103DD0008091E00081608093E0009CE088E10FB674 +:103DE000F894A895809360000FBE90936000FFCF79 +:103DF0008093E9008091E80082FF0AC09091F20070 +:103E0000911107C08091E8008B778093E80001C092 +:103E100090E080919702813029F4992309F44DC0F4 +:103E20008CDB4BC0823009F048C0809199022EB3E0 +:103E3000821B80958F779923B1F08917A0F0F2E06B +:103E4000E09199028091F1008193EF779150D1F741 +:103E50008091E8008B778093E800E093990288EBEB +:103E60008093C90002C08F3719F05C9893E0892EC7 +:103E70008AB590919802891B01F1A89902C08F33ED +:103E8000C8F093E09093E9009091E80090FF12C091 +:103E90008F3308F08FE3E0919802F1E091919093D5 +:103EA000F1008150D1F78091E8008E778093E8008F +:103EB000E09398025D9883E0982EA89B42CD91E014 +:103EC00095BB992021F09A94911001C05D9A8820A9 +:103ED00009F437CD8A94811034CD5C9A32CD22E139 +:103EE00030E0E2EBF0E3BFCEF999FECF92BD81BDA9 +:103EF000F89A992780B50895262FF999FECF92BD9B +:103F000081BDF89A019700B4021639F01FBA20BD9E +:103F10000FB6F894FA9AF99A0FBE0895A1E21A2EF4 +:103F2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F5D +:103F3000A217B307E407F50720F0A21BB30BE40BAD +:103F4000F50B661F771F881F991F1A9469F76095F4 +:103F50007095809590959B01AC01BD01CF010895AE +:043F6000F894FFCF03 +:103F64000100000000000008484C322E302E3600BC +:103FA000B7CAA1CA93CA8CCA85CA7DCA6BCA08950A +:083FB000089508950895089595 +:103FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF61 +:083FF000DFCFDFCFDFCFDFCF11 +:083FF8000030000000DFFBDCDB +:0400000300003000C9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb82.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb82.hex new file mode 100644 index 0000000..02b3b6b --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_at90usb82.hex @@ -0,0 +1,255 @@ +:101000007FC00000DAC00000D8C00000D6C00000D9 +:10101000D4C00000D2C00000D0C00000CEC000008C +:10102000CCC00000CAC00000C8C000009BC10000C6 +:10103000C4C00000C2C00000C0C00000BEC00000AC +:10104000BCC00000BAC00000B8C00000B6C00000BC +:10105000B4C00000B2C00000B0C0000002C4000074 +:10106000EDC30000AAC00000A8C00000A6C0000098 +:10107000A4C0000009023E00020100803209040001 +:1010800000010202010005240010010424020205EF +:1010900024060001070582030800FF09040100027D +:1010A0000A00000007050402200001070583024032 +:1010B0000001120110010200000841234200060253 +:1010C00001020001220348006F006F0064004C0021 +:1010D0006F006100640065007200320020004D0066 +:1010E000650067006100000012034E0069006300A4 +:1010F0006F0048006F006F006400000004030904E3 +:1011000011241FBECFEFD2E0DEBFCDBF2091FF0282 +:101110001092FF02909180021092800284B714BE58 +:101120000FB6F894A8953091600038613093600054 +:10113000109260000FBE5D9A5C9AE0E0F0E045918D +:1011400054914F3F5F4F21F181FF18C0273701F1C4 +:101150009737F1F087E78093FF02809380028FEF4B +:101160009EE924E2815090402040E1F700C0000059 +:101170001092FF0210928002F2D00AC080FF02C0DB +:10118000EED006C083FF04C0273711F09737C1F7B0 +:1011900012E0A2E8B2E0E4E6FFE102C005900D92A1 +:1011A000A239B107D9F722E0A2E9B2E001C01D924D +:1011B000A33AB207E1F75ED3D3C622CF80919A0259 +:1011C00087FF0FC08091E80082FD04C08BB58111BC +:1011D000F9CF10C08091E8008B770AC08BB58823C7 +:1011E00049F08091E80080FFF9CF8091E8008E7788 +:1011F0008093E80008958F708093E900EBEEF0E0B3 +:10120000808181608083EDEEF0E010826093EC00DD +:1012100040838091EE00881F8827881F0895CF9310 +:101220005B9A1092C9001092C8001092CA001EBAB0 +:1012300010929902109298021ABC20918302309168 +:1012400084024091850250918602211531054105A5 +:10125000510519F4109297024FC0211581EE3807FD +:101260004105510521F481E08093970245C082E059 +:101270008093970280918802813021F0823021F49E +:10128000C0E203C0C0E301C0C0E0809187028230A9 +:1012900009F4C86080918902873031F0883031F0DC +:1012A000863029F4C26003C0C46001C0C660DA01A0 +:1012B000C901B695A79597958795BC01CD01605852 +:1012C0007B47814E9F4F2AD62150310920FD04C013 +:1012D000211580E1380720F03695279580E001C080 +:1012E00082E03093CD002093CC00C093CA0080935D +:1012F000C80088E98093C9005B98CF91089593E076 +:101300009093E9009BB5992391F09091E80090FFAC +:10131000F9CF8093F10081E0860D8F3310F4682EB1 +:101320000895612C8091E8008E778093E8000895FD +:1013300084E08093E9008091E80085FD0DC08091F4 +:10134000E8008B778093E8008091E80082FDF3CF7E +:101350008BB58111F9CF02C08091F1000895E0E0D2 +:10136000F0E009941F920F920FB60F9211242F9361 +:101370003F934F935F936F937F938F939F93AF931D +:10138000BF93EF93FF938091E10080FF15C08091A0 +:10139000E20080FF11C08091E2008E7F8093E20026 +:1013A0008091E20080618093E2008091D8008062A9 +:1013B0008093D80019BC1BBC8091E10084FF2DC034 +:1013C0008091E20084FF29C084E089BD86E089BD68 +:1013D00009B400FEFDCF8091D8008F7D8093D800A6 +:1013E0008091E1008F7E8093E1008091E2008F7E0A +:1013F0008093E2008091E20081608093E20080911E +:10140000A202882311F084E007C08091E30087FDE9 +:1014100002C081E001C083E08BBD8091E10083FFC9 +:1014200020C08091E20083FF1CC08091E100877F93 +:101430008093E10082E08BBD1092A2028091E100D6 +:101440008E7F8093E1008091E2008E7F8093E200A6 +:101450008091E20080618093E20042E060E080E001 +:10146000CADEFF91EF91BF91AF919F918F917F91D4 +:101470006F915F914F913F912F910F900FBE0F9001 +:101480001F9018959FB7F89407B600FCFDCFF99907 +:10149000FECF809529E0E1E0F0E0082E2093570090 +:1014A000E8959FBF0895E1E0F0E089E08093570060 +:1014B0008491089529E0FC012093570084910895B8 +:1014C00021E2FC01209357008491089507B600FCA7 +:1014D000FDCFF999FECF21E0FB010A0120935700CF +:1014E000E895112408952FB7F89407B600FCFDCFB6 +:1014F000F999FECF35E0FB0130935700E89507B628 +:1015000000FCFDCF91E190935700E8952FBF08951F +:101510002FB7F89407B600FCFDCFF999FECF33E062 +:10152000FB0130935700E89507B600FCFDCF91E131 +:1015300090935700E8952FBF08957F928F929F92C6 +:10154000AF92BF92CF92DF92EF92FF920F931F93D1 +:10155000CF93DF93612CECDE082F853419F41092C1 +:10156000820207C088E8800F823010F0043521F431 +:10157000DFDE8DE0C4DE3BC10035D9F30C34C9F3A6 +:10158000043721F484E4BBDE80E0F4CF013611F4AB +:1015900089E5F0CF0134D1F4CBDEC82FC9DE2C2F82 +:1015A00030E0322F2227330F90E0880F991F822BD3 +:1015B000932B092E000CAA0BBB0B809393029093E4 +:1015C0009402A0939502B0939602D3CF003711F402 +:1015D00083E5D0CF033549F4CAE8D2E089918FDEA4 +:1015E00082E0C139D807D1F702C1063521F481E381 +:1015F00086DE80E3BFCF033731F482E880DE83E903 +:101600007EDE8EE1B7CF053691F4C12CD12C760168 +:10161000C701B6017DDF80E8C80ED11CE11CF11CBA +:10162000C11480E1D806E104F10491F7A2CF0C3691 +:1016300019F47EDE27DF9DCF023711F434DF9ACF15 +:10164000063419F4E0E0F0E009C00E3419F4E3E0E8 +:10165000F0E004C0013539F4E2E0F0E089E0809385 +:101660005700849187CF023631F489E548DE80E067 +:1016700046DE80E87FCF023419F0073609F0B4C0A7 +:1016800057DEF82E55DEC82F53DE182F8BEB810F57 +:10169000823010F08FE36ECFD0E0DF29073609F0FB +:1016A0003EC000E0BB24B394209709F4A0C0C090D2 +:1016B0009302D0909402E0909502F0909602163436 +:1016C000B9F4E02FF0E0EC29FD29849118DE002325 +:1016D00069F082E0C80ED11CE11CF11CC09293029B +:1016E000D0929402E0929502F09296020B2515C0DA +:1016F000D701C601B695A79597958795F5D3FFDDD8 +:1017000082E0C80ED11CE11CF11CC0929302D09261 +:101710009402E0929502F09296022197C5CF8090B4 +:10172000930290909402A0909502B0909602163485 +:1017300019F4C501B401ECDE712C00E0209709F426 +:101740004CC0163431F50023E9F0F2DDC09093026D +:10175000D0909402E0909502F0909602472D50E0D0 +:10176000582BC701B601B2DE82E0C80ED11CE11CC5 +:10177000F11CC0929302D0929402E0929502F092F2 +:10178000960202C0D5DD782E81E0011180E0082F9D +:1017900022C0CEDD682F8091930290919402A09197 +:1017A0009502B0919602B695A79597958795A4D383 +:1017B0008091930290919402A0919502B09196022B +:1017C0000296A11DB11D8093930290939402A09361 +:1017D0009502B09396022197B1CF163409F0C9CE85 +:1017E000C501B40180DEC5CE0B3109F053CF6620B0 +:1017F00079F083E08093E9008BB5882389F08091AC +:10180000E80080FFF9CF8091E8008E778093E800B0 +:1018100084E08093E9008091E8008B778093E80072 +:10182000DF91CF911F910F91FF90EF90DF90CF90BC +:10183000BF90AF909F908F907F9008952F01EEB34F +:10184000F2E031903092CE00EEBBF798F2012EB26A +:101850003090990223101895E8E9E093C900F2014D +:1018600018953090CE002F01EAB5F1E03192EABD33 +:10187000F2011895CF93DF9300D01F92CDB7DEB75A +:1018800090E080E80FB6F894809361009093610037 +:101890000FBE91E095BF82E085BF809163008E7F8F +:1018A00080936300909392021092E2001092E10004 +:1018B0008091D8008F778093D8008091D80080687D +:1018C0008093D8008091D8008F7D8093D80084E0E9 +:1018D00089BD86E089BD09B400FEFDCF1BBC109216 +:1018E000A20242E060E080E086DC8091E1008E7F31 +:1018F0008093E1008091E20081608093E20080911A +:10190000E20088608093E2008091E0008E7F809307 +:10191000E00084E085BD8AB1886B8AB95F9A5A9AE3 +:10192000789422EAE22E22E0F22E38EEA32E30E165 +:10193000B32E4CEFC42E40E1D42E812C912C01E02B +:1019400010E02BB529831092E9008091E80083FF15 +:1019500022C2EAE9F2E08091F1008193EE16FF06DF +:10196000D1F780919A02982F9F77913209F0AAC0FF +:1019700090919B02913209F057C0813A09F0A2C0C0 +:101980008091E800877F8093E8008091A002909189 +:10199000A1028730910510F087E090E040E0E3E895 +:1019A000F2E0009759F12BB52223C1F12530B1F1B6 +:1019B0002091E80023FD32C02091E80022FD2AC0DA +:1019C0002091E80020FFEDCF2091F20030E0009759 +:1019D00051F02830310538F441914093F1000197DE +:1019E0002F5F3F4FF4CF41E02830310509F040E050 +:1019F0002091E8002E772093E800D3CF4111D3CF78 +:101A000009C08BB5882351F0853041F08091E80002 +:101A100083FD04C08091E80082FFF3CF8091E8004D +:101A20008B778093E8004EC09032C9F5813209F07F +:101A300049C08091E800877F8093E800E3E8F2E006 +:101A400087E0882311F19BB5992311F1953001F1BD +:101A50009091E80093FD1CC09091E80092FFF1CFB7 +:101A60009091F200992329F09091F1009193815087 +:101A7000B9F79091E8009B779093E800E2CF85302A +:101A800039F08091E80080FD03C08BB58111F7CF5C +:101A90008091E8008E778093E800C1DB13C092321A +:101AA00089F4813279F48091E800877F8093E8009F +:101AB00085DB80919C0280FF04C05F9830E43A95FA +:101AC000F1F75F9A8091E80083FF57C180919A02F5 +:101AD00090919B02953009F46DC030F4913071F112 +:101AE00068F0933059F149C1983009F40EC199302A +:101AF00009F41AC1963009F040C17EC0803899F0CF +:101B0000823809F03AC180919E028F70853008F0CA +:101B100034C18093E9008091EB0085FB882780F930 +:101B20001092E90001C080E09091E800977F9093C7 +:101B3000E8008093F1001092F100F2C0282F2D7F71 +:101B400009F01BC1823009F018C180919C028111FB +:101B500028C080919E028F702FEF280F243008F04C +:101B60000CC18093E9002091EB0020FF1AC0933054 +:101B700021F48091EB00806212C09091EB009061A3 +:101B80009093EB00F80102C0EE0FFF1F8A95E2F779 +:101B9000E093EA001092EA008091EB008860809365 +:101BA000EB001092E9008091E800877F8093E800C5 +:101BB00005DBE3C08111E1C080919C028F77782E14 +:101BC0008091E300807887298093E3008091E8008A +:101BD000877F8093E800F2DA8091E80080FFFCCFF5 +:101BE0008091E30080688093E300711002C082E07E +:101BF00001C083E08BBDC1C08058823008F0BDC0F9 +:101C000080919C02F0919D02FA831B822A813B8184 +:101C10002230310541F02330310551F021303105BA +:101C200009F0ABC05CC12EE330E0E4E7F0E11BC09B +:101C3000811106C0F601249130E0ECEFF0E10FC015 +:101C4000813031F4F501249130E0E8EEF0E107C095 +:101C5000823009F092C0E4ECF0E1249130E02115EB +:101C6000310509F48AC08091E800877F8093E800FD +:101C70008091A0029091A1022817390708F4C901A8 +:101C800040E0009761F12BB52223C9F12530B9F16D +:101C90002091E80023FD33C02091E80022FD2BC0F5 +:101CA0002091E80020FFEDCF2091F20030E0009776 +:101CB00059F02830310540F444914093F1003196B9 +:101CC00001972F5F3F4FF3CF41E02830310509F0F6 +:101CD00040E02091E8002E772093E800D2CF411118 +:101CE000D2CF09C08BB5882351F0853041F0809167 +:101CF000E80083FD04C08091E80082FFF3CF80916B +:101D0000E8008B778093E80038C08038B1F5809187 +:101D1000E800877F8093E8008091A2028093F10021 +:101D20008091E8008E7742CF811127C080919C027C +:101D300090919D029927029704F58091E800877F92 +:101D40008093E80070909C027092A20237DA7110C2 +:101D500006C08091E30087FD02C081E001C084E0FD +:101D60008BBD42E061EC82E046DA46E361E883E065 +:101D700042DA42E260E884E03EDA8091E80083FFE4 +:101D80000AC08091E800877F8093E8008091EB0093 +:101D900080628093EB008BB5843081F0F981F43060 +:101DA00009F0CFCD10928302109284021092850226 +:101DB0001092860234DA5D9A5C9ABFCD90918202CD +:101DC000911116C08FE99FE00197F1F700C0000064 +:101DD0008091E00081608093E0009CE088E10FB694 +:101DE000F894A895809360000FBE90936000FFCF99 +:101DF0008093E9008091E80082FF0AC09091F20090 +:101E0000911107C08091E8008B778093E80001C0B2 +:101E100090E080919702813029F4992309F44DC014 +:101E20008CDB4BC0823009F048C0809199022EB300 +:101E3000821B80958F779923B1F08917A0F0F2E08B +:101E4000E09199028091F1008193EF779150D1F761 +:101E50008091E8008B778093E800E093990288EB0B +:101E60008093C90002C08F3719F05C9893E0892EE7 +:101E70008AB590919802891B01F1A89902C08F330D +:101E8000C8F093E09093E9009091E80090FF12C0B1 +:101E90008F3308F08FE3E0919802F1E091919093F5 +:101EA000F1008150D1F78091E8008E778093E800AF +:101EB000E09398025D9883E0982EA89B42CD91E034 +:101EC00095BB992021F09A94911001C05D9A8820C9 +:101ED00009F437CD8A94811034CD5C9A32CD22E159 +:101EE00030E0E2EBF0E1BFCEF999FECF92BD81BDCB +:101EF000F89A992780B50895262FF999FECF92BDBB +:101F000081BDF89A019700B4021639F01FBA20BDBE +:101F10000FB6F894FA9AF99A0FBE0895A1E21A2E14 +:101F2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F7D +:101F3000A217B307E407F50720F0A21BB30BE40BCD +:101F4000F50B661F771F881F991F1A9469F7609514 +:101F50007095809590959B01AC01BD01CF010895CE +:041F6000F894FFCF23 +:101F64000100000000000008484C322E302E3600DC +:101FA000B7CAA1CA93CA8CCA85CA7DCA6BCA08952A +:081FB0000895089508950895B5 +:101FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF81 +:081FF000DFCFDFCFDFCFDFCF31 +:081FF8000010000000DFFBDC1B +:0400000300001000E9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega16u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega16u2.hex new file mode 100644 index 0000000..03ec2fc --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega16u2.hex @@ -0,0 +1,255 @@ +:103000007FC00000DAC00000D8C00000D6C00000B9 +:10301000D4C00000D2C00000D0C00000CEC000006C +:10302000CCC00000CAC00000C8C000009BC10000A6 +:10303000C4C00000C2C00000C0C00000BEC000008C +:10304000BCC00000BAC00000B8C00000B6C000009C +:10305000B4C00000B2C00000B0C0000002C4000054 +:10306000EDC30000AAC00000A8C00000A6C0000078 +:10307000A4C0000009023E000201008032090400E1 +:1030800000010202010005240010010424020205CF +:1030900024060001070582030800FF09040100025D +:1030A0000A00000007050402200001070583024012 +:1030B0000001120110010200000841234200060233 +:1030C00001020001220348006F006F0064004C0001 +:1030D0006F006100640065007200320020004D0046 +:1030E000650067006100000012034E006900630084 +:1030F0006F0048006F006F006400000004030904C3 +:1031000011241FBECFEFD2E0DEBFCDBF2091FF0262 +:103110001092FF02909180021092800284B714BE38 +:103120000FB6F894A8953091600038613093600034 +:10313000109260000FBE5D9A5C9AE0E0F0E045916D +:1031400054914F3F5F4F21F181FF18C0273701F1A4 +:103150009737F1F087E78093FF02809380028FEF2B +:103160009EE924E2815090402040E1F700C0000039 +:103170001092FF0210928002F2D00AC080FF02C0BB +:10318000EED006C083FF04C0273711F09737C1F790 +:1031900012E0A2E8B2E0E4E6FFE302C005900D927F +:1031A000A239B107D9F722E0A2E9B2E001C01D922D +:1031B000A33AB207E1F75ED3D3C622CF80919A0239 +:1031C00087FF0FC08091E80082FD04C08BB581119C +:1031D000F9CF10C08091E8008B770AC08BB58823A7 +:1031E00049F08091E80080FFF9CF8091E8008E7768 +:1031F0008093E80008958F708093E900EBEEF0E093 +:10320000808181608083EDEEF0E010826093EC00BD +:1032100040838091EE00881F8827881F0895CF93F0 +:103220005B9A1092C9001092C8001092CA001EBA90 +:1032300010929902109298021ABC20918302309148 +:103240008402409185025091860221153105410585 +:10325000510519F4109297024FC0211581EE3807DD +:103260004105510521F481E08093970245C082E039 +:103270008093970280918802813021F0823021F47E +:10328000C0E203C0C0E301C0C0E080918702823089 +:1032900009F4C86080918902873031F0883031F0BC +:1032A000863029F4C26003C0C46001C0C660DA0180 +:1032B000C901B695A79597958795BC01CD01605832 +:1032C0007B47814E9F4F2AD62150310920FD04C0F3 +:1032D000211580E1380720F03695279580E001C060 +:1032E00082E03093CD002093CC00C093CA0080933D +:1032F000C80088E98093C9005B98CF91089593E056 +:103300009093E9009BB5992391F09091E80090FF8C +:10331000F9CF8093F10081E0860D8F3310F4682E91 +:103320000895612C8091E8008E778093E8000895DD +:1033300084E08093E9008091E80085FD0DC08091D4 +:10334000E8008B778093E8008091E80082FDF3CF5E +:103350008BB58111F9CF02C08091F1000895E0E0B2 +:10336000F0E009941F920F920FB60F9211242F9341 +:103370003F934F935F936F937F938F939F93AF93FD +:10338000BF93EF93FF938091E10080FF15C0809180 +:10339000E20080FF11C08091E2008E7F8093E20006 +:1033A0008091E20080618093E2008091D800806289 +:1033B0008093D80019BC1BBC8091E10084FF2DC014 +:1033C0008091E20084FF29C084E089BD86E089BD48 +:1033D00009B400FEFDCF8091D8008F7D8093D80086 +:1033E0008091E1008F7E8093E1008091E2008F7EEA +:1033F0008093E2008091E20081608093E2008091FE +:10340000A202882311F084E007C08091E30087FDC9 +:1034100002C081E001C083E08BBD8091E10083FFA9 +:1034200020C08091E20083FF1CC08091E100877F73 +:103430008093E10082E08BBD1092A2028091E100B6 +:103440008E7F8093E1008091E2008E7F8093E20086 +:103450008091E20080618093E20042E060E080E0E1 +:10346000CADEFF91EF91BF91AF919F918F917F91B4 +:103470006F915F914F913F912F910F900FBE0F90E1 +:103480001F9018959FB7F89407B600FCFDCFF999E7 +:10349000FECF809529E0E1E0F0E0082E2093570070 +:1034A000E8959FBF0895E1E0F0E089E08093570040 +:1034B0008491089529E0FC01209357008491089598 +:1034C00021E2FC01209357008491089507B600FC87 +:1034D000FDCFF999FECF21E0FB010A0120935700AF +:1034E000E895112408952FB7F89407B600FCFDCF96 +:1034F000F999FECF35E0FB0130935700E89507B608 +:1035000000FCFDCF91E190935700E8952FBF0895FF +:103510002FB7F89407B600FCFDCFF999FECF33E042 +:10352000FB0130935700E89507B600FCFDCF91E111 +:1035300090935700E8952FBF08957F928F929F92A6 +:10354000AF92BF92CF92DF92EF92FF920F931F93B1 +:10355000CF93DF93612CECDE082F853419F41092A1 +:10356000820207C088E8800F823010F0043521F411 +:10357000DFDE8DE0C4DE3BC10035D9F30C34C9F386 +:10358000043721F484E4BBDE80E0F4CF013611F48B +:1035900089E5F0CF0134D1F4CBDEC82FC9DE2C2F62 +:1035A00030E0322F2227330F90E0880F991F822BB3 +:1035B000932B092E000CAA0BBB0B809393029093C4 +:1035C0009402A0939502B0939602D3CF003711F4E2 +:1035D00083E5D0CF033549F4CAE8D2E089918FDE84 +:1035E00082E0C139D807D1F702C1063521F481E361 +:1035F00086DE80E3BFCF033731F489E880DE84E9DB +:103600007EDE8EE1B7CF053691F4C12CD12C760148 +:10361000C701B6017DDF80E8C80ED11CE11CF11C9A +:10362000C11480E3D806E104F10491F7A2CF0C366F +:1036300019F47EDE27DF9DCF023711F434DF9ACFF5 +:10364000063419F4E0E0F0E009C00E3419F4E3E0C8 +:10365000F0E004C0013539F4E2E0F0E089E0809365 +:103660005700849187CF023631F489E548DE80E047 +:1036700046DE80E87FCF023419F0073609F0B4C087 +:1036800057DEF82E55DEC82F53DE182F8BEB810F37 +:10369000823010F08FE36ECFD0E0DF29073609F0DB +:1036A0003EC000E0BB24B394209709F4A0C0C090B2 +:1036B0009302D0909402E0909502F0909602163416 +:1036C000B9F4E02FF0E0EC29FD29849118DE002305 +:1036D00069F082E0C80ED11CE11CF11CC09293027B +:1036E000D0929402E0929502F09296020B2515C0BA +:1036F000D701C601B695A79597958795F5D3FFDDB8 +:1037000082E0C80ED11CE11CF11CC0929302D09241 +:103710009402E0929502F09296022197C5CF809094 +:10372000930290909402A0909502B0909602163465 +:1037300019F4C501B401ECDE712C00E0209709F406 +:103740004CC0163431F50023E9F0F2DDC09093024D +:10375000D0909402E0909502F0909602472D50E0B0 +:10376000582BC701B601B2DE82E0C80ED11CE11CA5 +:10377000F11CC0929302D0929402E0929502F092D2 +:10378000960202C0D5DD782E81E0011180E0082F7D +:1037900022C0CEDD682F8091930290919402A09177 +:1037A0009502B0919602B695A79597958795A4D363 +:1037B0008091930290919402A0919502B09196020B +:1037C0000296A11DB11D8093930290939402A09341 +:1037D0009502B09396022197B1CF163409F0C9CE65 +:1037E000C501B40180DEC5CE0B3109F053CF662090 +:1037F00079F083E08093E9008BB5882389F080918C +:10380000E80080FFF9CF8091E8008E778093E80090 +:1038100084E08093E9008091E8008B778093E80052 +:10382000DF91CF911F910F91FF90EF90DF90CF909C +:10383000BF90AF909F908F907F9008952F01EEB32F +:10384000F2E031903092CE00EEBBF798F2012EB24A +:103850003090990223101895E8E9E093C900F2012D +:1038600018953090CE002F01EAB5F1E03192EABD13 +:10387000F2011895CF93DF9300D01F92CDB7DEB73A +:1038800090E080E80FB6F894809361009093610017 +:103890000FBE91E095BF82E085BF809163008E7F6F +:1038A00080936300909392021092E2001092E100E4 +:1038B0008091D8008F778093D8008091D80080685D +:1038C0008093D8008091D8008F7D8093D80084E0C9 +:1038D00089BD86E089BD09B400FEFDCF1BBC1092F6 +:1038E000A20242E060E080E086DC8091E1008E7F11 +:1038F0008093E1008091E20081608093E2008091FA +:10390000E20088608093E2008091E0008E7F8093E7 +:10391000E00084E085BD8AB1886B8AB95F9A5A9AC3 +:10392000789422EAE22E22E0F22E38EEA32E30E343 +:10393000B32E4CEFC42E40E3D42E812C912C01E009 +:1039400010E02BB529831092E9008091E80083FFF5 +:1039500022C2EAE9F2E08091F1008193EE16FF06BF +:10396000D1F780919A02982F9F77913209F0AAC0DF +:1039700090919B02913209F057C0813A09F0A2C0A0 +:103980008091E800877F8093E8008091A002909169 +:10399000A1028730910510F087E090E040E0E3E875 +:1039A000F2E0009759F12BB52223C1F12530B1F196 +:1039B0002091E80023FD32C02091E80022FD2AC0BA +:1039C0002091E80020FFEDCF2091F20030E0009739 +:1039D00051F02830310538F441914093F1000197BE +:1039E0002F5F3F4FF4CF41E02830310509F040E030 +:1039F0002091E8002E772093E800D3CF4111D3CF58 +:103A000009C08BB5882351F0853041F08091E800E2 +:103A100083FD04C08091E80082FFF3CF8091E8002D +:103A20008B778093E8004EC09032C9F5813209F05F +:103A300049C08091E800877F8093E800E3E8F2E0E6 +:103A400087E0882311F19BB5992311F1953001F19D +:103A50009091E80093FD1CC09091E80092FFF1CF97 +:103A60009091F200992329F09091F1009193815067 +:103A7000B9F79091E8009B779093E800E2CF85300A +:103A800039F08091E80080FD03C08BB58111F7CF3C +:103A90008091E8008E778093E800C1DB13C09232FA +:103AA00089F4813279F48091E800877F8093E8007F +:103AB00085DB80919C0280FF04C05F9830E43A95DA +:103AC000F1F75F9A8091E80083FF57C180919A02D5 +:103AD00090919B02953009F46DC030F4913071F1F2 +:103AE00068F0933059F149C1983009F40EC199300A +:103AF00009F41AC1963009F040C17EC0803899F0AF +:103B0000823809F03AC180919E028F70853008F0AA +:103B100034C18093E9008091EB0085FB882780F910 +:103B20001092E90001C080E09091E800977F9093A7 +:103B3000E8008093F1001092F100F2C0282F2D7F51 +:103B400009F01BC1823009F018C180919C028111DB +:103B500028C080919E028F702FEF280F243008F02C +:103B60000CC18093E9002091EB0020FF1AC0933034 +:103B700021F48091EB00806212C09091EB00906183 +:103B80009093EB00F80102C0EE0FFF1F8A95E2F759 +:103B9000E093EA001092EA008091EB008860809345 +:103BA000EB001092E9008091E800877F8093E800A5 +:103BB00005DBE3C08111E1C080919C028F77782EF4 +:103BC0008091E300807887298093E3008091E8006A +:103BD000877F8093E800F2DA8091E80080FFFCCFD5 +:103BE0008091E30080688093E300711002C082E05E +:103BF00001C083E08BBDC1C08058823008F0BDC0D9 +:103C000080919C02F0919D02FA831B822A813B8164 +:103C10002230310541F02330310551F0213031059A +:103C200009F0ABC05CC12EE330E0E4E7F0E31BC079 +:103C3000811106C0F601249130E0ECEFF0E30FC0F3 +:103C4000813031F4F501249130E0E8EEF0E307C073 +:103C5000823009F092C0E4ECF0E3249130E02115C9 +:103C6000310509F48AC08091E800877F8093E800DD +:103C70008091A0029091A1022817390708F4C90188 +:103C800040E0009761F12BB52223C9F12530B9F14D +:103C90002091E80023FD33C02091E80022FD2BC0D5 +:103CA0002091E80020FFEDCF2091F20030E0009756 +:103CB00059F02830310540F444914093F100319699 +:103CC00001972F5F3F4FF3CF41E02830310509F0D6 +:103CD00040E02091E8002E772093E800D2CF4111F8 +:103CE000D2CF09C08BB5882351F0853041F0809147 +:103CF000E80083FD04C08091E80082FFF3CF80914B +:103D0000E8008B778093E80038C08038B1F5809167 +:103D1000E800877F8093E8008091A2028093F10001 +:103D20008091E8008E7742CF811127C080919C025C +:103D300090919D029927029704F58091E800877F72 +:103D40008093E80070909C027092A20237DA7110A2 +:103D500006C08091E30087FD02C081E001C084E0DD +:103D60008BBD42E061EC82E046DA46E361E883E045 +:103D700042DA42E260E884E03EDA8091E80083FFC4 +:103D80000AC08091E800877F8093E8008091EB0073 +:103D900080628093EB008BB5843081F0F981F43040 +:103DA00009F0CFCD10928302109284021092850206 +:103DB0001092860234DA5D9A5C9ABFCD90918202AD +:103DC000911116C08FE99FE00197F1F700C0000044 +:103DD0008091E00081608093E0009CE088E10FB674 +:103DE000F894A895809360000FBE90936000FFCF79 +:103DF0008093E9008091E80082FF0AC09091F20070 +:103E0000911107C08091E8008B778093E80001C092 +:103E100090E080919702813029F4992309F44DC0F4 +:103E20008CDB4BC0823009F048C0809199022EB3E0 +:103E3000821B80958F779923B1F08917A0F0F2E06B +:103E4000E09199028091F1008193EF779150D1F741 +:103E50008091E8008B778093E800E093990288EBEB +:103E60008093C90002C08F3719F05C9893E0892EC7 +:103E70008AB590919802891B01F1A89902C08F33ED +:103E8000C8F093E09093E9009091E80090FF12C091 +:103E90008F3308F08FE3E0919802F1E091919093D5 +:103EA000F1008150D1F78091E8008E778093E8008F +:103EB000E09398025D9883E0982EA89B42CD91E014 +:103EC00095BB992021F09A94911001C05D9A8820A9 +:103ED00009F437CD8A94811034CD5C9A32CD22E139 +:103EE00030E0E2EBF0E3BFCEF999FECF92BD81BDA9 +:103EF000F89A992780B50895262FF999FECF92BD9B +:103F000081BDF89A019700B4021639F01FBA20BD9E +:103F10000FB6F894FA9AF99A0FBE0895A1E21A2EF4 +:103F2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F5D +:103F3000A217B307E407F50720F0A21BB30BE40BAD +:103F4000F50B661F771F881F991F1A9469F76095F4 +:103F50007095809590959B01AC01BD01CF010895AE +:043F6000F894FFCF03 +:103F64000100000000000008484C322E302E3600BC +:103FA000B7CAA1CA93CA8CCA85CA7DCA6BCA08950A +:083FB000089508950895089595 +:103FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF61 +:083FF000DFCFDFCFDFCFDFCF11 +:083FF8000030000000DFFBDCDB +:0400000300003000C9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega32u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega32u2.hex new file mode 100644 index 0000000..807b7df --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega32u2.hex @@ -0,0 +1,253 @@ +:1070000039C0000094C0000092C0000090C0000091 +:107010008EC000008CC000008AC0000088C0000044 +:1070200086C0000084C0000082C00000AEC1000025 +:107030007EC000007CC000007AC0000078C0000064 +:1070400076C0000074C0000072C0000070C0000074 +:107050006EC000006CC000006AC0000050C4000098 +:107060003BC4000064C0000062C0000060C00000BB +:107070005EC0000011241FBECFEFD4E0DEBFCDBF45 +:107080002091FF041092FF049091800210928002E0 +:1070900084B714BE0FB6F894A8953091600038619B +:1070A00030936000109260000FBE5D9A5C9AE0E041 +:1070B000F0E0459154914F3F5F4F21F181FF18C09F +:1070C000273701F19737F1F087E78093FF0480932A +:1070D00080028FEF9EE924E2815090402040E1F74A +:1070E00000C000001092FF04109280024BD10AC031 +:1070F00080FF02C047D106C083FF04C0273711F0CC +:107100009737C1F713E0A2E8B2E0EAEBFEE702C06E +:1071100005900D92AE31B107D9F723E0AEE1B3E0AF +:1071200001C01D92AF32B207E1F7F2D3C4C668CFF7 +:107130008091260387FF0FC08091E80082FD04C084 +:107140008BB58111F9CF10C08091E8008B770AC010 +:107150008BB5882349F08091E80080FFF9CF8091BA +:10716000E8008E778093E80008958F708093E9009F +:10717000EBEEF0E0808181608083EDEEF0E0108244 +:107180006093EC0040838091EE00881F8827881F61 +:10719000089520912C0330912D032617370748F0CE +:1071A0006115710539F42091E8002E772093E800ED +:1071B00001C0B901FC0120E06115710559F18BB5E1 +:1071C0008823D1F18530D1F18091E80083FD38C06A +:1071D0008091E80082FD2AC08091E80080FFECCF1A +:1071E0008091F20090E06115710551F088309105B1 +:1071F00038F421912093F100615071090196F3CF89 +:1072000021E0089709F020E08091E8008E778093D4 +:10721000E800D2CF2111D3CF09C08BB5882361F00C +:10722000853061F08091E80083FD0AC08091E8001C +:1072300082FFF3CF80E0089582E0089583E008950F +:1072400081E00895CF935B9A1092C9001092C80014 +:107250001092CA001EBA10922503109224031ABC81 +:1072600020918302309184024091850250918602E0 +:10727000211531054105510519F4109223034FC022 +:10728000211581EE38074105510521F481E08093F5 +:10729000230345C082E080932303809188028130DC +:1072A00021F0823021F4C0E203C0C0E301C0C0E09D +:1072B00080918702823009F4C8608091890287300A +:1072C00031F0883031F0863029F4C26003C0C460E8 +:1072D00001C0C660DA01C901B695A7959795879553 +:1072E000BC01CD0160587B47814E9F4FC2D52150D4 +:1072F000310920FD04C0211580E1380720F03695C2 +:10730000279580E001C082E03093CD002093CC002F +:10731000C093CA008093C80088E98093C9005B9835 +:10732000CF91089593E09093E9009BB5992391F054 +:107330009091E80090FFF9CF8093F10081E0860DF5 +:107340008F3310F4682E0895612C8091E8008E77B9 +:107350008093E800089584E08093E9008091E8003C +:1073600085FD0DC08091E8008B778093E8008091C7 +:10737000E80082FDF3CF8BB58111F9CF02C0809177 +:10738000F1000895E0E0F0E009941F920F920FB62B +:107390000F9211242F933F934F935F936F937F939B +:1073A0008F939F93AF93BF93EF93FF938091E100EF +:1073B00080FF15C08091E20080FF11C08091E20043 +:1073C0008E7F8093E2008091E20080618093E200F2 +:1073D0008091D80080628093D80019BC1BBC80913A +:1073E000E10084FF2DC08091E20084FF29C084E089 +:1073F00089BD86E089BD09B400FEFDCF8091D8002B +:107400008F7D8093D8008091E1008F7E8093E10092 +:107410008091E2008F7E8093E2008091E2008160A3 +:107420008093E20080912E03882311F084E007C04E +:107430008091E30087FD02C081E001C083E08BBD45 +:107440008091E10083FF20C08091E20083FF1CC097 +:107450008091E100877F8093E10082E08BBD1092F4 +:107460002E038091E1008E7F8093E1008091E20005 +:107470008E7F8093E2008091E20080618093E20041 +:1074800042E060E080E071DEFF91EF91BF91AF914B +:107490009F918F917F916F915F914F913F912F912C +:1074A0000F900FBE0F901F9018959FB7F89407B6D6 +:1074B00000FCFDCFF999FECF809529E0E1E0F0E0F6 +:1074C000082E20935700E8959FBF0895E1E0F0E073 +:1074D00089E0809357008491089529E0FC0120936E +:1074E00057008491089521E2FC0120935700849174 +:1074F000089507B600FCFDCFF999FECF21E0FB010E +:107500000A0120935700E895112408952FB7F894A5 +:1075100007B600FCFDCFF999FECF35E0FB013093B3 +:107520005700E89507B600FCFDCF91E19093570016 +:10753000E8952FBF08952FB7F89407B600FCFDCF4C +:10754000F999FECF33E0FB0130935700E89507B679 +:1075500000FCFDCF91E190935700E8952FBF08956F +:107560007F928F929F92AF92BF92CF92DF92EF92D3 +:10757000FF920F931F93CF93DF93612CECDE082FC4 +:10758000853419F41092820207C088E8800F823097 +:1075900010F0043521F4DFDE8DE0C4DE76C1003565 +:1075A000D9F30C34C9F3043721F484E4BBDE80E062 +:1075B000F4CF013611F489E5F0CF013491F4CBDE3C +:1075C000C82FC9DE2C2F30E0322F2227330F90E056 +:1075D000880F991F822B932B092E000CAA0BBB0B33 +:1075E00028C1003711F483E5D8CF033549F4C6E14B +:1075F000D3E0899197DE83E0CD31D807D1F745C13B +:10760000063521F481E38EDE80E3C7CF033731F402 +:107610008AE888DE85E986DE8EE1BFCF053691F403 +:10762000C12CD12C7601C701B60185DF80E8C80ED8 +:10763000D11CE11CF11CC11480E7D806E104F1045F +:1076400091F7AACF0C3619F486DE2FDFA5CF0237CB +:1076500011F43CDFA2CF063419F4E0E0F0E009C0F9 +:107660000E3419F4E3E0F0E004C0013539F4E2E04F +:10767000F0E089E08093570084918FCF023631F497 +:1076800089E550DE80E04EDE80E887CF023419F0D5 +:10769000073609F0B2C05FDEF82E5DDEC82F5BDE74 +:1076A000182F8BEB810F823010F08FE376CFD0E074 +:1076B000DF29073609F03EC000E0BB24B3942097D1 +:1076C00009F4E3C0C0901F03D0902003E090210391 +:1076D000F09022031634B9F4E02FF0E0EC29FD29F4 +:1076E000849120DE002369F082E0C80ED11CE11CE9 +:1076F000F11CC0921F03D0922003E0922103F0926C +:1077000022030B2515C0D701C601B695A7959795FD +:10771000879595D307DE82E0C80ED11CE11CF11CD1 +:10772000C0921F03D0922003E0922103F092220323 +:107730002197C5CF80901F0390902003A090210334 +:10774000B0902203163419F4C501B401F4DE712C93 +:1077500000E0209709F44AC0163421F50023E9F02F +:10776000FADDC0901F03D0902003E0902103F09039 +:107770002203472D50E0582BC701B601BADE82E044 +:10778000C80ED11CE11CF11CC0921F03D092200333 +:10779000E0922103F092220302C0DDDD782E81E029 +:1077A000082722C0D8DD682F80911F039091200305 +:1077B000A0912103B0912203B695A795979587953F +:1077C00046D380911F0390912003A0912103B09193 +:1077D00022030296A11DB11D80931F0390932003E5 +:1077E000A0932103B09322032197B3CF163409F05D +:1077F000D3CEC501B4018ADECFCE043419F5ABDD9A +:10780000682F80911F0390912003A0912103B091D4 +:107810002203B695A7959795879519D380911F0355 +:1078200090912003A0912103B09122030296A11D03 +:10783000B11D80931F0390932003A0932103B09365 +:107840002203AACE0436F1F4C0901F03D090200387 +:10785000E0902103F0902203D701C601B695A795C9 +:1078600097958795ECD25EDD82E0C80ED11CE11CB5 +:10787000F11CC0921F03D0922003E0922103F092EA +:10788000220303C00B3109F010CF662079F083E0AA +:107890008093E9008BB5882389F08091E80080FF10 +:1078A000F9CF8091E8008E778093E80084E08093A0 +:1078B000E9008091E8008B778093E800DF91CF9119 +:1078C0001F910F91FF90EF90DF90CF90BF90AF90FE +:1078D0009F908F907F9008952F01EEB3F2E031904A +:1078E0003092CE00EEBBF798F2012EB23090250315 +:1078F00023101895E8E9E093C900F201189530903B +:10790000CE002F01EAB5F1E03192EABDF2011895FF +:1079100090E080E80FB6F894809361009093610046 +:107920000FBE91E095BF82E085BF809163008E7F9E +:107930008093630090931E031092E2001092E10086 +:107940008091D8008F778093D8008091D80080688C +:107950008093D8008091D8008F7D8093D80084E0F8 +:1079600089BD86E089BD09B400FEFDCF1BBC109225 +:107970002E0342E060E080E0F8DB8091E1008E7F42 +:107980008093E1008091E20081608093E200809129 +:10799000E20088608093E2008091E0008E7F809317 +:1079A000E00084E085BD8AB1886B8AB95F9A5A9AF3 +:1079B0007894F12CE12C01E010E0DBB41092E900A6 +:1079C0008091E80083FF79C1E6E2F3E08091F10065 +:1079D000819323E0EE32F207C9F780912603982FB6 +:1079E0009F77913209F065C090912703913299F405 +:1079F000813A09F05EC08091E800877F8093E800BB +:107A000067E070E083E892E0C4DB8091E8008B7768 +:107A10008093E8004EC09032C9F5813209F049C028 +:107A20008091E800877F8093E800E3E8F2E087E058 +:107A3000882311F19BB5992311F1953001F19091B3 +:107A4000E80093FD1CC09091E80092FFF1CF909167 +:107A5000F200992329F09091F10091938150B9F7A8 +:107A60009091E8009B779093E800E2CF853039F061 +:107A70008091E80080FD03C08BB58111F7CF809124 +:107A8000E8008E778093E800DDDB13C0923289F442 +:107A9000813279F48091E800877F8093E80048DBA9 +:107AA0008091280380FF04C05F9830E43A95F1F795 +:107AB0005F9A8091E80083FFF2C080912603909145 +:107AC0002703953009F46AC030F4913071F168F001 +:107AD000933059F1E4C0983009F4A6C0993009F404 +:107AE000B5C0963009F0DBC07BC0803899F0823891 +:107AF00009F0D5C080912A038F70853008F0CFC07F +:107B00008093E9008091EB0085FB882780F9109233 +:107B1000E90001C080E09091E800977F9093E80031 +:107B20008093F1001092F1008AC0282F2D7F09F078 +:107B3000B6C0823009F0B3C080912803811128C0FB +:107B400080912A038F702FEF280F243008F0A7C0F0 +:107B50008093E9002091EB0020FF1AC0933021F4BC +:107B60008091EB00806212C09091EB009061909345 +:107B7000EB00980102C0220F331F8A95E2F7209391 +:107B8000EA001092EA008091EB0088608093EB009D +:107B90001092E9008091E800877F54C081117FC076 +:107BA000809128038F77C82E8091E30080788C29FC +:107BB0008093E3008091E800877F8093E800B8DA43 +:107BC0008091E80080FFFCCF8091E3008068809383 +:107BD000E300C11002C082E001C083E08BBD5FC042 +:107BE0008058823008F05BC08091280330912903CF +:107BF000C32F90E0D92FC230D10539F0C330D10561 +:107C000049F0219709F04BC0FBC06EE370E086ECB1 +:107C100092E009C1882309F4F8C0813009F4FAC060 +:107C2000823009F03CC0FBC08038C9F58091E80083 +:107C3000877F8093E80080912E038093F1008091EC +:107C4000E8008E778093E80073DA29C0811127C09D +:107C500080912803909129039927029704F5809138 +:107C6000E800877F8093E800C0902803C0922E032D +:107C70005FDAC11006C08091E30087FD02C081E099 +:107C800001C084E08BBD42E061EC82E06EDA46E345 +:107C900061E883E06ADA42E260E884E066DA8091D3 +:107CA000E80083FF0AC08091E800877F8093E800A6 +:107CB0008091EB0080628093EB008BB5843079F08B +:107CC00024E0D2127ACE1092830210928402109293 +:107CD000850210928602B6DA5D9A5C9A6ACE90911D +:107CE0008202911116C08FE99FE00197F1F700C061 +:107CF00000008091E00081608093E0009CE088E1DA +:107D00000FB6F894A895809360000FBE9093600022 +:107D1000FFCF8093E9008091E80082FF0AC0909134 +:107D2000F200911107C08091E8008B778093E80002 +:107D300001C090E080912303813029F4992309F454 +:107D40004DC00EDC4BC0823009F048C08091250345 +:107D50002EB3821B80958F779923B1F08917A0F0FD +:107D6000F2E0E09125038091F1008193EF7791504B +:107D7000D1F78091E8008B778093E800E0932503AA +:107D800088EB8093C90002C08F3719F05C9893E0AC +:107D9000F92E8AB590912403891B01F1A89902C09C +:107DA0008F33C8F093E09093E9009091E80090FF42 +:107DB00012C08F3308F08FE3E0912403F1E091913A +:107DC0009093F1008150D1F78091E8008E778093F5 +:107DD000E800E09324035D9883E0E82EA89BEDCDB6 +:107DE00081E085BBEE2021F0EA94E11001C05D9AAC +:107DF000FF2009F4E2CDFA94F110DFCD5C9ADDCDDD +:107E000062E170E084E093E00EC064E070E08EEA2E +:107E100092E009C062E170E082EB92E004C062E2AD +:107E200070E08AE892E02091E800277F2093E80044 +:107E3000B0D98091E8008B778093E80030CFF99932 +:107E4000FECF92BD81BDF89A992780B50895262F5F +:107E5000F999FECF92BD81BDF89A019700B4021640 +:107E600039F01FBA20BD0FB6F894FA9AF99A0FBEEE +:107E70000895A1E21A2EAA1BBB1BFD010DC0AA1F6B +:107E8000BB1FEE1FFF1FA217B307E407F50720F083 +:107E9000A21BB30BE40BF50B661F771F881F991FFE +:107EA0001A9469F760957095809590959B01AC0147 +:0A7EB000BD01CF010895F894FFCF43 +:107EBA000100000000000008220348006F006F0064 +:107ECA0064004C006F0061006400650072003200BB +:107EDA0020004D00650067006100000004030904EA +:107EEA0012034E00690063006F0048006F006F00C4 +:107EFA006400000009023E00020100803209040009 +:107F0A0000010202010005240010010424020205F6 +:107F1A0024060001070582030800FF090401000284 +:107F2A000A00000007050402200001070583024039 +:107F3A00000112011001020000084123420006025A +:0C7F4A0001020001484C322E302E36009F +:107FA000CACAB4CAA6CA9FCA98CA90CA7ECA089545 +:087FB000089508950895089555 +:107FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF21 +:087FF000DFCFDFCFDFCFDFCFD1 +:087FF8000070000000DFFBDC5B +:040000030000700089 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega8u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega8u2.hex new file mode 100644 index 0000000..abf6d31 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Mega_atmega8u2.hex @@ -0,0 +1,255 @@ +:101000007FC00000DAC00000D8C00000D6C00000D9 +:10101000D4C00000D2C00000D0C00000CEC000008C +:10102000CCC00000CAC00000C8C000009BC10000C6 +:10103000C4C00000C2C00000C0C00000BEC00000AC +:10104000BCC00000BAC00000B8C00000B6C00000BC +:10105000B4C00000B2C00000B0C0000002C4000074 +:10106000EDC30000AAC00000A8C00000A6C0000098 +:10107000A4C0000009023E00020100803209040001 +:1010800000010202010005240010010424020205EF +:1010900024060001070582030800FF09040100027D +:1010A0000A00000007050402200001070583024032 +:1010B0000001120110010200000841234200060253 +:1010C00001020001220348006F006F0064004C0021 +:1010D0006F006100640065007200320020004D0066 +:1010E000650067006100000012034E0069006300A4 +:1010F0006F0048006F006F006400000004030904E3 +:1011000011241FBECFEFD2E0DEBFCDBF2091FF0282 +:101110001092FF02909180021092800284B714BE58 +:101120000FB6F894A8953091600038613093600054 +:10113000109260000FBE5D9A5C9AE0E0F0E045918D +:1011400054914F3F5F4F21F181FF18C0273701F1C4 +:101150009737F1F087E78093FF02809380028FEF4B +:101160009EE924E2815090402040E1F700C0000059 +:101170001092FF0210928002F2D00AC080FF02C0DB +:10118000EED006C083FF04C0273711F09737C1F7B0 +:1011900012E0A2E8B2E0E4E6FFE102C005900D92A1 +:1011A000A239B107D9F722E0A2E9B2E001C01D924D +:1011B000A33AB207E1F75ED3D3C622CF80919A0259 +:1011C00087FF0FC08091E80082FD04C08BB58111BC +:1011D000F9CF10C08091E8008B770AC08BB58823C7 +:1011E00049F08091E80080FFF9CF8091E8008E7788 +:1011F0008093E80008958F708093E900EBEEF0E0B3 +:10120000808181608083EDEEF0E010826093EC00DD +:1012100040838091EE00881F8827881F0895CF9310 +:101220005B9A1092C9001092C8001092CA001EBAB0 +:1012300010929902109298021ABC20918302309168 +:1012400084024091850250918602211531054105A5 +:10125000510519F4109297024FC0211581EE3807FD +:101260004105510521F481E08093970245C082E059 +:101270008093970280918802813021F0823021F49E +:10128000C0E203C0C0E301C0C0E0809187028230A9 +:1012900009F4C86080918902873031F0883031F0DC +:1012A000863029F4C26003C0C46001C0C660DA01A0 +:1012B000C901B695A79597958795BC01CD01605852 +:1012C0007B47814E9F4F2AD62150310920FD04C013 +:1012D000211580E1380720F03695279580E001C080 +:1012E00082E03093CD002093CC00C093CA0080935D +:1012F000C80088E98093C9005B98CF91089593E076 +:101300009093E9009BB5992391F09091E80090FFAC +:10131000F9CF8093F10081E0860D8F3310F4682EB1 +:101320000895612C8091E8008E778093E8000895FD +:1013300084E08093E9008091E80085FD0DC08091F4 +:10134000E8008B778093E8008091E80082FDF3CF7E +:101350008BB58111F9CF02C08091F1000895E0E0D2 +:10136000F0E009941F920F920FB60F9211242F9361 +:101370003F934F935F936F937F938F939F93AF931D +:10138000BF93EF93FF938091E10080FF15C08091A0 +:10139000E20080FF11C08091E2008E7F8093E20026 +:1013A0008091E20080618093E2008091D8008062A9 +:1013B0008093D80019BC1BBC8091E10084FF2DC034 +:1013C0008091E20084FF29C084E089BD86E089BD68 +:1013D00009B400FEFDCF8091D8008F7D8093D800A6 +:1013E0008091E1008F7E8093E1008091E2008F7E0A +:1013F0008093E2008091E20081608093E20080911E +:10140000A202882311F084E007C08091E30087FDE9 +:1014100002C081E001C083E08BBD8091E10083FFC9 +:1014200020C08091E20083FF1CC08091E100877F93 +:101430008093E10082E08BBD1092A2028091E100D6 +:101440008E7F8093E1008091E2008E7F8093E200A6 +:101450008091E20080618093E20042E060E080E001 +:10146000CADEFF91EF91BF91AF919F918F917F91D4 +:101470006F915F914F913F912F910F900FBE0F9001 +:101480001F9018959FB7F89407B600FCFDCFF99907 +:10149000FECF809529E0E1E0F0E0082E2093570090 +:1014A000E8959FBF0895E1E0F0E089E08093570060 +:1014B0008491089529E0FC012093570084910895B8 +:1014C00021E2FC01209357008491089507B600FCA7 +:1014D000FDCFF999FECF21E0FB010A0120935700CF +:1014E000E895112408952FB7F89407B600FCFDCFB6 +:1014F000F999FECF35E0FB0130935700E89507B628 +:1015000000FCFDCF91E190935700E8952FBF08951F +:101510002FB7F89407B600FCFDCFF999FECF33E062 +:10152000FB0130935700E89507B600FCFDCF91E131 +:1015300090935700E8952FBF08957F928F929F92C6 +:10154000AF92BF92CF92DF92EF92FF920F931F93D1 +:10155000CF93DF93612CECDE082F853419F41092C1 +:10156000820207C088E8800F823010F0043521F431 +:10157000DFDE8DE0C4DE3BC10035D9F30C34C9F3A6 +:10158000043721F484E4BBDE80E0F4CF013611F4AB +:1015900089E5F0CF0134D1F4CBDEC82FC9DE2C2F82 +:1015A00030E0322F2227330F90E0880F991F822BD3 +:1015B000932B092E000CAA0BBB0B809393029093E4 +:1015C0009402A0939502B0939602D3CF003711F402 +:1015D00083E5D0CF033549F4CAE8D2E089918FDEA4 +:1015E00082E0C139D807D1F702C1063521F481E381 +:1015F00086DE80E3BFCF033731F489E880DE83E9FC +:101600007EDE8EE1B7CF053691F4C12CD12C760168 +:10161000C701B6017DDF80E8C80ED11CE11CF11CBA +:10162000C11480E1D806E104F10491F7A2CF0C3691 +:1016300019F47EDE27DF9DCF023711F434DF9ACF15 +:10164000063419F4E0E0F0E009C00E3419F4E3E0E8 +:10165000F0E004C0013539F4E2E0F0E089E0809385 +:101660005700849187CF023631F489E548DE80E067 +:1016700046DE80E87FCF023419F0073609F0B4C0A7 +:1016800057DEF82E55DEC82F53DE182F8BEB810F57 +:10169000823010F08FE36ECFD0E0DF29073609F0FB +:1016A0003EC000E0BB24B394209709F4A0C0C090D2 +:1016B0009302D0909402E0909502F0909602163436 +:1016C000B9F4E02FF0E0EC29FD29849118DE002325 +:1016D00069F082E0C80ED11CE11CF11CC09293029B +:1016E000D0929402E0929502F09296020B2515C0DA +:1016F000D701C601B695A79597958795F5D3FFDDD8 +:1017000082E0C80ED11CE11CF11CC0929302D09261 +:101710009402E0929502F09296022197C5CF8090B4 +:10172000930290909402A0909502B0909602163485 +:1017300019F4C501B401ECDE712C00E0209709F426 +:101740004CC0163431F50023E9F0F2DDC09093026D +:10175000D0909402E0909502F0909602472D50E0D0 +:10176000582BC701B601B2DE82E0C80ED11CE11CC5 +:10177000F11CC0929302D0929402E0929502F092F2 +:10178000960202C0D5DD782E81E0011180E0082F9D +:1017900022C0CEDD682F8091930290919402A09197 +:1017A0009502B0919602B695A79597958795A4D383 +:1017B0008091930290919402A0919502B09196022B +:1017C0000296A11DB11D8093930290939402A09361 +:1017D0009502B09396022197B1CF163409F0C9CE85 +:1017E000C501B40180DEC5CE0B3109F053CF6620B0 +:1017F00079F083E08093E9008BB5882389F08091AC +:10180000E80080FFF9CF8091E8008E778093E800B0 +:1018100084E08093E9008091E8008B778093E80072 +:10182000DF91CF911F910F91FF90EF90DF90CF90BC +:10183000BF90AF909F908F907F9008952F01EEB34F +:10184000F2E031903092CE00EEBBF798F2012EB26A +:101850003090990223101895E8E9E093C900F2014D +:1018600018953090CE002F01EAB5F1E03192EABD33 +:10187000F2011895CF93DF9300D01F92CDB7DEB75A +:1018800090E080E80FB6F894809361009093610037 +:101890000FBE91E095BF82E085BF809163008E7F8F +:1018A00080936300909392021092E2001092E10004 +:1018B0008091D8008F778093D8008091D80080687D +:1018C0008093D8008091D8008F7D8093D80084E0E9 +:1018D00089BD86E089BD09B400FEFDCF1BBC109216 +:1018E000A20242E060E080E086DC8091E1008E7F31 +:1018F0008093E1008091E20081608093E20080911A +:10190000E20088608093E2008091E0008E7F809307 +:10191000E00084E085BD8AB1886B8AB95F9A5A9AE3 +:10192000789422EAE22E22E0F22E38EEA32E30E165 +:10193000B32E4CEFC42E40E1D42E812C912C01E02B +:1019400010E02BB529831092E9008091E80083FF15 +:1019500022C2EAE9F2E08091F1008193EE16FF06DF +:10196000D1F780919A02982F9F77913209F0AAC0FF +:1019700090919B02913209F057C0813A09F0A2C0C0 +:101980008091E800877F8093E8008091A002909189 +:10199000A1028730910510F087E090E040E0E3E895 +:1019A000F2E0009759F12BB52223C1F12530B1F1B6 +:1019B0002091E80023FD32C02091E80022FD2AC0DA +:1019C0002091E80020FFEDCF2091F20030E0009759 +:1019D00051F02830310538F441914093F1000197DE +:1019E0002F5F3F4FF4CF41E02830310509F040E050 +:1019F0002091E8002E772093E800D3CF4111D3CF78 +:101A000009C08BB5882351F0853041F08091E80002 +:101A100083FD04C08091E80082FFF3CF8091E8004D +:101A20008B778093E8004EC09032C9F5813209F07F +:101A300049C08091E800877F8093E800E3E8F2E006 +:101A400087E0882311F19BB5992311F1953001F1BD +:101A50009091E80093FD1CC09091E80092FFF1CFB7 +:101A60009091F200992329F09091F1009193815087 +:101A7000B9F79091E8009B779093E800E2CF85302A +:101A800039F08091E80080FD03C08BB58111F7CF5C +:101A90008091E8008E778093E800C1DB13C092321A +:101AA00089F4813279F48091E800877F8093E8009F +:101AB00085DB80919C0280FF04C05F9830E43A95FA +:101AC000F1F75F9A8091E80083FF57C180919A02F5 +:101AD00090919B02953009F46DC030F4913071F112 +:101AE00068F0933059F149C1983009F40EC199302A +:101AF00009F41AC1963009F040C17EC0803899F0CF +:101B0000823809F03AC180919E028F70853008F0CA +:101B100034C18093E9008091EB0085FB882780F930 +:101B20001092E90001C080E09091E800977F9093C7 +:101B3000E8008093F1001092F100F2C0282F2D7F71 +:101B400009F01BC1823009F018C180919C028111FB +:101B500028C080919E028F702FEF280F243008F04C +:101B60000CC18093E9002091EB0020FF1AC0933054 +:101B700021F48091EB00806212C09091EB009061A3 +:101B80009093EB00F80102C0EE0FFF1F8A95E2F779 +:101B9000E093EA001092EA008091EB008860809365 +:101BA000EB001092E9008091E800877F8093E800C5 +:101BB00005DBE3C08111E1C080919C028F77782E14 +:101BC0008091E300807887298093E3008091E8008A +:101BD000877F8093E800F2DA8091E80080FFFCCFF5 +:101BE0008091E30080688093E300711002C082E07E +:101BF00001C083E08BBDC1C08058823008F0BDC0F9 +:101C000080919C02F0919D02FA831B822A813B8184 +:101C10002230310541F02330310551F021303105BA +:101C200009F0ABC05CC12EE330E0E4E7F0E11BC09B +:101C3000811106C0F601249130E0ECEFF0E10FC015 +:101C4000813031F4F501249130E0E8EEF0E107C095 +:101C5000823009F092C0E4ECF0E1249130E02115EB +:101C6000310509F48AC08091E800877F8093E800FD +:101C70008091A0029091A1022817390708F4C901A8 +:101C800040E0009761F12BB52223C9F12530B9F16D +:101C90002091E80023FD33C02091E80022FD2BC0F5 +:101CA0002091E80020FFEDCF2091F20030E0009776 +:101CB00059F02830310540F444914093F1003196B9 +:101CC00001972F5F3F4FF3CF41E02830310509F0F6 +:101CD00040E02091E8002E772093E800D2CF411118 +:101CE000D2CF09C08BB5882351F0853041F0809167 +:101CF000E80083FD04C08091E80082FFF3CF80916B +:101D0000E8008B778093E80038C08038B1F5809187 +:101D1000E800877F8093E8008091A2028093F10021 +:101D20008091E8008E7742CF811127C080919C027C +:101D300090919D029927029704F58091E800877F92 +:101D40008093E80070909C027092A20237DA7110C2 +:101D500006C08091E30087FD02C081E001C084E0FD +:101D60008BBD42E061EC82E046DA46E361E883E065 +:101D700042DA42E260E884E03EDA8091E80083FFE4 +:101D80000AC08091E800877F8093E8008091EB0093 +:101D900080628093EB008BB5843081F0F981F43060 +:101DA00009F0CFCD10928302109284021092850226 +:101DB0001092860234DA5D9A5C9ABFCD90918202CD +:101DC000911116C08FE99FE00197F1F700C0000064 +:101DD0008091E00081608093E0009CE088E10FB694 +:101DE000F894A895809360000FBE90936000FFCF99 +:101DF0008093E9008091E80082FF0AC09091F20090 +:101E0000911107C08091E8008B778093E80001C0B2 +:101E100090E080919702813029F4992309F44DC014 +:101E20008CDB4BC0823009F048C0809199022EB300 +:101E3000821B80958F779923B1F08917A0F0F2E08B +:101E4000E09199028091F1008193EF779150D1F761 +:101E50008091E8008B778093E800E093990288EB0B +:101E60008093C90002C08F3719F05C9893E0892EE7 +:101E70008AB590919802891B01F1A89902C08F330D +:101E8000C8F093E09093E9009091E80090FF12C0B1 +:101E90008F3308F08FE3E0919802F1E091919093F5 +:101EA000F1008150D1F78091E8008E778093E800AF +:101EB000E09398025D9883E0982EA89B42CD91E034 +:101EC00095BB992021F09A94911001C05D9A8820C9 +:101ED00009F437CD8A94811034CD5C9A32CD22E159 +:101EE00030E0E2EBF0E1BFCEF999FECF92BD81BDCB +:101EF000F89A992780B50895262FF999FECF92BDBB +:101F000081BDF89A019700B4021639F01FBA20BDBE +:101F10000FB6F894FA9AF99A0FBE0895A1E21A2E14 +:101F2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F7D +:101F3000A217B307E407F50720F0A21BB30BE40BCD +:101F4000F50B661F771F881F991F1A9469F7609514 +:101F50007095809590959B01AC01BD01CF010895CE +:041F6000F894FFCF23 +:101F64000100000000000008484C322E302E3600DC +:101FA000B7CAA1CA93CA8CCA85CA7DCA6BCA08952A +:081FB0000895089508950895B5 +:101FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF81 +:081FF000DFCFDFCFDFCFDFCF31 +:081FF8000010000000DFFBDC1B +:0400000300001000E9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Micro_atmega32u4.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Micro_atmega32u4.hex new file mode 100644 index 0000000..fd8cb86 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Micro_atmega32u4.hex @@ -0,0 +1,256 @@ +:1070000055C00000B0C00000AEC00000ACC0000021 +:10701000AAC00000A8C00000A6C00000A4C00000D4 +:10702000A2C00000A0C00000CFC100009CC00000B2 +:107030009AC0000098C0000096C0000094C00000F4 +:1070400092C0000090C000008EC000008CC0000004 +:107050008AC0000088C0000086C0000084C0000014 +:1070600082C0000049C4000034C400007CC000009D +:107070007AC0000078C0000076C0000074C0000034 +:1070800072C0000070C000006EC000006CC0000044 +:107090006AC0000068C0000066C0000064C0000054 +:1070A00062C0000060C000005EC0000011241FBE6E +:1070B000CFEFDAE0DEBFCDBF2091FF0A1092FF0ACA +:1070C000909100801092008084B714BE0FB6F8949F +:1070D000A895309160003861309360001092600094 +:1070E0000FBE5D9A289AE0E0F0E0459154914F3F41 +:1070F0005F4F21F181FF18C0273701F19737F1F079 +:1071000087E78093FF0A809300808FEF9EE924E257 +:10711000815090402040E1F700C000001092FF0A2B +:10712000109200804ED10AC080FF02C04AD106C032 +:1071300083FF04C0273711F09737C1F713E0A2E8A7 +:10714000B2E0EEEEFEE702C005900D92A032B1076C +:10715000D9F723E0A0E2B3E001C01D92A133B2074A +:10716000E1F7D3D3C2C64CCF8091280387FF0FC06D +:107170008091E80082FD04C08BB58111F9CF10C069 +:107180008091E8008B770AC08BB5882349F0809105 +:10719000E80080FFF9CF8091E8008E778093E800C7 +:1071A00008958F708093E900EBEEF0E080818160BC +:1071B0008083EDEEF0E010826093EC0040838091DC +:1071C000EE00881F8827881F089520912E03309194 +:1071D0002F032617370748F06115710539F4209100 +:1071E000E8002E772093E80001C0B901FC0120E0FF +:1071F0006115710571F18BB58823E9F18530E9F1ED +:107200008091E80083FD3BC08091E80082FD2DC0A5 +:107210008091E80080FFECCF2091F3008091F20094 +:1072200090E0922B6115710551F08830910538F48A +:1072300021912093F100615071090196F3CF21E073 +:10724000089709F020E08091E8008E778093E800AD +:10725000CFCF2111D0CF09C08BB5882361F0853005 +:1072600061F08091E80083FD0AC08091E80082FF10 +:10727000F3CF80E0089582E0089583E0089581E0EF +:107280000895CF935B9A1092C9001092C800109293 +:10729000CA001EBA10922703109226031ABC20912E +:1072A000830230918402409185025091860221151B +:1072B00031054105510519F4109225034FC02115E0 +:1072C00081EE38074105510521F481E080932503C3 +:1072D00045C082E08093250380918802813021F0AF +:1072E000823021F4C0E203C0C0E301C0C0E080915D +:1072F0008702823009F4C86080918902873031F0BA +:10730000883031F0863029F4C26003C0C46001C007 +:10731000C660DA01C901B695A79597958795BC0116 +:10732000CD0160587B47814E9F4FBDD5215031091B +:1073300020FD04C0211580E1380720F036952795FF +:1073400080E001C082E03093CD002093CC00C09358 +:10735000CA008093C80088E98093C9005B98CF91E8 +:10736000089593E09093E9009BB5992391F0909153 +:10737000E80090FFF9CF8093F10081E0860D8F3314 +:1073800010F4682E0895612C8091E8008E77809328 +:10739000E800089584E08093E9008091E80085FD8D +:1073A0000DC08091E8008B778093E8008091E80021 +:1073B00082FDF3CF8BB58111F9CF02C08091F1002E +:1073C0000895E0E0F0E009941F920F920FB60F923B +:1073D00011242F933F934F935F936F937F938F93DA +:1073E0009F93AF93BF93EF93FF938091DA0080FF59 +:1073F00019C08091D80080FF15C08091DA008E7F7F +:107400008093DA008091D90080FF0AC080E189BDB5 +:1074100082E189BD09B400FEFDCF81E08BBD02C0D1 +:1074200019BC1BBC8091E10080FF16C08091E20076 +:1074300080FF12C08091E2008E7F8093E2008091F5 +:10744000E20080618093E2008091D80080628093A6 +:10745000D80019BC85E08BBD8091E10084FF2DC070 +:107460008091E20084FF29C080E189BD82E189BD6D +:1074700009B400FEFDCF8091D8008F7D8093D800A5 +:107480008091E1008F7E8093E1008091E2008F7E09 +:107490008093E2008091E20081608093E20080911D +:1074A0003003882311F084E007C08091E30087FD5A +:1074B00002C081E001C083E08BBD8091E10083FFC9 +:1074C00020C08091E20083FF1CC08091E100877F93 +:1074D0008093E10082E08BBD109230038091E10047 +:1074E0008E7F8093E1008091E2008E7F8093E200A6 +:1074F0008091E20080618093E20042E060E080E001 +:1075000050DEFF91EF91BF91AF919F918F917F914D +:107510006F915F914F913F912F910F900FBE0F9000 +:107520001F9018959FB7F89407B600FCFDCFF99906 +:10753000FECF809529E0E1E0F0E0082E209357008F +:10754000E8959FBF0895E1E0F0E089E0809357005F +:107550008491089529E0FC012093570084910895B7 +:1075600021E2FC01209357008491089507B600FCA6 +:10757000FDCFF999FECF21E0FB010A0120935700CE +:10758000E895112408952FB7F89407B600FCFDCFB5 +:10759000F999FECF35E0FB0130935700E89507B627 +:1075A00000FCFDCF91E190935700E8952FBF08951F +:1075B0002FB7F89407B600FCFDCFF999FECF33E062 +:1075C000FB0130935700E89507B600FCFDCF91E131 +:1075D00090935700E8952FBF08957F928F929F92C6 +:1075E000AF92BF92CF92DF92EF92FF920F931F93D1 +:1075F000CF93DF93612CCEDE082F853419F41092DF +:10760000820207C088E8800F823010F0043521F430 +:10761000C1DE8DE0A6DE36C10035D9F30C34C9F3E6 +:10762000043721F484E49DDE80E0F4CF013611F4C8 +:1076300089E5F0CF0134D1F4ADDEC82FABDE2C2FBD +:1076400030E0322F2227330F90E0880F991F822BD2 +:10765000932B092E000CAA0BBB0B80932103909354 +:107660002203A0932303B0932403D3CF003711F454 +:1076700083E5D0CF033549F4C8E1D3E0899171DEC9 +:1076800083E0CF31D807D1F7FDC0063521F481E37F +:1076900068DE80E3BFCF033731F487E862DE85E937 +:1076A00060DE8EE1B7CF053691F4C12CD12C760186 +:1076B000C701B6017DDF80E8C80ED11CE11CF11CBA +:1076C000C11480E7D806E104F10491F7A2CF023794 +:1076D00011F439DF9FCF063419F4E0E0F0E009C07F +:1076E0000E3419F4E3E0F0E004C0013539F4E2E0CF +:1076F000F0E089E08093570084918CCF023631F41A +:1077000089E52FDE80E02DDE80E884CF023419F099 +:10771000073609F0B4C03EDEF82E3CDEC82F3ADE54 +:10772000182F8BEB810F823010F08FE373CFD0E0F6 +:10773000DF29073609F03EC000E0BB24B394209750 +:1077400009F4A0C0C0902103D0902203E09023034D +:10775000F09024031634B9F4E02FF0E0EC29FD2971 +:107760008491FFDD002369F082E0C80ED11CE11C8A +:10777000F11CC0922103D0922203E0922303F092E5 +:1077800024030B2515C0D701C601B695A79597957B +:1077900087956FD3E6DD82E0C80ED11CE11CF11C99 +:1077A000C0922103D0922203E0922303F09224039B +:1077B0002197C5CF8090210390902203A0902303AE +:1077C000B0902403163419F4C501B401F1DE712C14 +:1077D00000E0209709F44CC0163431F50023E9F09D +:1077E000D9DDC0902103D0902203E0902303F090D4 +:1077F0002403472D50E0582BC701B601B7DE82E0C5 +:10780000C80ED11CE11CF11CC0922103D0922203AE +:10781000E0922303F092240302C0BCDD782E81E0C5 +:10782000011180E0082F22C0B5DD682F809121036F +:1078300090912203A0912303B0912403B695A795BC +:10784000979587951ED38091210390912203A09153 +:107850002303B09124030296A11DB11D809321033F +:1078600090932203A0932303B09324032197B1CFD5 +:10787000163409F0CECEC501B40185DECACE0B3177 +:1078800009F053CF662079F083E08093E9008BB54F +:10789000882389F08091E80080FFF9CF8091E8008B +:1078A0008E778093E80084E08093E9008091E8007F +:1078B0008B778093E800DF91CF911F910F91FF901C +:1078C000EF90DF90CF90BF90AF909F908F907F9080 +:1078D00008952F01EEB3F2E031903092CE00EEBB6E +:1078E000F798F2012EB23090270323101895E8E99B +:1078F000E093C900F20118953090CE002F01EAB54F +:10790000F1E03192EABDF201189590E080E80FB6FF +:10791000F89480936100909361000FBE91E095BF51 +:1079200082E085BF8091D8008F7E8093D8008091BF +:10793000D70081608093D70014E012BF909320039A +:107940008091D8008E7F8093D8001092E200109230 +:10795000DA001092E1008091D8008F778093D800F0 +:107960008091D80080688093D8008091D8008F7D66 +:107970008093D80019BC1BBC109230038091E000AA +:107980008B7F8093E0008091D80081608093D80045 +:1079900042E060E080E005DC8091E1008E7F809332 +:1079A000E1008091E20081608093E2008091E2003A +:1079B00088608093E2008091E0008E7F8093E000F9 +:1079C0008091D80080618093D80015BD88E38AB982 +:1079D000209A5C9A5A9A7894F12CE12C01E010E0FC +:1079E000DBB41092E9008091E80083FF7EC1E8E2F9 +:1079F000F3E08091F100819323E0E033F207C9F7CF +:107A000080912803982F9F77913209F06AC0909156 +:107A10002903913299F4813A09F063C08091E8001A +:107A2000877F8093E80067E070E083E892E0CDDB39 +:107A30008091E8008B778093E80053C0903209F082 +:107A40003DC0813209F04DC08091E800877F80936E +:107A5000E800E3E8F2E027E0222331F18BB5882348 +:107A600031F1853021F18091E80083FD20C08091C3 +:107A7000E80082FFF1CF3091F3008091F20090E0B6 +:107A8000932B892B29F08091F1008193215099F754 +:107A90008091E8008B778093E800DECF853039F065 +:107AA0008091E80080FD03C08BB58111F7CF8091F4 +:107AB000E8008E778093E800E4DB13C0923289F40B +:107AC000813279F48091E800877F8093E8004CDB75 +:107AD00080912A0380FF04C05C9830E43A95F1F766 +:107AE0005C9A8091E80083FFF2C080912803909116 +:107AF0002903953009F46AC030F4913071F168F0CF +:107B0000933059F1E4C0983009F4A6C0993009F4D3 +:107B1000B5C0963009F0DBC07BC0803899F0823860 +:107B200009F0D5C080912C038F70873008F0CFC04A +:107B30008093E9008091EB0085FB882780F9109203 +:107B4000E90001C080E09091E800977F9093E80001 +:107B50008093F1001092F1008AC0282F2D7F09F048 +:107B6000B6C0823009F0B3C080912A03811128C0C9 +:107B700080912C038F702FEF280F263008F0A7C0BC +:107B80008093E9002091EB0020FF1AC0933021F48C +:107B90008091EB00806212C09091EB009061909315 +:107BA000EB00980102C0220F331F8A95E2F7209361 +:107BB000EA001092EA008091EB0088608093EB006D +:107BC0001092E9008091E800877F54C081117FC046 +:107BD00080912A038F77C82E8091E30080788C29CA +:107BE0008093E3008091E800877F8093E800BCDA0F +:107BF0008091E80080FFFCCF8091E3008068809353 +:107C0000E300C11002C082E001C083E08BBD5FC011 +:107C10008058823008F05BC080912A0330912B039A +:107C2000C32F90E0D92FC230D10539F0C330D10530 +:107C300049F0219709F04BC0FDC06EE370E088EC7D +:107C400092E00BC1882309F4FAC0813009F4FCC02A +:107C5000823009F03CC0FDC08038C9F58091E80051 +:107C6000877F8093E800809130038093F1008091BA +:107C7000E8008E778093E80077DA29C0811127C069 +:107C800080912A0390912B039927029704F5809104 +:107C9000E800877F8093E800C0902A03C0923003F9 +:107CA00063DAC11006C08091E30087FD02C081E065 +:107CB00001C084E08BBD42E061EC82E072DA46E311 +:107CC00061E883E06EDA42E260E884E06ADA80919B +:107CD000E80083FF0AC08091E800877F8093E80076 +:107CE0008091EB0080628093EB008BB5843079F05B +:107CF00024E0D21275CE1092830210928402109268 +:107D0000850210928602BDDA5D9A289A65CE90911E +:107D10008202911116C08FE99FE00197F1F700C030 +:107D200000008091E00081608093E0009CE088E1A9 +:107D30000FB6F894A895809360000FBE90936000F2 +:107D4000FFCF8093E9008091E80082FF0CC0809112 +:107D5000F3008091F200811107C09091E8009B77B9 +:107D60009093E80001C080E090912503913029F4C0 +:107D7000882309F44DC031DC4BC0923009F048C073 +:107D8000909127032EB3921B90959F778823B1F093 +:107D90009817A0F0F2E0E09127039091F100919301 +:107DA000EF778150D1F78091E8008B778093E800DE +:107DB000E093270388EB8093C90002C09F3719F036 +:107DC000289893E0F92E8AB590912603891B01F13A +:107DD000A89902C08F33C8F093E09093E900909186 +:107DE000E80090FF12C08F3308F08FE3E091260384 +:107DF000F1E091919093F1008150D1F78091E800EA +:107E00008E778093E800E09326035D9883E0E82E68 +:107E1000A89BE6CD81E085BBEE2021F0EA94E1103D +:107E200001C05D9AFF2009F4DBCDFA94F110D8CDA2 +:107E3000289AD6CD62E170E086E093E00EC064E05F +:107E400070E080EB92E009C062E170E084EB92E0C8 +:107E500004C064E270E08AE892E02091E800277FA5 +:107E60002093E800B2D98091E8008B778093E800F6 +:107E70002ECFF999FECF92BD81BDF89A992780B592 +:107E80000895262FF999FECF92BD81BDF89A0197EA +:107E900000B4021639F01FBA20BD0FB6F894FA9A52 +:107EA000F99A0FBE0895A1E21A2EAA1BBB1BFD0171 +:107EB0000DC0AA1FBB1FEE1FFF1FA217B307E407C9 +:107EC000F50720F0A21BB30BE40BF50B661F771F21 +:107ED000881F991F1A9469F7609570958095909501 +:0E7EE0009B01AC01BD01CF010895F894FFCFC6 +:107EEE000100000000000008240348006F006F002E +:107EFE0064004C006F006100640065007200320087 +:107F0E0020004D006900630072006F000000040342 +:107F1E00090412034E00690063006F0048006F00F1 +:107F2E006F006400000009023E0002010080320969 +:107F3E0004000001020201000524001001042402C5 +:107F4E00020524060001070582030800FF0904014B +:107F5E0000020A0000000705040220000107058345 +:107F6E0002400001120110010200000841233700F7 +:0E7F7E00060201020001484C322E302E360061 +:107FA00007CBF1CAE3CADCCAD5CACDCABBCA089599 +:087FB000089508950895089555 +:107FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF21 +:087FF000DFCFDFCFDFCFDFCFD1 +:087FF8000070000000DFFBDC5B +:040000030000700089 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb162.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb162.hex new file mode 100644 index 0000000..763bec7 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb162.hex @@ -0,0 +1,255 @@ +:103000007EC00000D9C00000D7C00000D5C00000BD +:10301000D3C00000D1C00000CFC00000CDC0000070 +:10302000CBC00000C9C00000C7C000009AC10000AA +:10303000C3C00000C1C00000BFC00000BDC0000090 +:10304000BBC00000B9C00000B7C00000B5C00000A0 +:10305000B3C00000B1C00000AFC0000001C4000058 +:10306000ECC30000A9C00000A7C00000A5C000007C +:10307000A3C0000009023E000201008032090400E2 +:1030800000010202010005240010010424020205CF +:1030900024060001070582030800FF09040100025D +:1030A0000A00000007050402200001070583024012 +:1030B0000001120110010200000841234300060232 +:1030C00001020001200348006F006F0064004C0003 +:1030D0006F0061006400650072003200200055003E +:1030E0006E006F00000012034E00690063006F0065 +:1030F00048006F006F0064000000040309041124FD +:103100001FBECFEFD2E0DEBFCDBF2091FF021092F5 +:10311000FF02909180021092800284B714BE0FB615 +:10312000F894A89530916000386130936000109257 +:1031300060000FBE5D9A5C9AE0E0F0E0459154912A +:103140004F3F5F4F21F181FF18C0273701F19737BB +:10315000F1F087E78093FF02809380028FEF9EE972 +:1031600024E2815090402040E1F700C0000010921E +:10317000FF0210928002F2D00AC080FF02C0EED09F +:1031800006C083FF04C0273711F09737C1F712E05C +:10319000A2E8B2E0E2E6FFE302C005900D92A23998 +:1031A000B107D9F722E0A2E9B2E001C01D92A33A2B +:1031B000B207E1F75ED3D3C623CF80919A0287FF8F +:1031C0000FC08091E80082FD04C08BB58111F9CF5A +:1031D00010C08091E8008B770AC08BB5882349F036 +:1031E0008091E80080FFF9CF8091E8008E7780938E +:1031F000E80008958F708093E900EBEEF0E08081A5 +:1032000081608083EDEEF0E010826093EC004083FB +:103210008091EE00881F8827881F0895CF935B9ABE +:103220001092C9001092C8001092CA001EBA1092E3 +:103230009902109298021ABC209183023091840264 +:1032400040918502509186022115310541055105B5 +:1032500019F4109297024FC0211581EE38074105ED +:10326000510521F481E08093970245C082E080936C +:10327000970280918802813021F0823021F4C0E2EF +:1032800003C0C0E301C0C0E080918702823009F42E +:10329000C86080918902873031F0883031F0863003 +:1032A00029F4C26003C0C46001C0C660DA01C9016C +:1032B000B695A79597958795BC01CD0160587B473A +:1032C000814E9F4F2AD62150310920FD04C021157F +:1032D00080E1380720F03695279580E001C082E034 +:1032E0003093CD002093CC00C093CA008093C800D7 +:1032F00088E98093C9005B98CF91089593E09093FB +:10330000E9009BB5992391F09091E80090FFF9CFE7 +:103310008093F10081E0860D8F3310F4682E0895BC +:10332000612C8091E8008E778093E800089584E016 +:103330008093E9008091E80085FD0DC08091E80050 +:103340008B778093E8008091E80082FDF3CF8BB506 +:103350008111F9CF02C08091F1000895E0E0F0E022 +:1033600009941F920F920FB60F9211242F933F933F +:103370004F935F936F937F938F939F93AF93BF937D +:10338000EF93FF938091E10080FF15C08091E200F0 +:1033900080FF11C08091E2008E7F8093E2008091D7 +:1033A000E20080618093E2008091D8008062809387 +:1033B000D80019BC1BBC8091E10084FF2DC0809116 +:1033C000E20084FF29C084E089BD86E089BD09B49C +:1033D00000FEFDCF8091D8008F7D8093D800809132 +:1033E000E1008F7E8093E1008091E2008F7E8093E8 +:1033F000E2008091E20081608093E2008091A2026D +:10340000882311F084E007C08091E30087FD02C0AB +:1034100081E001C083E08BBD8091E10083FF20C08B +:103420008091E20083FF1CC08091E100877F809340 +:10343000E10082E08BBD1092A2028091E1008E7FBC +:103440008093E1008091E2008E7F8093E200809182 +:10345000E20080618093E20042E060E080E0CADE4A +:10346000FF91EF91BF91AF919F918F917F916F915C +:103470005F914F913F912F910F900FBE0F901F9032 +:1034800018959FB7F89407B600FCFDCFF999FECFC9 +:10349000809529E0E1E0F0E0082E20935700E895C0 +:1034A0009FBF0895E1E0F0E089E0809357008491A8 +:1034B000089529E0FC01209357008491089521E2AA +:1034C000FC01209357008491089507B600FCFDCFBE +:1034D000F999FECF21E0FB010A0120935700E895FE +:1034E000112408952FB7F89407B600FCFDCFF99981 +:1034F000FECF35E0FB0130935700E89507B600FC9E +:10350000FDCF91E190935700E8952FBF08952FB715 +:10351000F89407B600FCFDCFF999FECF33E0FB012C +:1035200030935700E89507B600FCFDCF91E19093EA +:103530005700E8952FBF08957F928F929F92AF9288 +:10354000BF92CF92DF92EF92FF920F931F93CF9390 +:10355000DF93612CECDE082F853419F4109282027F +:1035600007C088E8800F823010F0043521F4DFDED8 +:103570008DE0C4DE3BC10035D9F30C34C9F3043708 +:1035800021F484E4BBDE80E0F4CF013611F489E558 +:10359000F0CF0134D1F4CBDEC82FC9DE2C2F30E0C0 +:1035A000322F2227330F90E0880F991F822B932B05 +:1035B000092E000CAA0BBB0B8093930290939402EC +:1035C000A0939502B0939602D3CF003711F483E510 +:1035D000D0CF033549F4CAE8D2E089918FDE82E08A +:1035E000C139D807D1F702C1063521F481E386DE5F +:1035F00080E3BFCF033731F482E880DE84E97EDEEA +:103600008EE1B7CF053691F4C12CD12C7601C701DC +:10361000B6017DDF80E8C80ED11CE11CF11CC1148D +:1036200080E3D806E104F10491F7A2CF0C3619F437 +:103630007EDE27DF9DCF023711F434DF9ACF0634C8 +:1036400019F4E0E0F0E009C00E3419F4E3E0F0E032 +:1036500004C0013539F4E2E0F0E089E080935700DE +:10366000849187CF023631F489E548DE80E046DE7A +:1036700080E87FCF023419F0073609F0B4C057DE76 +:10368000F82E55DEC82F53DE182F8BEB810F8230BA +:1036900010F08FE36ECFD0E0DF29073609F03EC08F +:1036A00000E0BB24B394209709F4A0C0C09093021B +:1036B000D0909402E0909502F09096021634B9F4FE +:1036C000E02FF0E0EC29FD29849118DE002369F059 +:1036D00082E0C80ED11CE11CF11CC0929302D09272 +:1036E0009402E0929502F09296020B2515C0D70144 +:1036F000C601B695A79597958795F5D3FFDD82E02E +:10370000C80ED11CE11CF11CC0929302D09294020D +:10371000E0929502F09296022197C5CF8090930295 +:1037200090909402A0909502B0909602163419F4ED +:10373000C501B401ECDE712C00E0209709F44CC007 +:10374000163431F50023E9F0F2DDC0909302D090F9 +:103750009402E0909502F0909602472D50E0582B8D +:10376000C701B601B2DE82E0C80ED11CE11CF11C1B +:10377000C0929302D0929402E0929502F092960247 +:1037800002C0D5DD782E81E0011180E0082F22C033 +:10379000CEDD682F8091930290919402A0919502C2 +:1037A000B0919602B695A79597958795A4D38091E9 +:1037B000930290919402A0919502B0919602029684 +:1037C000A11DB11D8093930290939402A093950242 +:1037D000B09396022197B1CF163409F0C9CEC50136 +:1037E000B40180DEC5CE0B3109F053CF662079F0ED +:1037F00083E08093E9008BB5882389F08091E8000D +:1038000080FFF9CF8091E8008E778093E80084E014 +:103810008093E9008091E8008B778093E800DF9146 +:10382000CF911F910F91FF90EF90DF90CF90BF90BD +:10383000AF909F908F907F9008952F01EEB3F2E0AC +:1038400031903092CE00EEBBF798F2012EB230905C +:10385000990223101895E8E9E093C900F201189540 +:103860003090CE002F01EAB5F1E03192EABDF201CD +:103870001895CF93DF9300D01F92CDB7DEB790E0BD +:1038800080E80FB6F89480936100909361000FBEBA +:1038900091E095BF82E085BF809163008E7F809329 +:1038A0006300909392021092E2001092E1008091E6 +:1038B000D8008F778093D8008091D800806880935B +:1038C000D8008091D8008F7D8093D80084E089BD96 +:1038D00086E089BD09B400FEFDCF1BBC1092A20298 +:1038E00042E060E080E086DC8091E1008E7F8093A2 +:1038F000E1008091E20081608093E2008091E2002B +:1039000088608093E2008091E0008E7F8093E000E9 +:1039100084E085BD8AB1886B8AB95F9A5A9A789497 +:1039200022EAE22E22E0F22E36EEA32E30E3B32E70 +:103930004AEFC42E40E3D42E812C912C01E010E0FC +:103940002BB529831092E9008091E80083FF22C201 +:10395000EAE9F2E08091F1008193EE16FF06D1F7DB +:1039600080919A02982F9F77913209F0AAC0909186 +:103970009B02913209F057C0813A09F0A2C08091B0 +:10398000E800877F8093E8008091A0029091A102D7 +:103990008730910510F087E090E040E0E3E8F2E046 +:1039A000009759F12BB52223C1F12530B1F12091B7 +:1039B000E80023FD32C02091E80022FD2AC02091BA +:1039C000E80020FFEDCF2091F20030E0009751F0A9 +:1039D0002830310538F441914093F10001972F5F71 +:1039E0003F4FF4CF41E02830310509F040E020910D +:1039F000E8002E772093E800D3CF4111D3CF09C040 +:103A00008BB5882351F0853041F08091E80083FD2B +:103A100004C08091E80082FFF3CF8091E8008B77AB +:103A20008093E8004EC09032C9F5813209F049C058 +:103A30008091E800877F8093E800E3E8F2E087E088 +:103A4000882311F19BB5992311F1953001F19091E3 +:103A5000E80093FD1CC09091E80092FFF1CF909197 +:103A6000F200992329F09091F10091938150B9F7D8 +:103A70009091E8009B779093E800E2CF853039F091 +:103A80008091E80080FD03C08BB58111F7CF809154 +:103A9000E8008E778093E800C1DB13C0923289F48E +:103AA000813279F48091E800877F8093E80085DB9C +:103AB00080919C0280FF04C05F9830E43A95F1F752 +:103AC0005F9A8091E80083FF57C180919A0290919C +:103AD0009B02953009F46DC030F4913071F168F0BB +:103AE000933059F149C1983009F40EC1993009F465 +:103AF0001AC1963009F040C17EC0803899F08238F2 +:103B000009F03AC180919E028F70853008F034C16F +:103B10008093E9008091EB0085FB882780F9109263 +:103B2000E90001C080E09091E800977F9093E80061 +:103B30008093F1001092F100F2C0282F2D7F09F040 +:103B40001BC1823009F018C180919C02811128C0EC +:103B500080919E028F702FEF280F243008F00CC147 +:103B60008093E9002091EB0020FF1AC0933021F4EC +:103B70008091EB00806212C09091EB009061909375 +:103B8000EB00F80102C0EE0FFF1F8A95E2F7E09309 +:103B9000EA001092EA008091EB0088608093EB00CD +:103BA0001092E9008091E800877F8093E80005DBB0 +:103BB000E3C08111E1C080919C028F77782E8091C3 +:103BC000E300807887298093E3008091E800877F75 +:103BD0008093E800F2DA8091E80080FFFCCF8091CA +:103BE000E30080688093E300711002C082E001C0AE +:103BF00083E08BBDC1C08058823008F0BDC0809189 +:103C00009C02F0919D02FA831B822A813B81223023 +:103C1000310541F02330310551F02130310509F0F3 +:103C2000ABC05CC12EE330E0E4E7F0E31BC08111E0 +:103C300006C0F601249130E0EAEFF0E30FC08130D6 +:103C400031F4F501249130E0E6EEF0E307C0823074 +:103C500009F092C0E4ECF0E3249130E02115310545 +:103C600009F48AC08091E800877F8093E800809102 +:103C7000A0029091A1022817390708F4C90140E079 +:103C8000009761F12BB52223C9F12530B9F12091BC +:103C9000E80023FD33C02091E80022FD2BC02091D5 +:103CA000E80020FFEDCF2091F20030E0009759F0BE +:103CB0002830310540F444914093F100319601974A +:103CC0002F5F3F4FF3CF41E02830310509F040E04E +:103CD0002091E8002E772093E800D2CF4111D2CF77 +:103CE00009C08BB5882351F0853041F08091E80000 +:103CF00083FD04C08091E80082FFF3CF8091E8004B +:103D00008B778093E80038C08038B1F58091E80067 +:103D1000877F8093E8008091A2028093F1008091D8 +:103D2000E8008E7742CF811127C080919C0290914C +:103D30009D029927029704F58091E800877F809380 +:103D4000E80070909C027092A20237DA711006C0EF +:103D50008091E30087FD02C081E001C084E08BBD5B +:103D600042E061EC82E046DA46E361E883E042DA71 +:103D700042E260E884E03EDA8091E80083FF0AC016 +:103D80008091E800877F8093E8008091EB0080625B +:103D90008093EB008BB5843081F0F981F43009F029 +:103DA000CFCD10928302109284021092850210925D +:103DB000860234DA5D9A5C9ABFCD909182029111AD +:103DC00016C08FE99FE00197F1F700C000008091D5 +:103DD000E00081608093E0009CE088E10FB6F894F9 +:103DE000A895809360000FBE90936000FFCF8093F2 +:103DF000E9008091E80082FF0AC09091F2009111E1 +:103E000007C08091E8008B778093E80001C090E0C4 +:103E100080919702813029F4992309F44DC08CDBFD +:103E20004BC0823009F048C0809199022EB3821BAA +:103E300080958F779923B1F08917A0F0F2E0E09197 +:103E400099028091F1008193EF779150D1F78091A1 +:103E5000E8008B778093E800E093990288EB8093E9 +:103E6000C90002C08F3719F05C9893E0892E8AB59B +:103E700090919802891B01F1A89902C08F33C8F074 +:103E800093E09093E9009091E80090FF12C08F3387 +:103E900008F08FE3E0919802F1E091919093F100A6 +:103EA0008150D1F78091E8008E778093E800E0930D +:103EB00098025D9883E0982EA89B42CD91E095BB37 +:103EC000992021F09A94911001C05D9A882009F4FC +:103ED00037CD8A94811034CD5C9A32CD22E130E026 +:103EE000E2EBF0E3BFCEF999FECF92BD81BDF89A27 +:103EF000992780B50895262FF999FECF92BD81BDEF +:103F0000F89A019700B4021639F01FBA20BD0FB617 +:103F1000F894FA9AF99A0FBE0895A1E21A2EAA1BF4 +:103F2000BB1BFD010DC0AA1FBB1FEE1FFF1FA21769 +:103F3000B307E407F50720F0A21BB30BE40BF50B66 +:103F4000661F771F881F991F1A9469F760957095EF +:103F5000809590959B01AC01BD01CF010895F89427 +:023F6000FFCF91 +:103F62000100000000000008484C322E302E3600BE +:103FA000B6CAA0CA92CA8BCA84CA7CCA6ACA089511 +:083FB000089508950895089595 +:103FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF61 +:083FF000DFCFDFCFDFCFDFCF11 +:083FF8000030000000DFFBDCDB +:0400000300003000C9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb82.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb82.hex new file mode 100644 index 0000000..e272eb2 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_at90usb82.hex @@ -0,0 +1,255 @@ +:101000007EC00000D9C00000D7C00000D5C00000DD +:10101000D3C00000D1C00000CFC00000CDC0000090 +:10102000CBC00000C9C00000C7C000009AC10000CA +:10103000C3C00000C1C00000BFC00000BDC00000B0 +:10104000BBC00000B9C00000B7C00000B5C00000C0 +:10105000B3C00000B1C00000AFC0000001C4000078 +:10106000ECC30000A9C00000A7C00000A5C000009C +:10107000A3C0000009023E00020100803209040002 +:1010800000010202010005240010010424020205EF +:1010900024060001070582030800FF09040100027D +:1010A0000A00000007050402200001070583024032 +:1010B0000001120110010200000841234300060252 +:1010C00001020001200348006F006F0064004C0023 +:1010D0006F0061006400650072003200200055005E +:1010E0006E006F00000012034E00690063006F0085 +:1010F00048006F006F00640000000403090411241D +:101100001FBECFEFD2E0DEBFCDBF2091FF02109215 +:10111000FF02909180021092800284B714BE0FB635 +:10112000F894A89530916000386130936000109277 +:1011300060000FBE5D9A5C9AE0E0F0E0459154914A +:101140004F3F5F4F21F181FF18C0273701F19737DB +:10115000F1F087E78093FF02809380028FEF9EE992 +:1011600024E2815090402040E1F700C0000010923E +:10117000FF0210928002F2D00AC080FF02C0EED0BF +:1011800006C083FF04C0273711F09737C1F712E07C +:10119000A2E8B2E0E2E6FFE102C005900D92A239BA +:1011A000B107D9F722E0A2E9B2E001C01D92A33A4B +:1011B000B207E1F75ED3D3C623CF80919A0287FFAF +:1011C0000FC08091E80082FD04C08BB58111F9CF7A +:1011D00010C08091E8008B770AC08BB5882349F056 +:1011E0008091E80080FFF9CF8091E8008E778093AE +:1011F000E80008958F708093E900EBEEF0E08081C5 +:1012000081608083EDEEF0E010826093EC0040831B +:101210008091EE00881F8827881F0895CF935B9ADE +:101220001092C9001092C8001092CA001EBA109203 +:101230009902109298021ABC209183023091840284 +:1012400040918502509186022115310541055105D5 +:1012500019F4109297024FC0211581EE380741050D +:10126000510521F481E08093970245C082E080938C +:10127000970280918802813021F0823021F4C0E20F +:1012800003C0C0E301C0C0E080918702823009F44E +:10129000C86080918902873031F0883031F0863023 +:1012A00029F4C26003C0C46001C0C660DA01C9018C +:1012B000B695A79597958795BC01CD0160587B475A +:1012C000814E9F4F2AD62150310920FD04C021159F +:1012D00080E1380720F03695279580E001C082E054 +:1012E0003093CD002093CC00C093CA008093C800F7 +:1012F00088E98093C9005B98CF91089593E090931B +:10130000E9009BB5992391F09091E80090FFF9CF07 +:101310008093F10081E0860D8F3310F4682E0895DC +:10132000612C8091E8008E778093E800089584E036 +:101330008093E9008091E80085FD0DC08091E80070 +:101340008B778093E8008091E80082FDF3CF8BB526 +:101350008111F9CF02C08091F1000895E0E0F0E042 +:1013600009941F920F920FB60F9211242F933F935F +:101370004F935F936F937F938F939F93AF93BF939D +:10138000EF93FF938091E10080FF15C08091E20010 +:1013900080FF11C08091E2008E7F8093E2008091F7 +:1013A000E20080618093E2008091D80080628093A7 +:1013B000D80019BC1BBC8091E10084FF2DC0809136 +:1013C000E20084FF29C084E089BD86E089BD09B4BC +:1013D00000FEFDCF8091D8008F7D8093D800809152 +:1013E000E1008F7E8093E1008091E2008F7E809308 +:1013F000E2008091E20081608093E2008091A2028D +:10140000882311F084E007C08091E30087FD02C0CB +:1014100081E001C083E08BBD8091E10083FF20C0AB +:101420008091E20083FF1CC08091E100877F809360 +:10143000E10082E08BBD1092A2028091E1008E7FDC +:101440008093E1008091E2008E7F8093E2008091A2 +:10145000E20080618093E20042E060E080E0CADE6A +:10146000FF91EF91BF91AF919F918F917F916F917C +:101470005F914F913F912F910F900FBE0F901F9052 +:1014800018959FB7F89407B600FCFDCFF999FECFE9 +:10149000809529E0E1E0F0E0082E20935700E895E0 +:1014A0009FBF0895E1E0F0E089E0809357008491C8 +:1014B000089529E0FC01209357008491089521E2CA +:1014C000FC01209357008491089507B600FCFDCFDE +:1014D000F999FECF21E0FB010A0120935700E8951E +:1014E000112408952FB7F89407B600FCFDCFF999A1 +:1014F000FECF35E0FB0130935700E89507B600FCBE +:10150000FDCF91E190935700E8952FBF08952FB735 +:10151000F89407B600FCFDCFF999FECF33E0FB014C +:1015200030935700E89507B600FCFDCF91E190930A +:101530005700E8952FBF08957F928F929F92AF92A8 +:10154000BF92CF92DF92EF92FF920F931F93CF93B0 +:10155000DF93612CECDE082F853419F4109282029F +:1015600007C088E8800F823010F0043521F4DFDEF8 +:101570008DE0C4DE3BC10035D9F30C34C9F3043728 +:1015800021F484E4BBDE80E0F4CF013611F489E578 +:10159000F0CF0134D1F4CBDEC82FC9DE2C2F30E0E0 +:1015A000322F2227330F90E0880F991F822B932B25 +:1015B000092E000CAA0BBB0B80939302909394020C +:1015C000A0939502B0939602D3CF003711F483E530 +:1015D000D0CF033549F4CAE8D2E089918FDE82E0AA +:1015E000C139D807D1F702C1063521F481E386DE7F +:1015F00080E3BFCF033731F482E880DE83E97EDE0B +:101600008EE1B7CF053691F4C12CD12C7601C701FC +:10161000B6017DDF80E8C80ED11CE11CF11CC114AD +:1016200080E1D806E104F10491F7A2CF0C3619F459 +:101630007EDE27DF9DCF023711F434DF9ACF0634E8 +:1016400019F4E0E0F0E009C00E3419F4E3E0F0E052 +:1016500004C0013539F4E2E0F0E089E080935700FE +:10166000849187CF023631F489E548DE80E046DE9A +:1016700080E87FCF023419F0073609F0B4C057DE96 +:10168000F82E55DEC82F53DE182F8BEB810F8230DA +:1016900010F08FE36ECFD0E0DF29073609F03EC0AF +:1016A00000E0BB24B394209709F4A0C0C09093023B +:1016B000D0909402E0909502F09096021634B9F41E +:1016C000E02FF0E0EC29FD29849118DE002369F079 +:1016D00082E0C80ED11CE11CF11CC0929302D09292 +:1016E0009402E0929502F09296020B2515C0D70164 +:1016F000C601B695A79597958795F5D3FFDD82E04E +:10170000C80ED11CE11CF11CC0929302D09294022D +:10171000E0929502F09296022197C5CF80909302B5 +:1017200090909402A0909502B0909602163419F40D +:10173000C501B401ECDE712C00E0209709F44CC027 +:10174000163431F50023E9F0F2DDC0909302D09019 +:101750009402E0909502F0909602472D50E0582BAD +:10176000C701B601B2DE82E0C80ED11CE11CF11C3B +:10177000C0929302D0929402E0929502F092960267 +:1017800002C0D5DD782E81E0011180E0082F22C053 +:10179000CEDD682F8091930290919402A0919502E2 +:1017A000B0919602B695A79597958795A4D3809109 +:1017B000930290919402A0919502B09196020296A4 +:1017C000A11DB11D8093930290939402A093950262 +:1017D000B09396022197B1CF163409F0C9CEC50156 +:1017E000B40180DEC5CE0B3109F053CF662079F00D +:1017F00083E08093E9008BB5882389F08091E8002D +:1018000080FFF9CF8091E8008E778093E80084E034 +:101810008093E9008091E8008B778093E800DF9166 +:10182000CF911F910F91FF90EF90DF90CF90BF90DD +:10183000AF909F908F907F9008952F01EEB3F2E0CC +:1018400031903092CE00EEBBF798F2012EB230907C +:10185000990223101895E8E9E093C900F201189560 +:101860003090CE002F01EAB5F1E03192EABDF201ED +:101870001895CF93DF9300D01F92CDB7DEB790E0DD +:1018800080E80FB6F89480936100909361000FBEDA +:1018900091E095BF82E085BF809163008E7F809349 +:1018A0006300909392021092E2001092E100809106 +:1018B000D8008F778093D8008091D800806880937B +:1018C000D8008091D8008F7D8093D80084E089BDB6 +:1018D00086E089BD09B400FEFDCF1BBC1092A202B8 +:1018E00042E060E080E086DC8091E1008E7F8093C2 +:1018F000E1008091E20081608093E2008091E2004B +:1019000088608093E2008091E0008E7F8093E00009 +:1019100084E085BD8AB1886B8AB95F9A5A9A7894B7 +:1019200022EAE22E22E0F22E36EEA32E30E1B32E92 +:101930004AEFC42E40E1D42E812C912C01E010E01E +:101940002BB529831092E9008091E80083FF22C221 +:10195000EAE9F2E08091F1008193EE16FF06D1F7FB +:1019600080919A02982F9F77913209F0AAC09091A6 +:101970009B02913209F057C0813A09F0A2C08091D0 +:10198000E800877F8093E8008091A0029091A102F7 +:101990008730910510F087E090E040E0E3E8F2E066 +:1019A000009759F12BB52223C1F12530B1F12091D7 +:1019B000E80023FD32C02091E80022FD2AC02091DA +:1019C000E80020FFEDCF2091F20030E0009751F0C9 +:1019D0002830310538F441914093F10001972F5F91 +:1019E0003F4FF4CF41E02830310509F040E020912D +:1019F000E8002E772093E800D3CF4111D3CF09C060 +:101A00008BB5882351F0853041F08091E80083FD4B +:101A100004C08091E80082FFF3CF8091E8008B77CB +:101A20008093E8004EC09032C9F5813209F049C078 +:101A30008091E800877F8093E800E3E8F2E087E0A8 +:101A4000882311F19BB5992311F1953001F1909103 +:101A5000E80093FD1CC09091E80092FFF1CF9091B7 +:101A6000F200992329F09091F10091938150B9F7F8 +:101A70009091E8009B779093E800E2CF853039F0B1 +:101A80008091E80080FD03C08BB58111F7CF809174 +:101A9000E8008E778093E800C1DB13C0923289F4AE +:101AA000813279F48091E800877F8093E80085DBBC +:101AB00080919C0280FF04C05F9830E43A95F1F772 +:101AC0005F9A8091E80083FF57C180919A029091BC +:101AD0009B02953009F46DC030F4913071F168F0DB +:101AE000933059F149C1983009F40EC1993009F485 +:101AF0001AC1963009F040C17EC0803899F0823812 +:101B000009F03AC180919E028F70853008F034C18F +:101B10008093E9008091EB0085FB882780F9109283 +:101B2000E90001C080E09091E800977F9093E80081 +:101B30008093F1001092F100F2C0282F2D7F09F060 +:101B40001BC1823009F018C180919C02811128C00C +:101B500080919E028F702FEF280F243008F00CC167 +:101B60008093E9002091EB0020FF1AC0933021F40C +:101B70008091EB00806212C09091EB009061909395 +:101B8000EB00F80102C0EE0FFF1F8A95E2F7E09329 +:101B9000EA001092EA008091EB0088608093EB00ED +:101BA0001092E9008091E800877F8093E80005DBD0 +:101BB000E3C08111E1C080919C028F77782E8091E3 +:101BC000E300807887298093E3008091E800877F95 +:101BD0008093E800F2DA8091E80080FFFCCF8091EA +:101BE000E30080688093E300711002C082E001C0CE +:101BF00083E08BBDC1C08058823008F0BDC08091A9 +:101C00009C02F0919D02FA831B822A813B81223043 +:101C1000310541F02330310551F02130310509F013 +:101C2000ABC05CC12EE330E0E4E7F0E11BC0811102 +:101C300006C0F601249130E0EAEFF0E10FC08130F8 +:101C400031F4F501249130E0E6EEF0E107C0823096 +:101C500009F092C0E4ECF0E1249130E02115310567 +:101C600009F48AC08091E800877F8093E800809122 +:101C7000A0029091A1022817390708F4C90140E099 +:101C8000009761F12BB52223C9F12530B9F12091DC +:101C9000E80023FD33C02091E80022FD2BC02091F5 +:101CA000E80020FFEDCF2091F20030E0009759F0DE +:101CB0002830310540F444914093F100319601976A +:101CC0002F5F3F4FF3CF41E02830310509F040E06E +:101CD0002091E8002E772093E800D2CF4111D2CF97 +:101CE00009C08BB5882351F0853041F08091E80020 +:101CF00083FD04C08091E80082FFF3CF8091E8006B +:101D00008B778093E80038C08038B1F58091E80087 +:101D1000877F8093E8008091A2028093F1008091F8 +:101D2000E8008E7742CF811127C080919C0290916C +:101D30009D029927029704F58091E800877F8093A0 +:101D4000E80070909C027092A20237DA711006C00F +:101D50008091E30087FD02C081E001C084E08BBD7B +:101D600042E061EC82E046DA46E361E883E042DA91 +:101D700042E260E884E03EDA8091E80083FF0AC036 +:101D80008091E800877F8093E8008091EB0080627B +:101D90008093EB008BB5843081F0F981F43009F049 +:101DA000CFCD10928302109284021092850210927D +:101DB000860234DA5D9A5C9ABFCD909182029111CD +:101DC00016C08FE99FE00197F1F700C000008091F5 +:101DD000E00081608093E0009CE088E10FB6F89419 +:101DE000A895809360000FBE90936000FFCF809312 +:101DF000E9008091E80082FF0AC09091F200911101 +:101E000007C08091E8008B778093E80001C090E0E4 +:101E100080919702813029F4992309F44DC08CDB1D +:101E20004BC0823009F048C0809199022EB3821BCA +:101E300080958F779923B1F08917A0F0F2E0E091B7 +:101E400099028091F1008193EF779150D1F78091C1 +:101E5000E8008B778093E800E093990288EB809309 +:101E6000C90002C08F3719F05C9893E0892E8AB5BB +:101E700090919802891B01F1A89902C08F33C8F094 +:101E800093E09093E9009091E80090FF12C08F33A7 +:101E900008F08FE3E0919802F1E091919093F100C6 +:101EA0008150D1F78091E8008E778093E800E0932D +:101EB00098025D9883E0982EA89B42CD91E095BB57 +:101EC000992021F09A94911001C05D9A882009F41C +:101ED00037CD8A94811034CD5C9A32CD22E130E046 +:101EE000E2EBF0E1BFCEF999FECF92BD81BDF89A49 +:101EF000992780B50895262FF999FECF92BD81BD0F +:101F0000F89A019700B4021639F01FBA20BD0FB637 +:101F1000F894FA9AF99A0FBE0895A1E21A2EAA1B14 +:101F2000BB1BFD010DC0AA1FBB1FEE1FFF1FA21789 +:101F3000B307E407F50720F0A21BB30BE40BF50B86 +:101F4000661F771F881F991F1A9469F7609570950F +:101F5000809590959B01AC01BD01CF010895F89447 +:021F6000FFCFB1 +:101F62000100000000000008484C322E302E3600DE +:101FA000B6CAA0CA92CA8BCA84CA7CCA6ACA089531 +:081FB0000895089508950895B5 +:101FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF81 +:081FF000DFCFDFCFDFCFDFCF31 +:081FF8000010000000DFFBDC1B +:0400000300001000E9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega16u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega16u2.hex new file mode 100644 index 0000000..19742fa --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega16u2.hex @@ -0,0 +1,255 @@ +:103000007EC00000D9C00000D7C00000D5C00000BD +:10301000D3C00000D1C00000CFC00000CDC0000070 +:10302000CBC00000C9C00000C7C000009AC10000AA +:10303000C3C00000C1C00000BFC00000BDC0000090 +:10304000BBC00000B9C00000B7C00000B5C00000A0 +:10305000B3C00000B1C00000AFC0000001C4000058 +:10306000ECC30000A9C00000A7C00000A5C000007C +:10307000A3C0000009023E000201008032090400E2 +:1030800000010202010005240010010424020205CF +:1030900024060001070582030800FF09040100025D +:1030A0000A00000007050402200001070583024012 +:1030B0000001120110010200000841234300060232 +:1030C00001020001200348006F006F0064004C0003 +:1030D0006F0061006400650072003200200055003E +:1030E0006E006F00000012034E00690063006F0065 +:1030F00048006F006F0064000000040309041124FD +:103100001FBECFEFD2E0DEBFCDBF2091FF021092F5 +:10311000FF02909180021092800284B714BE0FB615 +:10312000F894A89530916000386130936000109257 +:1031300060000FBE5D9A5C9AE0E0F0E0459154912A +:103140004F3F5F4F21F181FF18C0273701F19737BB +:10315000F1F087E78093FF02809380028FEF9EE972 +:1031600024E2815090402040E1F700C0000010921E +:10317000FF0210928002F2D00AC080FF02C0EED09F +:1031800006C083FF04C0273711F09737C1F712E05C +:10319000A2E8B2E0E2E6FFE302C005900D92A23998 +:1031A000B107D9F722E0A2E9B2E001C01D92A33A2B +:1031B000B207E1F75ED3D3C623CF80919A0287FF8F +:1031C0000FC08091E80082FD04C08BB58111F9CF5A +:1031D00010C08091E8008B770AC08BB5882349F036 +:1031E0008091E80080FFF9CF8091E8008E7780938E +:1031F000E80008958F708093E900EBEEF0E08081A5 +:1032000081608083EDEEF0E010826093EC004083FB +:103210008091EE00881F8827881F0895CF935B9ABE +:103220001092C9001092C8001092CA001EBA1092E3 +:103230009902109298021ABC209183023091840264 +:1032400040918502509186022115310541055105B5 +:1032500019F4109297024FC0211581EE38074105ED +:10326000510521F481E08093970245C082E080936C +:10327000970280918802813021F0823021F4C0E2EF +:1032800003C0C0E301C0C0E080918702823009F42E +:10329000C86080918902873031F0883031F0863003 +:1032A00029F4C26003C0C46001C0C660DA01C9016C +:1032B000B695A79597958795BC01CD0160587B473A +:1032C000814E9F4F2AD62150310920FD04C021157F +:1032D00080E1380720F03695279580E001C082E034 +:1032E0003093CD002093CC00C093CA008093C800D7 +:1032F00088E98093C9005B98CF91089593E09093FB +:10330000E9009BB5992391F09091E80090FFF9CFE7 +:103310008093F10081E0860D8F3310F4682E0895BC +:10332000612C8091E8008E778093E800089584E016 +:103330008093E9008091E80085FD0DC08091E80050 +:103340008B778093E8008091E80082FDF3CF8BB506 +:103350008111F9CF02C08091F1000895E0E0F0E022 +:1033600009941F920F920FB60F9211242F933F933F +:103370004F935F936F937F938F939F93AF93BF937D +:10338000EF93FF938091E10080FF15C08091E200F0 +:1033900080FF11C08091E2008E7F8093E2008091D7 +:1033A000E20080618093E2008091D8008062809387 +:1033B000D80019BC1BBC8091E10084FF2DC0809116 +:1033C000E20084FF29C084E089BD86E089BD09B49C +:1033D00000FEFDCF8091D8008F7D8093D800809132 +:1033E000E1008F7E8093E1008091E2008F7E8093E8 +:1033F000E2008091E20081608093E2008091A2026D +:10340000882311F084E007C08091E30087FD02C0AB +:1034100081E001C083E08BBD8091E10083FF20C08B +:103420008091E20083FF1CC08091E100877F809340 +:10343000E10082E08BBD1092A2028091E1008E7FBC +:103440008093E1008091E2008E7F8093E200809182 +:10345000E20080618093E20042E060E080E0CADE4A +:10346000FF91EF91BF91AF919F918F917F916F915C +:103470005F914F913F912F910F900FBE0F901F9032 +:1034800018959FB7F89407B600FCFDCFF999FECFC9 +:10349000809529E0E1E0F0E0082E20935700E895C0 +:1034A0009FBF0895E1E0F0E089E0809357008491A8 +:1034B000089529E0FC01209357008491089521E2AA +:1034C000FC01209357008491089507B600FCFDCFBE +:1034D000F999FECF21E0FB010A0120935700E895FE +:1034E000112408952FB7F89407B600FCFDCFF99981 +:1034F000FECF35E0FB0130935700E89507B600FC9E +:10350000FDCF91E190935700E8952FBF08952FB715 +:10351000F89407B600FCFDCFF999FECF33E0FB012C +:1035200030935700E89507B600FCFDCF91E19093EA +:103530005700E8952FBF08957F928F929F92AF9288 +:10354000BF92CF92DF92EF92FF920F931F93CF9390 +:10355000DF93612CECDE082F853419F4109282027F +:1035600007C088E8800F823010F0043521F4DFDED8 +:103570008DE0C4DE3BC10035D9F30C34C9F3043708 +:1035800021F484E4BBDE80E0F4CF013611F489E558 +:10359000F0CF0134D1F4CBDEC82FC9DE2C2F30E0C0 +:1035A000322F2227330F90E0880F991F822B932B05 +:1035B000092E000CAA0BBB0B8093930290939402EC +:1035C000A0939502B0939602D3CF003711F483E510 +:1035D000D0CF033549F4CAE8D2E089918FDE82E08A +:1035E000C139D807D1F702C1063521F481E386DE5F +:1035F00080E3BFCF033731F489E880DE84E97EDEE3 +:103600008EE1B7CF053691F4C12CD12C7601C701DC +:10361000B6017DDF80E8C80ED11CE11CF11CC1148D +:1036200080E3D806E104F10491F7A2CF0C3619F437 +:103630007EDE27DF9DCF023711F434DF9ACF0634C8 +:1036400019F4E0E0F0E009C00E3419F4E3E0F0E032 +:1036500004C0013539F4E2E0F0E089E080935700DE +:10366000849187CF023631F489E548DE80E046DE7A +:1036700080E87FCF023419F0073609F0B4C057DE76 +:10368000F82E55DEC82F53DE182F8BEB810F8230BA +:1036900010F08FE36ECFD0E0DF29073609F03EC08F +:1036A00000E0BB24B394209709F4A0C0C09093021B +:1036B000D0909402E0909502F09096021634B9F4FE +:1036C000E02FF0E0EC29FD29849118DE002369F059 +:1036D00082E0C80ED11CE11CF11CC0929302D09272 +:1036E0009402E0929502F09296020B2515C0D70144 +:1036F000C601B695A79597958795F5D3FFDD82E02E +:10370000C80ED11CE11CF11CC0929302D09294020D +:10371000E0929502F09296022197C5CF8090930295 +:1037200090909402A0909502B0909602163419F4ED +:10373000C501B401ECDE712C00E0209709F44CC007 +:10374000163431F50023E9F0F2DDC0909302D090F9 +:103750009402E0909502F0909602472D50E0582B8D +:10376000C701B601B2DE82E0C80ED11CE11CF11C1B +:10377000C0929302D0929402E0929502F092960247 +:1037800002C0D5DD782E81E0011180E0082F22C033 +:10379000CEDD682F8091930290919402A0919502C2 +:1037A000B0919602B695A79597958795A4D38091E9 +:1037B000930290919402A0919502B0919602029684 +:1037C000A11DB11D8093930290939402A093950242 +:1037D000B09396022197B1CF163409F0C9CEC50136 +:1037E000B40180DEC5CE0B3109F053CF662079F0ED +:1037F00083E08093E9008BB5882389F08091E8000D +:1038000080FFF9CF8091E8008E778093E80084E014 +:103810008093E9008091E8008B778093E800DF9146 +:10382000CF911F910F91FF90EF90DF90CF90BF90BD +:10383000AF909F908F907F9008952F01EEB3F2E0AC +:1038400031903092CE00EEBBF798F2012EB230905C +:10385000990223101895E8E9E093C900F201189540 +:103860003090CE002F01EAB5F1E03192EABDF201CD +:103870001895CF93DF9300D01F92CDB7DEB790E0BD +:1038800080E80FB6F89480936100909361000FBEBA +:1038900091E095BF82E085BF809163008E7F809329 +:1038A0006300909392021092E2001092E1008091E6 +:1038B000D8008F778093D8008091D800806880935B +:1038C000D8008091D8008F7D8093D80084E089BD96 +:1038D00086E089BD09B400FEFDCF1BBC1092A20298 +:1038E00042E060E080E086DC8091E1008E7F8093A2 +:1038F000E1008091E20081608093E2008091E2002B +:1039000088608093E2008091E0008E7F8093E000E9 +:1039100084E085BD8AB1886B8AB95F9A5A9A789497 +:1039200022EAE22E22E0F22E36EEA32E30E3B32E70 +:103930004AEFC42E40E3D42E812C912C01E010E0FC +:103940002BB529831092E9008091E80083FF22C201 +:10395000EAE9F2E08091F1008193EE16FF06D1F7DB +:1039600080919A02982F9F77913209F0AAC0909186 +:103970009B02913209F057C0813A09F0A2C08091B0 +:10398000E800877F8093E8008091A0029091A102D7 +:103990008730910510F087E090E040E0E3E8F2E046 +:1039A000009759F12BB52223C1F12530B1F12091B7 +:1039B000E80023FD32C02091E80022FD2AC02091BA +:1039C000E80020FFEDCF2091F20030E0009751F0A9 +:1039D0002830310538F441914093F10001972F5F71 +:1039E0003F4FF4CF41E02830310509F040E020910D +:1039F000E8002E772093E800D3CF4111D3CF09C040 +:103A00008BB5882351F0853041F08091E80083FD2B +:103A100004C08091E80082FFF3CF8091E8008B77AB +:103A20008093E8004EC09032C9F5813209F049C058 +:103A30008091E800877F8093E800E3E8F2E087E088 +:103A4000882311F19BB5992311F1953001F19091E3 +:103A5000E80093FD1CC09091E80092FFF1CF909197 +:103A6000F200992329F09091F10091938150B9F7D8 +:103A70009091E8009B779093E800E2CF853039F091 +:103A80008091E80080FD03C08BB58111F7CF809154 +:103A9000E8008E778093E800C1DB13C0923289F48E +:103AA000813279F48091E800877F8093E80085DB9C +:103AB00080919C0280FF04C05F9830E43A95F1F752 +:103AC0005F9A8091E80083FF57C180919A0290919C +:103AD0009B02953009F46DC030F4913071F168F0BB +:103AE000933059F149C1983009F40EC1993009F465 +:103AF0001AC1963009F040C17EC0803899F08238F2 +:103B000009F03AC180919E028F70853008F034C16F +:103B10008093E9008091EB0085FB882780F9109263 +:103B2000E90001C080E09091E800977F9093E80061 +:103B30008093F1001092F100F2C0282F2D7F09F040 +:103B40001BC1823009F018C180919C02811128C0EC +:103B500080919E028F702FEF280F243008F00CC147 +:103B60008093E9002091EB0020FF1AC0933021F4EC +:103B70008091EB00806212C09091EB009061909375 +:103B8000EB00F80102C0EE0FFF1F8A95E2F7E09309 +:103B9000EA001092EA008091EB0088608093EB00CD +:103BA0001092E9008091E800877F8093E80005DBB0 +:103BB000E3C08111E1C080919C028F77782E8091C3 +:103BC000E300807887298093E3008091E800877F75 +:103BD0008093E800F2DA8091E80080FFFCCF8091CA +:103BE000E30080688093E300711002C082E001C0AE +:103BF00083E08BBDC1C08058823008F0BDC0809189 +:103C00009C02F0919D02FA831B822A813B81223023 +:103C1000310541F02330310551F02130310509F0F3 +:103C2000ABC05CC12EE330E0E4E7F0E31BC08111E0 +:103C300006C0F601249130E0EAEFF0E30FC08130D6 +:103C400031F4F501249130E0E6EEF0E307C0823074 +:103C500009F092C0E4ECF0E3249130E02115310545 +:103C600009F48AC08091E800877F8093E800809102 +:103C7000A0029091A1022817390708F4C90140E079 +:103C8000009761F12BB52223C9F12530B9F12091BC +:103C9000E80023FD33C02091E80022FD2BC02091D5 +:103CA000E80020FFEDCF2091F20030E0009759F0BE +:103CB0002830310540F444914093F100319601974A +:103CC0002F5F3F4FF3CF41E02830310509F040E04E +:103CD0002091E8002E772093E800D2CF4111D2CF77 +:103CE00009C08BB5882351F0853041F08091E80000 +:103CF00083FD04C08091E80082FFF3CF8091E8004B +:103D00008B778093E80038C08038B1F58091E80067 +:103D1000877F8093E8008091A2028093F1008091D8 +:103D2000E8008E7742CF811127C080919C0290914C +:103D30009D029927029704F58091E800877F809380 +:103D4000E80070909C027092A20237DA711006C0EF +:103D50008091E30087FD02C081E001C084E08BBD5B +:103D600042E061EC82E046DA46E361E883E042DA71 +:103D700042E260E884E03EDA8091E80083FF0AC016 +:103D80008091E800877F8093E8008091EB0080625B +:103D90008093EB008BB5843081F0F981F43009F029 +:103DA000CFCD10928302109284021092850210925D +:103DB000860234DA5D9A5C9ABFCD909182029111AD +:103DC00016C08FE99FE00197F1F700C000008091D5 +:103DD000E00081608093E0009CE088E10FB6F894F9 +:103DE000A895809360000FBE90936000FFCF8093F2 +:103DF000E9008091E80082FF0AC09091F2009111E1 +:103E000007C08091E8008B778093E80001C090E0C4 +:103E100080919702813029F4992309F44DC08CDBFD +:103E20004BC0823009F048C0809199022EB3821BAA +:103E300080958F779923B1F08917A0F0F2E0E09197 +:103E400099028091F1008193EF779150D1F78091A1 +:103E5000E8008B778093E800E093990288EB8093E9 +:103E6000C90002C08F3719F05C9893E0892E8AB59B +:103E700090919802891B01F1A89902C08F33C8F074 +:103E800093E09093E9009091E80090FF12C08F3387 +:103E900008F08FE3E0919802F1E091919093F100A6 +:103EA0008150D1F78091E8008E778093E800E0930D +:103EB00098025D9883E0982EA89B42CD91E095BB37 +:103EC000992021F09A94911001C05D9A882009F4FC +:103ED00037CD8A94811034CD5C9A32CD22E130E026 +:103EE000E2EBF0E3BFCEF999FECF92BD81BDF89A27 +:103EF000992780B50895262FF999FECF92BD81BDEF +:103F0000F89A019700B4021639F01FBA20BD0FB617 +:103F1000F894FA9AF99A0FBE0895A1E21A2EAA1BF4 +:103F2000BB1BFD010DC0AA1FBB1FEE1FFF1FA21769 +:103F3000B307E407F50720F0A21BB30BE40BF50B66 +:103F4000661F771F881F991F1A9469F760957095EF +:103F5000809590959B01AC01BD01CF010895F89427 +:023F6000FFCF91 +:103F62000100000000000008484C322E302E3600BE +:103FA000B6CAA0CA92CA8BCA84CA7CCA6ACA089511 +:083FB000089508950895089595 +:103FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF61 +:083FF000DFCFDFCFDFCFDFCF11 +:083FF8000030000000DFFBDCDB +:0400000300003000C9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega32u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega32u2.hex new file mode 100644 index 0000000..fefb5a2 --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega32u2.hex @@ -0,0 +1,253 @@ +:1070000039C0000094C0000092C0000090C0000091 +:107010008EC000008CC000008AC0000088C0000044 +:1070200086C0000084C0000082C00000AEC1000025 +:107030007EC000007CC000007AC0000078C0000064 +:1070400076C0000074C0000072C0000070C0000074 +:107050006EC000006CC000006AC0000050C4000098 +:107060003BC4000064C0000062C0000060C00000BB +:107070005EC0000011241FBECFEFD4E0DEBFCDBF45 +:107080002091FF041092FF049091800210928002E0 +:1070900084B714BE0FB6F894A8953091600038619B +:1070A00030936000109260000FBE5D9A5C9AE0E041 +:1070B000F0E0459154914F3F5F4F21F181FF18C09F +:1070C000273701F19737F1F087E78093FF0480932A +:1070D00080028FEF9EE924E2815090402040E1F74A +:1070E00000C000001092FF04109280024BD10AC031 +:1070F00080FF02C047D106C083FF04C0273711F0CC +:107100009737C1F713E0A2E8B2E0EAEBFEE702C06E +:1071100005900D92AC31B107D9F723E0ACE1B3E0B3 +:1071200001C01D92AD32B207E1F7F2D3C4C668CFF9 +:107130008091240387FF0FC08091E80082FD04C086 +:107140008BB58111F9CF10C08091E8008B770AC010 +:107150008BB5882349F08091E80080FFF9CF8091BA +:10716000E8008E778093E80008958F708093E9009F +:10717000EBEEF0E0808181608083EDEEF0E0108244 +:107180006093EC0040838091EE00881F8827881F61 +:10719000089520912A0330912B032617370748F0D2 +:1071A0006115710539F42091E8002E772093E800ED +:1071B00001C0B901FC0120E06115710559F18BB5E1 +:1071C0008823D1F18530D1F18091E80083FD38C06A +:1071D0008091E80082FD2AC08091E80080FFECCF1A +:1071E0008091F20090E06115710551F088309105B1 +:1071F00038F421912093F100615071090196F3CF89 +:1072000021E0089709F020E08091E8008E778093D4 +:10721000E800D2CF2111D3CF09C08BB5882361F00C +:10722000853061F08091E80083FD0AC08091E8001C +:1072300082FFF3CF80E0089582E0089583E008950F +:1072400081E00895CF935B9A1092C9001092C80014 +:107250001092CA001EBA10922303109222031ABC85 +:1072600020918302309184024091850250918602E0 +:10727000211531054105510519F4109221034FC024 +:10728000211581EE38074105510521F481E08093F5 +:10729000210345C082E080932103809188028130E0 +:1072A00021F0823021F4C0E203C0C0E301C0C0E09D +:1072B00080918702823009F4C8608091890287300A +:1072C00031F0883031F0863029F4C26003C0C460E8 +:1072D00001C0C660DA01C901B695A7959795879553 +:1072E000BC01CD0160587B47814E9F4FC2D52150D4 +:1072F000310920FD04C0211580E1380720F03695C2 +:10730000279580E001C082E03093CD002093CC002F +:10731000C093CA008093C80088E98093C9005B9835 +:10732000CF91089593E09093E9009BB5992391F054 +:107330009091E80090FFF9CF8093F10081E0860DF5 +:107340008F3310F4682E0895612C8091E8008E77B9 +:107350008093E800089584E08093E9008091E8003C +:1073600085FD0DC08091E8008B778093E8008091C7 +:10737000E80082FDF3CF8BB58111F9CF02C0809177 +:10738000F1000895E0E0F0E009941F920F920FB62B +:107390000F9211242F933F934F935F936F937F939B +:1073A0008F939F93AF93BF93EF93FF938091E100EF +:1073B00080FF15C08091E20080FF11C08091E20043 +:1073C0008E7F8093E2008091E20080618093E200F2 +:1073D0008091D80080628093D80019BC1BBC80913A +:1073E000E10084FF2DC08091E20084FF29C084E089 +:1073F00089BD86E089BD09B400FEFDCF8091D8002B +:107400008F7D8093D8008091E1008F7E8093E10092 +:107410008091E2008F7E8093E2008091E2008160A3 +:107420008093E20080912C03882311F084E007C050 +:107430008091E30087FD02C081E001C083E08BBD45 +:107440008091E10083FF20C08091E20083FF1CC097 +:107450008091E100877F8093E10082E08BBD1092F4 +:107460002C038091E1008E7F8093E1008091E20007 +:107470008E7F8093E2008091E20080618093E20041 +:1074800042E060E080E071DEFF91EF91BF91AF914B +:107490009F918F917F916F915F914F913F912F912C +:1074A0000F900FBE0F901F9018959FB7F89407B6D6 +:1074B00000FCFDCFF999FECF809529E0E1E0F0E0F6 +:1074C000082E20935700E8959FBF0895E1E0F0E073 +:1074D00089E0809357008491089529E0FC0120936E +:1074E00057008491089521E2FC0120935700849174 +:1074F000089507B600FCFDCFF999FECF21E0FB010E +:107500000A0120935700E895112408952FB7F894A5 +:1075100007B600FCFDCFF999FECF35E0FB013093B3 +:107520005700E89507B600FCFDCF91E19093570016 +:10753000E8952FBF08952FB7F89407B600FCFDCF4C +:10754000F999FECF33E0FB0130935700E89507B679 +:1075500000FCFDCF91E190935700E8952FBF08956F +:107560007F928F929F92AF92BF92CF92DF92EF92D3 +:10757000FF920F931F93CF93DF93612CECDE082FC4 +:10758000853419F41092820207C088E8800F823097 +:1075900010F0043521F4DFDE8DE0C4DE76C1003565 +:1075A000D9F30C34C9F3043721F484E4BBDE80E062 +:1075B000F4CF013611F489E5F0CF013491F4CBDE3C +:1075C000C82FC9DE2C2F30E0322F2227330F90E056 +:1075D000880F991F822B932B092E000CAA0BBB0B33 +:1075E00028C1003711F483E5D8CF033549F4C4E14D +:1075F000D3E0899197DE83E0CB31D807D1F745C13D +:10760000063521F481E38EDE80E3C7CF033731F402 +:107610008AE888DE85E986DE8EE1BFCF053691F403 +:10762000C12CD12C7601C701B60185DF80E8C80ED8 +:10763000D11CE11CF11CC11480E7D806E104F1045F +:1076400091F7AACF0C3619F486DE2FDFA5CF0237CB +:1076500011F43CDFA2CF063419F4E0E0F0E009C0F9 +:107660000E3419F4E3E0F0E004C0013539F4E2E04F +:10767000F0E089E08093570084918FCF023631F497 +:1076800089E550DE80E04EDE80E887CF023419F0D5 +:10769000073609F0B2C05FDEF82E5DDEC82F5BDE74 +:1076A000182F8BEB810F823010F08FE376CFD0E074 +:1076B000DF29073609F03EC000E0BB24B3942097D1 +:1076C00009F4E3C0C0901D03D0901E03E0901F0397 +:1076D000F09020031634B9F4E02FF0E0EC29FD29F6 +:1076E000849120DE002369F082E0C80ED11CE11CE9 +:1076F000F11CC0921D03D0921E03E0921F03F09272 +:1077000020030B2515C0D701C601B695A7959795FF +:10771000879595D307DE82E0C80ED11CE11CF11CD1 +:10772000C0921D03D0921E03E0921F03F09220032B +:107730002197C5CF80901D0390901E03A0901F033A +:10774000B0902003163419F4C501B401F4DE712C95 +:1077500000E0209709F44AC0163421F50023E9F02F +:10776000FADDC0901D03D0901E03E0901F03F0903F +:107770002003472D50E0582BC701B601BADE82E046 +:10778000C80ED11CE11CF11CC0921D03D0921E0337 +:10779000E0921F03F092200302C0DDDD782E81E02D +:1077A000082722C0D8DD682F80911D0390911E0309 +:1077B000A0911F03B0912003B695A7959795879543 +:1077C00046D380911D0390911E03A0911F03B09199 +:1077D00020030296A11DB11D80931D0390931E03EB +:1077E000A0931F03B09320032197B3CF163409F061 +:1077F000D3CEC501B4018ADECFCE043419F5ABDD9A +:10780000682F80911D0390911E03A0911F03B091DA +:107810002003B695A7959795879519D380911D0359 +:1078200090911E03A0911F03B09120030296A11D09 +:10783000B11D80931D0390931E03A0931F03B0936B +:107840002003AACE0436F1F4C0901D03D0901E038D +:10785000E0901F03F0902003D701C601B695A795CD +:1078600097958795ECD25EDD82E0C80ED11CE11CB5 +:10787000F11CC0921D03D0921E03E0921F03F092F0 +:10788000200303C00B3109F010CF662079F083E0AC +:107890008093E9008BB5882389F08091E80080FF10 +:1078A000F9CF8091E8008E778093E80084E08093A0 +:1078B000E9008091E8008B778093E800DF91CF9119 +:1078C0001F910F91FF90EF90DF90CF90BF90AF90FE +:1078D0009F908F907F9008952F01EEB3F2E031904A +:1078E0003092CE00EEBBF798F2012EB23090230317 +:1078F00023101895E8E9E093C900F201189530903B +:10790000CE002F01EAB5F1E03192EABDF2011895FF +:1079100090E080E80FB6F894809361009093610046 +:107920000FBE91E095BF82E085BF809163008E7F9E +:107930008093630090931C031092E2001092E10088 +:107940008091D8008F778093D8008091D80080688C +:107950008093D8008091D8008F7D8093D80084E0F8 +:1079600089BD86E089BD09B400FEFDCF1BBC109225 +:107970002C0342E060E080E0F8DB8091E1008E7F44 +:107980008093E1008091E20081608093E200809129 +:10799000E20088608093E2008091E0008E7F809317 +:1079A000E00084E085BD8AB1886B8AB95F9A5A9AF3 +:1079B0007894F12CE12C01E010E0DBB41092E900A6 +:1079C0008091E80083FF79C1E4E2F3E08091F10067 +:1079D000819323E0EC32F207C9F780912403982FBA +:1079E0009F77913209F065C090912503913299F407 +:1079F000813A09F05EC08091E800877F8093E800BB +:107A000067E070E083E892E0C4DB8091E8008B7768 +:107A10008093E8004EC09032C9F5813209F049C028 +:107A20008091E800877F8093E800E3E8F2E087E058 +:107A3000882311F19BB5992311F1953001F19091B3 +:107A4000E80093FD1CC09091E80092FFF1CF909167 +:107A5000F200992329F09091F10091938150B9F7A8 +:107A60009091E8009B779093E800E2CF853039F061 +:107A70008091E80080FD03C08BB58111F7CF809124 +:107A8000E8008E778093E800DDDB13C0923289F442 +:107A9000813279F48091E800877F8093E80048DBA9 +:107AA0008091260380FF04C05F9830E43A95F1F797 +:107AB0005F9A8091E80083FFF2C080912403909147 +:107AC0002503953009F46AC030F4913071F168F003 +:107AD000933059F1E4C0983009F4A6C0993009F404 +:107AE000B5C0963009F0DBC07BC0803899F0823891 +:107AF00009F0D5C0809128038F70853008F0CFC081 +:107B00008093E9008091EB0085FB882780F9109233 +:107B1000E90001C080E09091E800977F9093E80031 +:107B20008093F1001092F1008AC0282F2D7F09F078 +:107B3000B6C0823009F0B3C080912603811128C0FD +:107B4000809128038F702FEF280F243008F0A7C0F2 +:107B50008093E9002091EB0020FF1AC0933021F4BC +:107B60008091EB00806212C09091EB009061909345 +:107B7000EB00980102C0220F331F8A95E2F7209391 +:107B8000EA001092EA008091EB0088608093EB009D +:107B90001092E9008091E800877F54C081117FC076 +:107BA000809126038F77C82E8091E30080788C29FE +:107BB0008093E3008091E800877F8093E800B8DA43 +:107BC0008091E80080FFFCCF8091E3008068809383 +:107BD000E300C11002C082E001C083E08BBD5FC042 +:107BE0008058823008F05BC08091260330912703D3 +:107BF000C32F90E0D92FC230D10539F0C330D10561 +:107C000049F0219709F04BC0FBC06EE370E084ECB3 +:107C100092E009C1882309F4F8C0813009F4FAC060 +:107C2000823009F03CC0FBC08038C9F58091E80083 +:107C3000877F8093E80080912C038093F1008091EE +:107C4000E8008E778093E80073DA29C0811127C09D +:107C500080912603909127039927029704F580913C +:107C6000E800877F8093E800C0902603C0922C0331 +:107C70005FDAC11006C08091E30087FD02C081E099 +:107C800001C084E08BBD42E061EC82E06EDA46E345 +:107C900061E883E06ADA42E260E884E066DA8091D3 +:107CA000E80083FF0AC08091E800877F8093E800A6 +:107CB0008091EB0080628093EB008BB5843079F08B +:107CC00024E0D2127ACE1092830210928402109293 +:107CD000850210928602B6DA5D9A5C9A6ACE90911D +:107CE0008202911116C08FE99FE00197F1F700C061 +:107CF00000008091E00081608093E0009CE088E1DA +:107D00000FB6F894A895809360000FBE9093600022 +:107D1000FFCF8093E9008091E80082FF0AC0909134 +:107D2000F200911107C08091E8008B778093E80002 +:107D300001C090E080912103813029F4992309F456 +:107D40004DC00EDC4BC0823009F048C08091230347 +:107D50002EB3821B80958F779923B1F08917A0F0FD +:107D6000F2E0E09123038091F1008193EF7791504D +:107D7000D1F78091E8008B778093E800E0932303AC +:107D800088EB8093C90002C08F3719F05C9893E0AC +:107D9000F92E8AB590912203891B01F1A89902C09E +:107DA0008F33C8F093E09093E9009091E80090FF42 +:107DB00012C08F3308F08FE3E0912203F1E091913C +:107DC0009093F1008150D1F78091E8008E778093F5 +:107DD000E800E09322035D9883E0E82EA89BEDCDB8 +:107DE00081E085BBEE2021F0EA94E11001C05D9AAC +:107DF000FF2009F4E2CDFA94F110DFCD5C9ADDCDDD +:107E000062E170E082E093E00EC064E070E08CEA32 +:107E100092E009C062E170E080EB92E004C060E2B1 +:107E200070E08AE892E02091E800277F2093E80044 +:107E3000B0D98091E8008B778093E80030CFF99932 +:107E4000FECF92BD81BDF89A992780B50895262F5F +:107E5000F999FECF92BD81BDF89A019700B4021640 +:107E600039F01FBA20BD0FB6F894FA9AF99A0FBEEE +:107E70000895A1E21A2EAA1BBB1BFD010DC0AA1F6B +:107E8000BB1FEE1FFF1FA217B307E407F50720F083 +:107E9000A21BB30BE40BF50B661F771F881F991FFE +:107EA0001A9469F760957095809590959B01AC0147 +:0A7EB000BD01CF010895F894FFCF43 +:107EBA000100000000000008200348006F006F0066 +:107ECA0064004C006F0061006400650072003200BB +:107EDA00200055006E006F0000000403090412031D +:107EEA004E00690063006F0048006F006F00640075 +:107EFA00000009023E00020100803209040000016C +:107F0A0002020100052400100104240202052406CD +:107F1A000001070582030800FF09040100020A00A4 +:107F2A000000070504022000010705830240000142 +:107F3A001201100102000008412343000602010257 +:0A7F4A000001484C322E302E3600A4 +:107FA000CACAB4CAA6CA9FCA98CA90CA7ECA089545 +:087FB000089508950895089555 +:107FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF21 +:087FF000DFCFDFCFDFCFDFCFD1 +:087FF8000070000000DFFBDC5B +:040000030000700089 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega8u2.hex b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega8u2.hex new file mode 100644 index 0000000..dcac67b --- /dev/null +++ b/avr/bootloaders/HexFiles/HoodLoader2_0_6_Uno_atmega8u2.hex @@ -0,0 +1,255 @@ +:101000007EC00000D9C00000D7C00000D5C00000DD +:10101000D3C00000D1C00000CFC00000CDC0000090 +:10102000CBC00000C9C00000C7C000009AC10000CA +:10103000C3C00000C1C00000BFC00000BDC00000B0 +:10104000BBC00000B9C00000B7C00000B5C00000C0 +:10105000B3C00000B1C00000AFC0000001C4000078 +:10106000ECC30000A9C00000A7C00000A5C000009C +:10107000A3C0000009023E00020100803209040002 +:1010800000010202010005240010010424020205EF +:1010900024060001070582030800FF09040100027D +:1010A0000A00000007050402200001070583024032 +:1010B0000001120110010200000841234300060252 +:1010C00001020001200348006F006F0064004C0023 +:1010D0006F0061006400650072003200200055005E +:1010E0006E006F00000012034E00690063006F0085 +:1010F00048006F006F00640000000403090411241D +:101100001FBECFEFD2E0DEBFCDBF2091FF02109215 +:10111000FF02909180021092800284B714BE0FB635 +:10112000F894A89530916000386130936000109277 +:1011300060000FBE5D9A5C9AE0E0F0E0459154914A +:101140004F3F5F4F21F181FF18C0273701F19737DB +:10115000F1F087E78093FF02809380028FEF9EE992 +:1011600024E2815090402040E1F700C0000010923E +:10117000FF0210928002F2D00AC080FF02C0EED0BF +:1011800006C083FF04C0273711F09737C1F712E07C +:10119000A2E8B2E0E2E6FFE102C005900D92A239BA +:1011A000B107D9F722E0A2E9B2E001C01D92A33A4B +:1011B000B207E1F75ED3D3C623CF80919A0287FFAF +:1011C0000FC08091E80082FD04C08BB58111F9CF7A +:1011D00010C08091E8008B770AC08BB5882349F056 +:1011E0008091E80080FFF9CF8091E8008E778093AE +:1011F000E80008958F708093E900EBEEF0E08081C5 +:1012000081608083EDEEF0E010826093EC0040831B +:101210008091EE00881F8827881F0895CF935B9ADE +:101220001092C9001092C8001092CA001EBA109203 +:101230009902109298021ABC209183023091840284 +:1012400040918502509186022115310541055105D5 +:1012500019F4109297024FC0211581EE380741050D +:10126000510521F481E08093970245C082E080938C +:10127000970280918802813021F0823021F4C0E20F +:1012800003C0C0E301C0C0E080918702823009F44E +:10129000C86080918902873031F0883031F0863023 +:1012A00029F4C26003C0C46001C0C660DA01C9018C +:1012B000B695A79597958795BC01CD0160587B475A +:1012C000814E9F4F2AD62150310920FD04C021159F +:1012D00080E1380720F03695279580E001C082E054 +:1012E0003093CD002093CC00C093CA008093C800F7 +:1012F00088E98093C9005B98CF91089593E090931B +:10130000E9009BB5992391F09091E80090FFF9CF07 +:101310008093F10081E0860D8F3310F4682E0895DC +:10132000612C8091E8008E778093E800089584E036 +:101330008093E9008091E80085FD0DC08091E80070 +:101340008B778093E8008091E80082FDF3CF8BB526 +:101350008111F9CF02C08091F1000895E0E0F0E042 +:1013600009941F920F920FB60F9211242F933F935F +:101370004F935F936F937F938F939F93AF93BF939D +:10138000EF93FF938091E10080FF15C08091E20010 +:1013900080FF11C08091E2008E7F8093E2008091F7 +:1013A000E20080618093E2008091D80080628093A7 +:1013B000D80019BC1BBC8091E10084FF2DC0809136 +:1013C000E20084FF29C084E089BD86E089BD09B4BC +:1013D00000FEFDCF8091D8008F7D8093D800809152 +:1013E000E1008F7E8093E1008091E2008F7E809308 +:1013F000E2008091E20081608093E2008091A2028D +:10140000882311F084E007C08091E30087FD02C0CB +:1014100081E001C083E08BBD8091E10083FF20C0AB +:101420008091E20083FF1CC08091E100877F809360 +:10143000E10082E08BBD1092A2028091E1008E7FDC +:101440008093E1008091E2008E7F8093E2008091A2 +:10145000E20080618093E20042E060E080E0CADE6A +:10146000FF91EF91BF91AF919F918F917F916F917C +:101470005F914F913F912F910F900FBE0F901F9052 +:1014800018959FB7F89407B600FCFDCFF999FECFE9 +:10149000809529E0E1E0F0E0082E20935700E895E0 +:1014A0009FBF0895E1E0F0E089E0809357008491C8 +:1014B000089529E0FC01209357008491089521E2CA +:1014C000FC01209357008491089507B600FCFDCFDE +:1014D000F999FECF21E0FB010A0120935700E8951E +:1014E000112408952FB7F89407B600FCFDCFF999A1 +:1014F000FECF35E0FB0130935700E89507B600FCBE +:10150000FDCF91E190935700E8952FBF08952FB735 +:10151000F89407B600FCFDCFF999FECF33E0FB014C +:1015200030935700E89507B600FCFDCF91E190930A +:101530005700E8952FBF08957F928F929F92AF92A8 +:10154000BF92CF92DF92EF92FF920F931F93CF93B0 +:10155000DF93612CECDE082F853419F4109282029F +:1015600007C088E8800F823010F0043521F4DFDEF8 +:101570008DE0C4DE3BC10035D9F30C34C9F3043728 +:1015800021F484E4BBDE80E0F4CF013611F489E578 +:10159000F0CF0134D1F4CBDEC82FC9DE2C2F30E0E0 +:1015A000322F2227330F90E0880F991F822B932B25 +:1015B000092E000CAA0BBB0B80939302909394020C +:1015C000A0939502B0939602D3CF003711F483E530 +:1015D000D0CF033549F4CAE8D2E089918FDE82E0AA +:1015E000C139D807D1F702C1063521F481E386DE7F +:1015F00080E3BFCF033731F489E880DE83E97EDE04 +:101600008EE1B7CF053691F4C12CD12C7601C701FC +:10161000B6017DDF80E8C80ED11CE11CF11CC114AD +:1016200080E1D806E104F10491F7A2CF0C3619F459 +:101630007EDE27DF9DCF023711F434DF9ACF0634E8 +:1016400019F4E0E0F0E009C00E3419F4E3E0F0E052 +:1016500004C0013539F4E2E0F0E089E080935700FE +:10166000849187CF023631F489E548DE80E046DE9A +:1016700080E87FCF023419F0073609F0B4C057DE96 +:10168000F82E55DEC82F53DE182F8BEB810F8230DA +:1016900010F08FE36ECFD0E0DF29073609F03EC0AF +:1016A00000E0BB24B394209709F4A0C0C09093023B +:1016B000D0909402E0909502F09096021634B9F41E +:1016C000E02FF0E0EC29FD29849118DE002369F079 +:1016D00082E0C80ED11CE11CF11CC0929302D09292 +:1016E0009402E0929502F09296020B2515C0D70164 +:1016F000C601B695A79597958795F5D3FFDD82E04E +:10170000C80ED11CE11CF11CC0929302D09294022D +:10171000E0929502F09296022197C5CF80909302B5 +:1017200090909402A0909502B0909602163419F40D +:10173000C501B401ECDE712C00E0209709F44CC027 +:10174000163431F50023E9F0F2DDC0909302D09019 +:101750009402E0909502F0909602472D50E0582BAD +:10176000C701B601B2DE82E0C80ED11CE11CF11C3B +:10177000C0929302D0929402E0929502F092960267 +:1017800002C0D5DD782E81E0011180E0082F22C053 +:10179000CEDD682F8091930290919402A0919502E2 +:1017A000B0919602B695A79597958795A4D3809109 +:1017B000930290919402A0919502B09196020296A4 +:1017C000A11DB11D8093930290939402A093950262 +:1017D000B09396022197B1CF163409F0C9CEC50156 +:1017E000B40180DEC5CE0B3109F053CF662079F00D +:1017F00083E08093E9008BB5882389F08091E8002D +:1018000080FFF9CF8091E8008E778093E80084E034 +:101810008093E9008091E8008B778093E800DF9166 +:10182000CF911F910F91FF90EF90DF90CF90BF90DD +:10183000AF909F908F907F9008952F01EEB3F2E0CC +:1018400031903092CE00EEBBF798F2012EB230907C +:10185000990223101895E8E9E093C900F201189560 +:101860003090CE002F01EAB5F1E03192EABDF201ED +:101870001895CF93DF9300D01F92CDB7DEB790E0DD +:1018800080E80FB6F89480936100909361000FBEDA +:1018900091E095BF82E085BF809163008E7F809349 +:1018A0006300909392021092E2001092E100809106 +:1018B000D8008F778093D8008091D800806880937B +:1018C000D8008091D8008F7D8093D80084E089BDB6 +:1018D00086E089BD09B400FEFDCF1BBC1092A202B8 +:1018E00042E060E080E086DC8091E1008E7F8093C2 +:1018F000E1008091E20081608093E2008091E2004B +:1019000088608093E2008091E0008E7F8093E00009 +:1019100084E085BD8AB1886B8AB95F9A5A9A7894B7 +:1019200022EAE22E22E0F22E36EEA32E30E1B32E92 +:101930004AEFC42E40E1D42E812C912C01E010E01E +:101940002BB529831092E9008091E80083FF22C221 +:10195000EAE9F2E08091F1008193EE16FF06D1F7FB +:1019600080919A02982F9F77913209F0AAC09091A6 +:101970009B02913209F057C0813A09F0A2C08091D0 +:10198000E800877F8093E8008091A0029091A102F7 +:101990008730910510F087E090E040E0E3E8F2E066 +:1019A000009759F12BB52223C1F12530B1F12091D7 +:1019B000E80023FD32C02091E80022FD2AC02091DA +:1019C000E80020FFEDCF2091F20030E0009751F0C9 +:1019D0002830310538F441914093F10001972F5F91 +:1019E0003F4FF4CF41E02830310509F040E020912D +:1019F000E8002E772093E800D3CF4111D3CF09C060 +:101A00008BB5882351F0853041F08091E80083FD4B +:101A100004C08091E80082FFF3CF8091E8008B77CB +:101A20008093E8004EC09032C9F5813209F049C078 +:101A30008091E800877F8093E800E3E8F2E087E0A8 +:101A4000882311F19BB5992311F1953001F1909103 +:101A5000E80093FD1CC09091E80092FFF1CF9091B7 +:101A6000F200992329F09091F10091938150B9F7F8 +:101A70009091E8009B779093E800E2CF853039F0B1 +:101A80008091E80080FD03C08BB58111F7CF809174 +:101A9000E8008E778093E800C1DB13C0923289F4AE +:101AA000813279F48091E800877F8093E80085DBBC +:101AB00080919C0280FF04C05F9830E43A95F1F772 +:101AC0005F9A8091E80083FF57C180919A029091BC +:101AD0009B02953009F46DC030F4913071F168F0DB +:101AE000933059F149C1983009F40EC1993009F485 +:101AF0001AC1963009F040C17EC0803899F0823812 +:101B000009F03AC180919E028F70853008F034C18F +:101B10008093E9008091EB0085FB882780F9109283 +:101B2000E90001C080E09091E800977F9093E80081 +:101B30008093F1001092F100F2C0282F2D7F09F060 +:101B40001BC1823009F018C180919C02811128C00C +:101B500080919E028F702FEF280F243008F00CC167 +:101B60008093E9002091EB0020FF1AC0933021F40C +:101B70008091EB00806212C09091EB009061909395 +:101B8000EB00F80102C0EE0FFF1F8A95E2F7E09329 +:101B9000EA001092EA008091EB0088608093EB00ED +:101BA0001092E9008091E800877F8093E80005DBD0 +:101BB000E3C08111E1C080919C028F77782E8091E3 +:101BC000E300807887298093E3008091E800877F95 +:101BD0008093E800F2DA8091E80080FFFCCF8091EA +:101BE000E30080688093E300711002C082E001C0CE +:101BF00083E08BBDC1C08058823008F0BDC08091A9 +:101C00009C02F0919D02FA831B822A813B81223043 +:101C1000310541F02330310551F02130310509F013 +:101C2000ABC05CC12EE330E0E4E7F0E11BC0811102 +:101C300006C0F601249130E0EAEFF0E10FC08130F8 +:101C400031F4F501249130E0E6EEF0E107C0823096 +:101C500009F092C0E4ECF0E1249130E02115310567 +:101C600009F48AC08091E800877F8093E800809122 +:101C7000A0029091A1022817390708F4C90140E099 +:101C8000009761F12BB52223C9F12530B9F12091DC +:101C9000E80023FD33C02091E80022FD2BC02091F5 +:101CA000E80020FFEDCF2091F20030E0009759F0DE +:101CB0002830310540F444914093F100319601976A +:101CC0002F5F3F4FF3CF41E02830310509F040E06E +:101CD0002091E8002E772093E800D2CF4111D2CF97 +:101CE00009C08BB5882351F0853041F08091E80020 +:101CF00083FD04C08091E80082FFF3CF8091E8006B +:101D00008B778093E80038C08038B1F58091E80087 +:101D1000877F8093E8008091A2028093F1008091F8 +:101D2000E8008E7742CF811127C080919C0290916C +:101D30009D029927029704F58091E800877F8093A0 +:101D4000E80070909C027092A20237DA711006C00F +:101D50008091E30087FD02C081E001C084E08BBD7B +:101D600042E061EC82E046DA46E361E883E042DA91 +:101D700042E260E884E03EDA8091E80083FF0AC036 +:101D80008091E800877F8093E8008091EB0080627B +:101D90008093EB008BB5843081F0F981F43009F049 +:101DA000CFCD10928302109284021092850210927D +:101DB000860234DA5D9A5C9ABFCD909182029111CD +:101DC00016C08FE99FE00197F1F700C000008091F5 +:101DD000E00081608093E0009CE088E10FB6F89419 +:101DE000A895809360000FBE90936000FFCF809312 +:101DF000E9008091E80082FF0AC09091F200911101 +:101E000007C08091E8008B778093E80001C090E0E4 +:101E100080919702813029F4992309F44DC08CDB1D +:101E20004BC0823009F048C0809199022EB3821BCA +:101E300080958F779923B1F08917A0F0F2E0E091B7 +:101E400099028091F1008193EF779150D1F78091C1 +:101E5000E8008B778093E800E093990288EB809309 +:101E6000C90002C08F3719F05C9893E0892E8AB5BB +:101E700090919802891B01F1A89902C08F33C8F094 +:101E800093E09093E9009091E80090FF12C08F33A7 +:101E900008F08FE3E0919802F1E091919093F100C6 +:101EA0008150D1F78091E8008E778093E800E0932D +:101EB00098025D9883E0982EA89B42CD91E095BB57 +:101EC000992021F09A94911001C05D9A882009F41C +:101ED00037CD8A94811034CD5C9A32CD22E130E046 +:101EE000E2EBF0E1BFCEF999FECF92BD81BDF89A49 +:101EF000992780B50895262FF999FECF92BD81BD0F +:101F0000F89A019700B4021639F01FBA20BD0FB637 +:101F1000F894FA9AF99A0FBE0895A1E21A2EAA1B14 +:101F2000BB1BFD010DC0AA1FBB1FEE1FFF1FA21789 +:101F3000B307E407F50720F0A21BB30BE40BF50B86 +:101F4000661F771F881F991F1A9469F7609570950F +:101F5000809590959B01AC01BD01CF010895F89447 +:021F6000FFCFB1 +:101F62000100000000000008484C322E302E3600DE +:101FA000B6CAA0CA92CA8BCA84CA7CCA6ACA089531 +:081FB0000895089508950895B5 +:101FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF81 +:081FF000DFCFDFCFDFCFDFCF31 +:081FF8000010000000DFFBDC1B +:0400000300001000E9 +:00000001FF diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Leonardo_atmega32u4.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Leonardo_atmega32u4.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Leonardo_atmega32u4.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Leonardo_atmega32u4.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_at90usb162.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_at90usb162.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_at90usb162.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_at90usb162.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_at90usb82.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_at90usb82.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_at90usb82.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_at90usb82.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega16u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega16u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega16u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega16u2.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega32u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega32u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega32u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega32u2.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega8u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega8u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Mega_atmega8u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Mega_atmega8u2.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Micro_atmega32u4.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Micro_atmega32u4.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Micro_atmega32u4.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Micro_atmega32u4.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_at90usb162.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_at90usb162.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_at90usb162.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_at90usb162.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_at90usb82.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_at90usb82.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_at90usb82.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_at90usb82.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega16u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega16u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega16u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega16u2.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega32u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega32u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega32u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega32u2.hex diff --git a/avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega8u2.hex b/avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega8u2.hex similarity index 100% rename from avr/bootloaders/HexFiles/HoodLoader2_0_5_Uno_atmega8u2.hex rename to avr/bootloaders/LegacyVersions/HoodLoader2_0_5_Uno_atmega8u2.hex diff --git a/avr/platform.txt b/avr/platform.txt index 68db93d..f54f3a1 100644 --- a/avr/platform.txt +++ b/avr/platform.txt @@ -6,4 +6,4 @@ # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification name=Hoodloader2 Boards -version=2.0.5 +version=2.0.6