{
/* Turn off the watchdog */
MCUSR &= ~(1<<WDRF);
- wdt_disable();
+ wdt_disable();
/* Clear the boot key and jump to the user application */
MagicBootKey = 0;
/* Shut down the USB and other board hardware drivers */
USB_Disable();
LEDs_Disable();
-
+
/* Disable Bootloader active LED toggle timer */
TIMSK1 = 0;
TCCR1B = 0;
case DFU_REQ_GETSTATUS:
Endpoint_ClearSETUP();
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
/* Write 8-bit status value */
Endpoint_Write_8(DFU_Status);
case DFU_REQ_GETSTATE:
Endpoint_ClearSETUP();
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
/* Write the current device state to the endpoint */
Endpoint_Write_8(DFU_State);