PrinterBootloader: Don't store 32-bit HEX parser flash offsets on small flash devices.
authorDean Camera <dean@fourwalledcubicle.com>
Wed, 5 Dec 2018 09:17:27 +0000 (20:17 +1100)
committerDean Camera <dean@fourwalledcubicle.com>
Wed, 5 Dec 2018 09:17:27 +0000 (20:17 +1100)
Bootloaders/Printer/BootloaderPrinter.c
Bootloaders/Printer/BootloaderPrinter.h

index 629cc07..94521ef 100644 (file)
@@ -67,7 +67,7 @@ USB_ClassInfo_PRNT_Device_t TextOnly_Printer_Interface =
 /** Intel HEX parser state machine state information, to track the contents of
  *  a HEX file streamed in as a sequence of arbitrary bytes.
  */
-struct
+static struct
 {
        /** Current HEX parser state machine state. */
        uint8_t  ParserState;
@@ -87,11 +87,11 @@ struct
        /** Checksum of the current record received so far. */
        uint8_t  Checksum;
        /** Starting address of the last addressed FLASH page. */
-       uint32_t PageStartAddress;
+       flashaddr_t PageStartAddress;
        /** Current 32-bit byte extended base address in FLASH being targeted. */
-       uint32_t CurrBaseAddress;
+       flashaddr_t CurrBaseAddress;
        /** Current 32-bit byte address in FLASH being targeted. */
-       uint32_t CurrAddress;
+       flashaddr_t CurrAddress;
 } HEXParser;
 
 /** Indicates if there is data waiting to be written to a physical page of
index 78f938c..c927ec5 100644 (file)
                /** 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