X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/d9752503312da46ec805400e2e05cf03d4b33431..6655815b32fc26f15e83bf12d14a6684f70e2d31:/Bootloaders/DFU/BootloaderDFU.h diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h index 3ddd395c1..ffd330d7f 100644 --- a/Bootloaders/DFU/BootloaderDFU.h +++ b/Bootloaders/DFU/BootloaderDFU.h @@ -1,21 +1,21 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. - + Copyright (C) Dean Camera, 2012. + dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + 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 + 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 + 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 disclaim all warranties with regard to this @@ -44,27 +44,27 @@ #include #include #include + #include #include - + #include "Descriptors.h" - + #include "BootloaderAPI.h" + #include "Config/AppConfig.h" + #include - - /* Macros: */ - /** Configuration define. Define this token to true to case the bootloader to reject all memory commands - * until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this - * can protect the AVR's firmware from being dumped from a secured AVR. When false, memory operations are - * allowed at any time. - */ - #define SECURE_MODE false + #include + /* Macros: */ /** Major bootloader version number. */ #define BOOTLOADER_VERSION_MINOR 2 /** Minor bootloader version number. */ #define BOOTLOADER_VERSION_REV 0 + + /** Magic bootloader key to unlock forced application start mode. */ + #define MAGIC_BOOT_KEY 0xDC42CACA - /** Complete bootloader version number expressed as a packed byte, constructed from the + /** Complete bootloader version number expressed as a packed byte, constructed from the * two individual bootloader version macros. */ #define BOOTLOADER_VERSION ((BOOTLOADER_VERSION_MINOR << 4) | BOOTLOADER_VERSION_REV) @@ -74,7 +74,7 @@ /** Second byte of the bootloader identification bytes, used to identify a device's bootloader. */ #define BOOTLOADER_ID_BYTE2 0xFB - + /** Convenience macro, used to determine if the issued command is the given one-byte long command. * * \param[in] dataarr Command byte array to check against @@ -89,7 +89,7 @@ * \param[in] cb2 Second command byte to check */ #define IS_TWOBYTE_COMMAND(dataarr, cb1, cb2) ((dataarr[0] == (cb1)) && (dataarr[1] == (cb2))) - + /** Length of the DFU file suffix block, appended to the end of each complete memory write command. * The DFU file suffix is currently unused (but is designed to give extra file information, such as * a CRC of the complete firmware for error checking) and so is discarded. @@ -100,27 +100,27 @@ * Filler bytes are added to the start of each complete memory write command, and must be discarded. */ #define DFU_FILLER_BYTES_SIZE 26 - + /** DFU class command request to detach from the host. */ - #define REQ_DFU_DETATCH 0x00 + #define DFU_REQ_DETATCH 0x00 /** DFU class command request to send data from the host to the bootloader. */ - #define REQ_DFU_DNLOAD 0x01 + #define DFU_REQ_DNLOAD 0x01 /** DFU class command request to send data from the bootloader to the host. */ - #define REQ_DFU_UPLOAD 0x02 + #define DFU_REQ_UPLOAD 0x02 /** DFU class command request to get the current DFU status and state from the bootloader. */ - #define REQ_DFU_GETSTATUS 0x03 + #define DFU_REQ_GETSTATUS 0x03 /** DFU class command request to reset the current DFU status and state variables to their defaults. */ - #define REQ_DFU_CLRSTATUS 0x04 + #define DFU_REQ_CLRSTATUS 0x04 /** DFU class command request to get the current DFU state of the bootloader. */ - #define REQ_DFU_GETSTATE 0x05 + #define DFU_REQ_GETSTATE 0x05 /** DFU class command request to abort the current multi-request transfer and return to the dfuIDLE state. */ - #define REQ_DFU_ABORT 0x06 + #define DFU_REQ_ABORT 0x06 /** DFU command to begin programming the device's memory. */ #define COMMAND_PROG_START 0x01 @@ -141,11 +141,11 @@ /* Type Defines: */ /** Type define for a non-returning function pointer to the loaded application. */ typedef void (*AppPtr_t)(void) ATTR_NO_RETURN; - + /** Type define for a structure containing a complete DFU command issued by the host. */ typedef struct { - uint8_t Command; /**< Single byte command to perform, one of the COMMAND_* macro values */ + uint8_t Command; /**< Single byte command to perform, one of the \c COMMAND_* macro values */ uint8_t Data[5]; /**< Command parameters */ uint16_t DataSize; /**< Size of the command parameters */ } DFU_Command_t; @@ -187,12 +187,12 @@ errUNKNOWN = 14, errSTALLEDPKT = 15 }; - + /* Function Prototypes: */ - void SetupHardware(void); - void ResetHardware(void); + static void SetupHardware(void); + static void ResetHardware(void); - void EVENT_USB_Device_UnhandledControlRequest(void); + void EVENT_USB_Device_ControlRequest(void); #if defined(INCLUDE_FROM_BOOTLOADER_C) static void DiscardFillerBytes(uint8_t NumberOfBytes); @@ -204,4 +204,7 @@ static void ProcessReadCommand(void); #endif + void Application_Jump_Check(void) ATTR_INIT_SECTION(3); + #endif +