-       struct
-       {
-               uint16_t BytesToWrite;
-               uint8_t  ProgrammingMode;
-               uint8_t  DelayMS;
-               uint8_t  ProgrammingCommands[3];
-               uint8_t  PollValue1;
-               uint8_t  PollValue2;
-               uint8_t  ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the
-       } Write_Memory_Params;      // whole page and ACK the packet as fast as possible to prevent it from aborting
-
-       Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
-                                                      sizeof(Write_Memory_Params.ProgData)), NULL);
-       Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite);
-
-       if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
-       {
-               Endpoint_ClearOUT();
-               Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
-               Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
-
-               Endpoint_Write_8(V2Command);
-               Endpoint_Write_8(STATUS_CMD_FAILED);
-               Endpoint_ClearIN();
-               return;
-       }
-
-       Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NULL);
-
-       // The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
-       // to catch this and discard it before continuing on with packet processing to prevent communication issues
-       if (((sizeof(uint8_t) + sizeof(Write_Memory_Params) - sizeof(Write_Memory_Params.ProgData)) +
-           Write_Memory_Params.BytesToWrite) % AVRISP_DATA_EPSIZE == 0)
-       {
-               Endpoint_ClearOUT();
-               Endpoint_WaitUntilReady();
-       }
-
-       Endpoint_ClearOUT();
-       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
-       Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
-
-       uint8_t  ProgrammingStatus = STATUS_CMD_OK;
-       uint8_t  PollValue         = (V2Command == CMD_PROGRAM_FLASH_ISP) ? Write_Memory_Params.PollValue1 :
-                                                                           Write_Memory_Params.PollValue2;
-       uint16_t PollAddress       = 0;
-       uint8_t* NextWriteByte     = Write_Memory_Params.ProgData;
-       uint16_t PageStartAddress  = (CurrentAddress & 0xFFFF);
-
-       for (uint16_t CurrentByte = 0; CurrentByte < Write_Memory_Params.BytesToWrite; CurrentByte++)
-       {
-               uint8_t ByteToWrite     = *(NextWriteByte++);
-               uint8_t ProgrammingMode = Write_Memory_Params.ProgrammingMode;
-
-               /* Check to see if we need to send a LOAD EXTENDED ADDRESS command to the target */
-               if (MustLoadExtendedAddress)
-               {
-                       ISPTarget_LoadExtendedAddress();
-                       MustLoadExtendedAddress = false;
-               }
-
-               ISPTarget_SendByte(Write_Memory_Params.ProgrammingCommands[0]);
-               ISPTarget_SendByte(CurrentAddress >> 8);
-               ISPTarget_SendByte(CurrentAddress & 0xFF);
-               ISPTarget_SendByte(ByteToWrite);
-
-               /* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
-                * or low byte at the current word address */
-               if (V2Command == CMD_PROGRAM_FLASH_ISP)
-                 Write_Memory_Params.ProgrammingCommands[0] ^= READ_WRITE_HIGH_BYTE_MASK;
-
-               /* Check to see if we have a valid polling address */
-               if (!(PollAddress) && (ByteToWrite != PollValue))
-               {
-                       if ((CurrentByte & 0x01) && (V2Command == CMD_PROGRAM_FLASH_ISP))
-                         Write_Memory_Params.ProgrammingCommands[2] |=  READ_WRITE_HIGH_BYTE_MASK;
-                       else
-                         Write_Memory_Params.ProgrammingCommands[2] &= ~READ_WRITE_HIGH_BYTE_MASK;
-
-                       PollAddress = (CurrentAddress & 0xFFFF);
-               }
-
-               /* If in word programming mode, commit the byte to the target's memory */
-               if (!(ProgrammingMode & PROG_MODE_PAGED_WRITES_MASK))
-               {
-                       /* If the current polling address is invalid, switch to timed delay write completion mode */
-                       if (!(PollAddress) && !(ProgrammingMode & PROG_MODE_WORD_READYBUSY_MASK))
-                         ProgrammingMode = (ProgrammingMode & ~PROG_MODE_WORD_VALUE_MASK) | PROG_MODE_WORD_TIMEDELAY_MASK;
-
-                       ProgrammingStatus = ISPTarget_WaitForProgComplete(ProgrammingMode, PollAddress, PollValue,
-                                                                         Write_Memory_Params.DelayMS,
-                                                                         Write_Memory_Params.ProgrammingCommands[2]);
-
-                       /* Abort the programming loop early if the byte/word programming failed */
-                       if (ProgrammingStatus != STATUS_CMD_OK)
-                         break;
-
-                       /* Must reset the polling address afterwards, so it is not erroneously used for the next byte */
-                       PollAddress = 0;
-               }
-
-               /* EEPROM just increments the address each byte, flash needs to increment on each word and
-                * also check to ensure that a LOAD EXTENDED ADDRESS command is issued each time the extended
-                * address boundary has been crossed during FLASH memory programming */
-               if ((CurrentByte & 0x01) || (V2Command == CMD_PROGRAM_EEPROM_ISP))
-               {
-                       CurrentAddress++;
-
-                       if ((V2Command == CMD_PROGRAM_FLASH_ISP) && !(CurrentAddress & 0xFFFF))
-                         MustLoadExtendedAddress = true;
-               }
-       }
-
-       /* If the current page must be committed, send the PROGRAM PAGE command to the target */
-       if (Write_Memory_Params.ProgrammingMode & PROG_MODE_COMMIT_PAGE_MASK)
-       {
-               ISPTarget_SendByte(Write_Memory_Params.ProgrammingCommands[1]);
-               ISPTarget_SendByte(PageStartAddress >> 8);
-               ISPTarget_SendByte(PageStartAddress & 0xFF);
-               ISPTarget_SendByte(0x00);
-
-               /* Check if polling is enabled and possible, if not switch to timed delay mode */
-               if ((Write_Memory_Params.ProgrammingMode & PROG_MODE_PAGED_VALUE_MASK) && !(PollAddress))
-               {
-                       Write_Memory_Params.ProgrammingMode = (Write_Memory_Params.ProgrammingMode & ~PROG_MODE_PAGED_VALUE_MASK) |
-                                                                                                  PROG_MODE_PAGED_TIMEDELAY_MASK;
-               }
-
-               ProgrammingStatus = ISPTarget_WaitForProgComplete(Write_Memory_Params.ProgrammingMode, PollAddress, PollValue,
-                                                                 Write_Memory_Params.DelayMS,
-                                                                 Write_Memory_Params.ProgrammingCommands[2]);
-
-               /* Check to see if the FLASH address has crossed the extended address boundary */
-               if ((V2Command == CMD_PROGRAM_FLASH_ISP) && !(CurrentAddress & 0xFFFF))
-                 MustLoadExtendedAddress = true;
-       }
-
-       Endpoint_Write_8(V2Command);
-       Endpoint_Write_8(ProgrammingStatus);
-       Endpoint_ClearIN();
+    struct
+    {
+        uint16_t BytesToWrite;
+        uint8_t  ProgrammingMode;
+        uint8_t  DelayMS;
+        uint8_t  ProgrammingCommands[3];
+        uint8_t  PollValue1;
+        uint8_t  PollValue2;
+        uint8_t  ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the
+    } Write_Memory_Params;      // whole page and ACK the packet as fast as possible to prevent it from aborting
+
+    Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
+                                                   sizeof(Write_Memory_Params.ProgData)), NULL);
+    Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite);
+
+    if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
+    {
+        Endpoint_ClearOUT();
+        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
+        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
+
+        Endpoint_Write_8(V2Command);
+        Endpoint_Write_8(STATUS_CMD_FAILED);
+        Endpoint_ClearIN();
+        return;
+    }
+
+    Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NULL);
+
+    // The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
+    // to catch this and discard it before continuing on with packet processing to prevent communication issues
+    if (((sizeof(uint8_t) + sizeof(Write_Memory_Params) - sizeof(Write_Memory_Params.ProgData)) +
+        Write_Memory_Params.BytesToWrite) % AVRISP_DATA_EPSIZE == 0)
+    {
+        Endpoint_ClearOUT();
+        Endpoint_WaitUntilReady();
+    }
+
+    Endpoint_ClearOUT();
+    Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
+    Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
+
+    uint8_t  ProgrammingStatus = STATUS_CMD_OK;
+    uint8_t  PollValue         = (V2Command == CMD_PROGRAM_FLASH_ISP) ? Write_Memory_Params.PollValue1 :
+                                                                        Write_Memory_Params.PollValue2;
+    uint16_t PollAddress       = 0;
+    uint8_t* NextWriteByte     = Write_Memory_Params.ProgData;
+    uint16_t PageStartAddress  = (CurrentAddress & 0xFFFF);
+
+    for (uint16_t CurrentByte = 0; CurrentByte < Write_Memory_Params.BytesToWrite; CurrentByte++)
+    {
+        uint8_t ByteToWrite     = *(NextWriteByte++);
+        uint8_t ProgrammingMode = Write_Memory_Params.ProgrammingMode;
+
+        /* Check to see if we need to send a LOAD EXTENDED ADDRESS command to the target */
+        if (MustLoadExtendedAddress)
+        {
+            ISPTarget_LoadExtendedAddress();
+            MustLoadExtendedAddress = false;
+        }
+
+        ISPTarget_SendByte(Write_Memory_Params.ProgrammingCommands[0]);
+        ISPTarget_SendByte(CurrentAddress >> 8);
+        ISPTarget_SendByte(CurrentAddress & 0xFF);
+        ISPTarget_SendByte(ByteToWrite);
+
+        /* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
+         * or low byte at the current word address */
+        if (V2Command == CMD_PROGRAM_FLASH_ISP)
+          Write_Memory_Params.ProgrammingCommands[0] ^= READ_WRITE_HIGH_BYTE_MASK;
+
+        /* Check to see if we have a valid polling address */
+        if (!(PollAddress) && (ByteToWrite != PollValue))
+        {
+            if ((CurrentByte & 0x01) && (V2Command == CMD_PROGRAM_FLASH_ISP))
+              Write_Memory_Params.ProgrammingCommands[2] |=  READ_WRITE_HIGH_BYTE_MASK;
+            else
+              Write_Memory_Params.ProgrammingCommands[2] &= ~READ_WRITE_HIGH_BYTE_MASK;
+
+            PollAddress = (CurrentAddress & 0xFFFF);
+        }
+
+        /* If in word programming mode, commit the byte to the target's memory */
+        if (!(ProgrammingMode & PROG_MODE_PAGED_WRITES_MASK))
+        {
+            /* If the current polling address is invalid, switch to timed delay write completion mode */
+            if (!(PollAddress) && !(ProgrammingMode & PROG_MODE_WORD_READYBUSY_MASK))
+              ProgrammingMode = (ProgrammingMode & ~PROG_MODE_WORD_VALUE_MASK) | PROG_MODE_WORD_TIMEDELAY_MASK;
+
+            ProgrammingStatus = ISPTarget_WaitForProgComplete(ProgrammingMode, PollAddress, PollValue,
+                                                              Write_Memory_Params.DelayMS,
+                                                              Write_Memory_Params.ProgrammingCommands[2]);
+
+            /* Abort the programming loop early if the byte/word programming failed */
+            if (ProgrammingStatus != STATUS_CMD_OK)
+              break;
+
+            /* Must reset the polling address afterwards, so it is not erroneously used for the next byte */
+            PollAddress = 0;
+        }
+
+        /* EEPROM just increments the address each byte, flash needs to increment on each word and
+         * also check to ensure that a LOAD EXTENDED ADDRESS command is issued each time the extended
+         * address boundary has been crossed during FLASH memory programming */
+        if ((CurrentByte & 0x01) || (V2Command == CMD_PROGRAM_EEPROM_ISP))
+        {
+            CurrentAddress++;
+
+            if ((V2Command == CMD_PROGRAM_FLASH_ISP) && !(CurrentAddress & 0xFFFF))
+              MustLoadExtendedAddress = true;
+        }
+    }
+
+    /* If the current page must be committed, send the PROGRAM PAGE command to the target */
+    if (Write_Memory_Params.ProgrammingMode & PROG_MODE_COMMIT_PAGE_MASK)
+    {
+        ISPTarget_SendByte(Write_Memory_Params.ProgrammingCommands[1]);
+        ISPTarget_SendByte(PageStartAddress >> 8);
+        ISPTarget_SendByte(PageStartAddress & 0xFF);
+        ISPTarget_SendByte(0x00);
+
+        /* Check if polling is enabled and possible, if not switch to timed delay mode */
+        if ((Write_Memory_Params.ProgrammingMode & PROG_MODE_PAGED_VALUE_MASK) && !(PollAddress))
+        {
+            Write_Memory_Params.ProgrammingMode = (Write_Memory_Params.ProgrammingMode & ~PROG_MODE_PAGED_VALUE_MASK) |
+                                                   PROG_MODE_PAGED_TIMEDELAY_MASK;
+        }
+
+        ProgrammingStatus = ISPTarget_WaitForProgComplete(Write_Memory_Params.ProgrammingMode, PollAddress, PollValue,
+                                                          Write_Memory_Params.DelayMS,
+                                                          Write_Memory_Params.ProgrammingCommands[2]);
+
+        /* Check to see if the FLASH address has crossed the extended address boundary */
+        if ((V2Command == CMD_PROGRAM_FLASH_ISP) && !(CurrentAddress & 0xFFFF))
+          MustLoadExtendedAddress = true;
+    }
+
+    Endpoint_Write_8(V2Command);
+    Endpoint_Write_8(ProgrammingStatus);
+    Endpoint_ClearIN();