Sfoglia il codice sorgente

BlueSCSI_platform_RP2040: don't hard-code watchdog timer id

Otherwise we panic trying to claim an already-used id
joshua stein 2 anni fa
parent
commit
04b1e96065
1 ha cambiato i file con 17 aggiunte e 3 eliminazioni
  1. 17 3
      lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp

+ 17 - 3
lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp

@@ -576,9 +576,23 @@ void platform_reset_watchdog()
 
     if (!g_watchdog_initialized)
     {
-        hardware_alarm_claim(3);
-        hardware_alarm_set_callback(3, &watchdog_callback);
-        hardware_alarm_set_target(3, delayed_by_ms(get_absolute_time(), 1000));
+        int alarm_num = -1;
+        for (int i = 0; i < NUM_TIMERS; i++)
+        {
+            if (!hardware_alarm_is_claimed(i))
+            {
+                alarm_num = i;
+                break;
+            }
+        }
+        if (alarm_num == -1)
+        {
+            log("No free watchdog hardware alarms to claim");
+            return;
+        }
+        hardware_alarm_claim(alarm_num);
+        hardware_alarm_set_callback(alarm_num, &watchdog_callback);
+        hardware_alarm_set_target(alarm_num, delayed_by_ms(get_absolute_time(), 1000));
         g_watchdog_initialized = true;
     }