From ff7864767786ba3af97caa599aec25a7700ef987 Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Sat, 16 Nov 2024 18:55:58 -0600 Subject: [PATCH] network: add flag for networking at build time for platforms that dont support it. --- .../BlueSCSI_platform.cpp | 1 - .../BlueSCSI_platform_gpio.h | 11 +++++++++-- .../BlueSCSI_platform_network.cpp | 15 ++++++--------- lib/SCSI2SD/src/firmware/network.c | 3 ++- lib/SCSI2SD/src/firmware/scsi.c | 8 ++++++-- platformio.ini | 1 + src/BlueSCSI.cpp | 5 ++++- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp index 6739af71..0d9dae92 100644 --- a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp +++ b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform.cpp @@ -34,7 +34,6 @@ #include "hardware/i2c.h" extern "C" { -#include const char *g_platform_name = PLATFORM_NAME; static bool g_scsi_initiator = false; diff --git a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h index ef903c63..39738ceb 100644 --- a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h +++ b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_gpio.h @@ -3,7 +3,9 @@ #pragma once #include +#ifdef BLUESCSI_NETWORK #include +#endif // SCSI data input/output port. // The data bus uses external bidirectional buffer, with @@ -56,8 +58,13 @@ // Status LED pins #define LED_PIN 25 -#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 +#ifdef BLUESCSI_NETWORK + #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 +#else + #define LED_ON() sio_hw->gpio_set = 1 << LED_PIN + #define LED_OFF() sio_hw->gpio_clr = 1 << LED_PIN +#endif // SDIO and SPI block #define SD_SPI_SCK 10 diff --git a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp index 7445022b..525034c4 100644 --- a/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp +++ b/lib/BlueSCSI_platform_RP2040/BlueSCSI_platform_network.cpp @@ -21,9 +21,10 @@ #include extern "C" { - +#ifdef BLUESCSI_NETWORK #include #include +#endif #ifndef CYW43_IOCTL_GET_RSSI #define CYW43_IOCTL_GET_RSSI (0xfe) @@ -34,17 +35,12 @@ static const char defaultMAC[] = { 0x00, 0x80, 0x19, 0xc0, 0xff, 0xee }; static bool network_in_use = false; -bool platform_network_supported() +bool __not_in_flash_func(platform_network_supported)() { - /* from cores/rp2040/RP2040Support.h */ -#if !defined(ARDUINO_RASPBERRY_PI_PICO_W) - return false; -#else - extern bool __isPicoW; - return __isPicoW; -#endif + return rp2040.isPicoW(); } +#ifdef BLUESCSI_NETWORK int platform_network_init(char *mac) { pico_unique_board_id_t board_id; @@ -311,4 +307,5 @@ void cyw43_cb_tcpip_set_link_up(cyw43_t *self, int itf) log_f("Successfully connected to Wi-Fi SSID \"%s\"", ssid); } +#endif } diff --git a/lib/SCSI2SD/src/firmware/network.c b/lib/SCSI2SD/src/firmware/network.c index 14280e26..e1ba9a9f 100644 --- a/lib/SCSI2SD/src/firmware/network.c +++ b/lib/SCSI2SD/src/firmware/network.c @@ -13,7 +13,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - +#ifdef BLUESCSI_NETWORK #include #include "scsi.h" @@ -528,3 +528,4 @@ int scsiNetworkPurge(void) return sent; } +#endif diff --git a/lib/SCSI2SD/src/firmware/scsi.c b/lib/SCSI2SD/src/firmware/scsi.c index 844b8e23..9ed23aa8 100755 --- a/lib/SCSI2SD/src/firmware/scsi.c +++ b/lib/SCSI2SD/src/firmware/scsi.c @@ -623,8 +623,12 @@ static void process_Command() // write commands. Will fall-through to generic disk handling. else if (((cfg->deviceType == S2S_CFG_OPTICAL) && scsiCDRomCommand()) || ((cfg->deviceType == S2S_CFG_SEQUENTIAL) && scsiTapeCommand()) || - ((cfg->deviceType == S2S_CFG_MO) && scsiMOCommand()) || - ((cfg->deviceType == S2S_CFG_NETWORK && scsiNetworkCommand()))) + ((cfg->deviceType == S2S_CFG_MO) && scsiMOCommand()) +#ifdef BLUESCSI_NETWORK + || ((cfg->deviceType == S2S_CFG_NETWORK && scsiNetworkCommand())) +#endif + ) + { // Already handled. } diff --git a/platformio.ini b/platformio.ini index f982fad7..85619e4e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -44,6 +44,7 @@ build_flags = -DUSE_ARDUINO=1 -DPICO_DEFAULT_I2C_SDA_PIN=16 -DPICO_DEFAULT_I2C_SCL_PIN=17 + -DBLUESCSI_NETWORK=1 ; build flags mirroring the framework-arduinopico#v4.1.1-DaynaPORT static library build -DPICO_CYW43_ARCH_POLL=1 -DCYW43_LWIP=0 diff --git a/src/BlueSCSI.cpp b/src/BlueSCSI.cpp index 1fee9f8c..38aa70bc 100644 --- a/src/BlueSCSI.cpp +++ b/src/BlueSCSI.cpp @@ -547,12 +547,13 @@ static void reinitSCSI() scsiPhyReset(); scsiDiskInit(); scsiInit(); - +#ifdef BLUESCSI_NETWORK if (scsiDiskCheckAnyNetworkDevicesConfigured()) { platform_network_init(scsiDev.boardCfg.wifiMACAddress); platform_network_wifi_join(scsiDev.boardCfg.wifiSSID, scsiDev.boardCfg.wifiPassword); } +#endif } void check_and_apply_sdio_delay() { @@ -714,7 +715,9 @@ extern "C" void bluescsi_main_loop(void) platform_reset_watchdog(); platform_poll(); diskEjectButtonUpdate(true); +#ifdef BLUESCSI_NETWORK platform_network_poll(); +#endif #ifdef PLATFORM_HAS_INITIATOR_MODE if (unlikely(platform_is_initiator_mode_enabled()))