Преглед изворни кода

Initiator Mode: Disable LED on Pico W, it's causing issues for an unknown reason

androda пре 1 година
родитељ
комит
93d7736469
3 измењених фајлова са 25 додато и 6 уклоњено
  1. 6 0
      lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h
  2. 1 1
      src/BlueSCSI.cpp
  3. 18 5
      src/BlueSCSI_initiator.cpp

+ 6 - 0
lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h

@@ -59,6 +59,12 @@
 #define LED_ON()     platform_network_supported() ? cyw43_gpio_set(&cyw43_state, 0, true) : sio_hw->gpio_set = 1 << LED_PIN
 #define LED_OFF()    platform_network_supported() ? cyw43_gpio_set(&cyw43_state, 0, false) : sio_hw->gpio_clr = 1 << LED_PIN
 
+#define STANDARD_LED_ON 	sio_hw->gpio_set = 1 << LED_PIN
+#define STANDARD_LED_OFF 	sio_hw->gpio_clr = 1 << LED_PIN
+
+#define W_LED_ON 	cyw43_gpio_set(&cyw43_state, 0, true)
+#define W_LED_OFF 	cyw43_gpio_set(&cyw43_state, 0, false)
+
 // SDIO and SPI block
 #define SD_SPI_SCK   10
 #define SDIO_CLK 10

+ 1 - 1
src/BlueSCSI.cpp

@@ -676,7 +676,7 @@ extern "C" void bluescsi_main_loop(void)
   platform_network_poll();
   
 #ifdef PLATFORM_HAS_INITIATOR_MODE
-  if (platform_is_initiator_mode_enabled())
+  if (unlikely(platform_is_initiator_mode_enabled()))
   {
     scsiInitiatorMainLoop();
     save_logfile();

+ 18 - 5
src/BlueSCSI_initiator.cpp

@@ -100,11 +100,15 @@ static void scsiInitiatorUpdateLed()
 
     if (phase <= duty)
     {
-        LED_ON();
+        if (!platform_network_supported()) {
+            STANDARD_LED_ON;
+        }
     }
     else
     {
-        LED_OFF();
+        if (!platform_network_supported()) {
+            STANDARD_LED_OFF;
+        }
     }
 }
 
@@ -143,7 +147,10 @@ void scsiInitiatorMainLoop()
 
             uint8_t inquiry_data[36];
 
-            LED_ON();
+            if (!platform_network_supported()) {
+                STANDARD_LED_ON;
+            }
+
             bool startstopok =
                 scsiTestUnitReady(g_initiator_state.target_id) &&
                 scsiStartStopUnit(g_initiator_state.target_id, true);
@@ -155,7 +162,10 @@ void scsiInitiatorMainLoop()
 
             bool inquiryok = startstopok &&
                 scsiInquiry(g_initiator_state.target_id, inquiry_data);
-            LED_OFF();
+
+            if (!platform_network_supported()) {
+                STANDARD_LED_OFF;
+            }
 
             uint64_t total_bytes = 0;
             if (readcapok)
@@ -252,7 +262,10 @@ void scsiInitiatorMainLoop()
         {
             scsiStartStopUnit(g_initiator_state.target_id, false);
             log("Finished imaging drive with id ", g_initiator_state.target_id);
-            LED_OFF();
+
+            if (!platform_network_supported()) {
+                STANDARD_LED_OFF;
+            }
 
             if (g_initiator_state.sectorcount != g_initiator_state.sectorcount_all)
             {