Rename the Doxygen page source directory from ManPages/ to DoxygenPages/ to prevent...
[pub/USBasp.git] / Bootloaders / DFU / BootloaderDFU.c
index 9f61660..078d59d 100644 (file)
@@ -87,7 +87,7 @@ static uint8_t Flash64KBPage = 0;
  */
 static uint16_t StartAddr = 0x0000;
 
-/** Memory end address, indicating the end address to read to/write from in the memory being addressed (either FLASH
+/** Memory end address, indicating the end address to read from/write to in the memory being addressed (either FLASH
  *  of EEPROM depending on the issued command from the host).
  */
 static uint16_t EndAddr = 0x0000;
@@ -99,6 +99,10 @@ static uint16_t EndAddr = 0x0000;
  */
 int main(void)
 {
+       /* Force a reference to the API jump table to prevent the linker from discarding it */
+       uint8_t* volatile Dummy = BootloaderAPI_JumpTable;
+       (void)Dummy;
+
        /* Configure hardware required by the bootloader */
        SetupHardware();
 
@@ -181,10 +185,7 @@ ISR(TIMER1_OVF_vect, ISR_BLOCK)
  *  internally.
  */
 void EVENT_USB_Device_ControlRequest(void)
-{
-       /* Get the size of the command and data from the wLength value */
-       SentCommand.DataSize = USB_ControlRequest.wLength;
-       
+{      
        /* Ignore any requests that aren't directed to the DFU interface */
        if ((USB_ControlRequest.bmRequestType & (CONTROL_REQTYPE_TYPE | CONTROL_REQTYPE_RECIPIENT)) !=
            (REQTYPE_CLASS | REQREC_INTERFACE))
@@ -192,6 +193,12 @@ void EVENT_USB_Device_ControlRequest(void)
                return;
        }
 
+       /* Activity - toggle indicator LEDs */
+       LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2);
+
+       /* Get the size of the command and data from the wLength value */
+       SentCommand.DataSize = USB_ControlRequest.wLength;
+
        switch (USB_ControlRequest.bRequest)
        {
                case DFU_REQ_DNLOAD:
@@ -739,4 +746,3 @@ static void ProcessReadCommand(void)
        else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01))                    // Read signature byte
          ResponseByte = SignatureInfo[DataIndexToRead - 0x30];
 }
-