Allow the title of top level pages to be overridden in the Atmel Studio help.
[pub/USBasp.git] / Bootloaders / MassStorage / BootloaderMassStorage.c
index 7adeace..28f42b6 100644 (file)
@@ -61,6 +61,42 @@ USB_ClassInfo_MS_Device_t Disk_MS_Interface =
        };
 
 
+void Application_Jump_Check(void)
+{
+       bool JumpToApplication = false;
+
+       #if (BOARD == BOARD_LEONARDO)
+               /* Enable pull-up on the IO13 pin so we can use it to select the mode */
+               PORTC |=  (1 << 7);
+               Delay_MS(10);
+
+               /* If IO13 is not jumpered to ground, start the user application instead */
+               JumpToApplication |= ((PINC & (1 << 7)) != 0);
+
+               /* Disable pull-up after the check has completed */
+               PORTC &= ~(1 << 7);
+       #elif ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
+               /* Disable JTAG debugging */
+               JTAG_DISABLE();
+
+               /* Enable pull-up on the JTAG TCK pin so we can use it to select the mode */
+               PORTF |= (1 << 4);
+               Delay_MS(10);
+
+               /* If the TCK pin is not jumpered to ground, start the user application instead */
+               JumpToApplication |= ((PINF & (1 << 4)) != 0);
+
+               /* Re-enable JTAG debugging */
+               JTAG_ENABLE();
+       #endif
+
+       if (JumpToApplication)
+       {
+               // cppcheck-suppress constStatement
+               ((void (*)(void))0x0000)();
+       }
+}
+
 /** Main program entry point. This routine configures the hardware required by the application, then
  *  enters a loop to run the application tasks in sequence.
  */