Add script reading bootloader flags
[pub/lufa.git] / Bootloaders / Printer / BootloaderPrinter.h
index 8582d84..661896b 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2013.
+     Copyright (C) Dean Camera, 2021.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2013  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2021  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
                #include <avr/wdt.h>
                #include <avr/power.h>
                #include <avr/interrupt.h>
+               #include <util/delay.h>
 
                #include "Descriptors.h"
+               #include "BootloaderAPI.h"
 
-               #include <LUFA/Drivers/USB/USB.h>
                #include <LUFA/Drivers/Board/LEDs.h>
+               #include <LUFA/Drivers/USB/USB.h>
+               #include <LUFA/Platform/Platform.h>
+
+       /* Preprocessor Checks: */
+               #if !defined(__OPTIMIZE_SIZE__)
+                       #error This bootloader requires that it be optimized for size, not speed, to fit into the target device. Change optimization settings and try again.
+               #endif
 
        /* Macros: */
                /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
                /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
                #define LEDMASK_USB_BUSY           LEDS_LED2
 
+               /** Magic bootloader key to unlock forced application start mode. */
+               #define MAGIC_BOOT_KEY             0xDC42
+
+       /* Type Defines: */
+               #if (FLASHEND > 0xFFFF)
+                       typedef uint32_t flashaddr_t;
+               #else
+                       typedef uint16_t flashaddr_t;
+               #endif
+
        /* Enums: */
                /** Intel HEX parser state machine states. */
                enum HEX_Parser_States_t