\r
/** Flag to indicate if the bootloader is waiting to exit. When the host requests the bootloader to exit and\r
* jump to the application address it specifies, it sends two sequential commands which must be properly\r
- * acknowedged. Upon reception of the first the RunBootloader flag is cleared and the WaitForExit flag is set,\r
+ * acknowledged. Upon reception of the first the RunBootloader flag is cleared and the WaitForExit flag is set,\r
* causing the bootloader to wait for the final exit command before shutting down.\r
*/\r
bool WaitForExit = false;\r
MCUSR &= ~(1 << WDRF);\r
wdt_disable();\r
\r
- /* Disable Clock Division */\r
- SetSystemClockPrescaler(0);\r
+ /* Disable clock division */\r
+ clock_prescale_set(clock_div_1);\r
\r
/* Relocate the interrupt vector table to the bootloader section */\r
MCUCR = (1 << IVCE);\r
\r
Endpoint_ClearSetupOUT();\r
\r
- /* Send ZLP to the host to acknowedge the request */\r
+ /* Acknowledge status stage */\r
+ while (!(Endpoint_IsSetupINReady()));\r
Endpoint_ClearSetupIN();\r
\r
break;\r
\r
Endpoint_ClearSetupIN();\r
\r
- /* Send ZLP to the host to acknowedge the request */\r
+ /* Acknowledge status stage */\r
while (!(Endpoint_IsSetupOUTReceived()));\r
Endpoint_ClearSetupOUT();\r
\r
\r
Endpoint_ClearSetupIN();\r
\r
+ /* Acknowledge status stage */\r
while (!(Endpoint_IsSetupOUTReceived()));\r
Endpoint_ClearSetupOUT();\r
\r
\r
/* Reset the status value variable to the default OK status */\r
DFU_Status = OK;\r
- \r
- Endpoint_ClearSetupIN();\r
\r
+ /* Acknowledge status stage */\r
+ while (!(Endpoint_IsSetupINReady()));\r
+ Endpoint_ClearSetupIN();\r
+ \r
break;\r
case DFU_GETSTATE:\r
Endpoint_ClearSetupReceived();\r
\r
Endpoint_ClearSetupIN();\r
\r
+ /* Acknowledge status stage */\r
while (!(Endpoint_IsSetupOUTReceived()));\r
Endpoint_ClearSetupOUT();\r
\r
/* Reset the current state variable to the default idle state */\r
DFU_State = dfuIDLE;\r
\r
+ /* Acknowledge status stage */\r
+ while (!(Endpoint_IsSetupINReady()));\r
Endpoint_ClearSetupIN();\r
\r
break;\r
static void ProcessReadCommand(void)\r
{\r
const uint8_t BootloaderInfo[3] = {BOOTLOADER_VERSION, BOOTLOADER_ID_BYTE1, BOOTLOADER_ID_BYTE2};\r
- const uint8_t SignatureInfo[3] = {SIGNATURE_BYTE_1, SIGNATURE_BYTE_2, SIGNATURE_BYTE_3};\r
+ const uint8_t SignatureInfo[3] = {SIGNATURE_0, SIGNATURE_1, SIGNATURE_2};\r
\r
uint8_t DataIndexToRead = SentCommand.Data[1];\r
\r