Procházet zdrojové kódy

reboot to uf2 via console and other console stuff

Eric Helgeson před 6 měsíci
rodič
revize
544953c530
1 změnil soubory, kde provedl 18 přidání a 5 odebrání
  1. 18 5
      lib/BlueSCSI_platform_RP2MCU/BlueSCSI_platform.cpp

+ 18 - 5
lib/BlueSCSI_platform_RP2MCU/BlueSCSI_platform.cpp

@@ -841,6 +841,7 @@ static void usb_input_poll()
     // Capture reboot key sequence
     static bool mass_storage_reboot_keyed = false;
     static bool basic_reboot_keyed = false;
+    static bool uf2_reboot_keyed = false;
     volatile uint32_t* scratch0 = (uint32_t *)(WATCHDOG_BASE + WATCHDOG_SCRATCH0_OFFSET);
     int32_t available = Serial.available();
     if(available > 0)
@@ -851,32 +852,44 @@ static void usb_input_poll()
             case 'R':
             case 'r':
                 basic_reboot_keyed = true;
-                mass_storage_reboot_keyed = false;
+                mass_storage_reboot_keyed = uf2_reboot_keyed = false;
                 logmsg("Basic reboot requested, press 'y' to engage or any key to clear");
                 break;
             case 'M':
             case 'm':
                 mass_storage_reboot_keyed = true;
-                basic_reboot_keyed = false;
+                basic_reboot_keyed = uf2_reboot_keyed = false;
                 logmsg("Boot into mass storage requested, press 'y' to engage or any key to clear");
                 *scratch0 = REBOOT_INTO_MASS_STORAGE_MAGIC_NUM;
                 break;
+            case 'B':
+            case 'b':
+                uf2_reboot_keyed = true;
+                basic_reboot_keyed = mass_storage_reboot_keyed = false;
+                logmsg("Boot into uf2 bootloader requested, press 'y' to engage or any key to clear");
+                break;
+            case 'd':
+            case 'D':
+                g_log_debug = !g_log_debug;
+                logmsg("Debug logging ", g_log_debug ? "enabled" : "disabled");
+                break;
             case 'Y':
             case 'y':
                 if (basic_reboot_keyed || mass_storage_reboot_keyed)
                 {
                     logmsg("Rebooting", mass_storage_reboot_keyed ? " into mass storage": "");
                     watchdog_reboot(0, 0, 2000);
+                } else if (uf2_reboot_keyed) {
+                    rom_reset_usb_boot(0, 0);
                 }
                 break;
             case '\n':
                 break;
 
             default:
-                if (basic_reboot_keyed || mass_storage_reboot_keyed)
+                if (basic_reboot_keyed || mass_storage_reboot_keyed || uf2_reboot_keyed)
                     logmsg("Cleared reboot setting");
-                mass_storage_reboot_keyed = false;
-                basic_reboot_keyed = false;
+                mass_storage_reboot_keyed =basic_reboot_keyed = uf2_reboot_keyed = false;
         }
     }
 #endif // PIO_FRAMEWORK_ARDUINO_NO_USB