diff --git a/components/SPIS/src/SPIS.cpp b/components/SPIS/src/SPIS.cpp index e241d8a..5581622 100644 --- a/components/SPIS/src/SPIS.cpp +++ b/components/SPIS/src/SPIS.cpp @@ -112,27 +112,5 @@ void SPISClass::handleSetupComplete() xSemaphoreGiveFromISR(_readySemaphore, NULL); } -// ADAFRUIT-CHANGE: different pin -#if defined(CONFIG_IDF_TARGET_ESP32) -// SPISClass SPIS(VSPI_HOST, 1, 12, 23, 18, 5, 33); // Arduino's original -SPISClass SPIS(VSPI_HOST, - 1, // dmaChannel - 14, // mosiPin - 23, // misoPin - 18, // sclkPin - 5, // csPin - 33 // readyPin -); - -#elif defined(CONFIG_IDF_TARGET_ESP32C6) -// Temporary choices for Feather ESP32-C6 -SPISClass SPIS(SPI2_HOST, - SPI_DMA_CH_AUTO, - 22, // mosiPin - 23, // misoPin - 21, // sclkPin - 5, // csPin - 6 // readyPin -); - -#endif +// Move definition to sketch.ino.cpp +// SPISClass SPIS(VSPI_HOST, 1, 12, 23, 18, 5, 33); diff --git a/main/CommandHandler.cpp b/main/CommandHandler.cpp index e865a79..a178fa7 100644 --- a/main/CommandHandler.cpp +++ b/main/CommandHandler.cpp @@ -2412,7 +2412,13 @@ CommandHandlerClass::CommandHandlerClass() { } +#if defined(CONFIG_IDF_TARGET_ESP32) static const int GPIO_IRQ = 0; +#endif + +#if defined(CONFIG_IDF_TARGET_ESP32C6) +static const int GPIO_IRQ = 9; +#endif void CommandHandlerClass::begin() { diff --git a/main/sketch.ino.cpp b/main/sketch.ino.cpp index 2abfee0..1a33c3e 100644 --- a/main/sketch.ino.cpp +++ b/main/sketch.ino.cpp @@ -47,28 +47,70 @@ // UART debug is enabled on boot int debug = 1; +//-------------------------------------------------------------------- +// ADAFRUIT CHANGE +//-------------------------------------------------------------------- +#define AIRLIFT 1 +#define NINA_PRINTF(...) do { if (debug) { ets_printf(__VA_ARGS__); } } while (0) + #if defined(CONFIG_IDF_TARGET_ESP32) +// SPIS for WiFi +#define AIRLIFT_MOSI 14 +#define AIRLIFT_MISO 23 +#define AIRLIFT_SCK 18 +#define AIRLIFT_CS 5 +#define AIRLIFT_BUSY 33 // ready + +// UART for BLE HCI +#define AIRLIFT_RTS AIRLIFT_BUSY +#define AIRLIFT_CTS 0 // BOOT PIN + +// #define CONFIG_BT_LE_HCI_UART_RTS_PIN 33 // ESP_BUSY (ready) +// #define CONFIG_BT_LE_HCI_UART_CTS_PIN 0 // GPIO0 + extern const struct __sFILE_fake __sf_fake_stdin; extern const struct __sFILE_fake __sf_fake_stdout; extern const struct __sFILE_fake __sf_fake_stderr; + +// dev, dma, mosi, miso, sclk, cs, ready +SPISClass SPIS(VSPI_HOST, 1, AIRLIFT_MOSI, AIRLIFT_MISO, AIRLIFT_SCK, AIRLIFT_CS, AIRLIFT_BUSY); #endif #if defined(CONFIG_IDF_TARGET_ESP32C6) +// SPIS for WiFi +#define AIRLIFT_MOSI 21 +#define AIRLIFT_MISO 6 +#define AIRLIFT_SCK 22 +#define AIRLIFT_CS 7 +#define AIRLIFT_BUSY 18 // ready + +// UART for BLE HCI +// CONFIG_BT_LE_HCI_UART_RTS_PIN and CONFIG_BT_LE_HCI_UART_CTS_PIN are defined in sdkconfig.defaults.esp32c6 +// and used by hci_driver_uart_config() in hci_driver_uart.c. It should matches with BUSY and BOOT pins. #ifndef CONFIG_BT_LE_HCI_INTERFACE_USE_UART #error "Please Enable Uart for HCI" #endif + +#if CONFIG_BT_LE_HCI_UART_RTS_PIN != AIRLIFT_BUSY +#error "RTS pin must be the same as ready pin" #endif -// ADAFRUIT-CHANGE: AirLift conditionalization -#define AIRLIFT 1 +#if CONFIG_BT_LE_HCI_UART_CTS_PIN != 9 +#error "CTS pin must be the same as BOOT pin" +#endif -#define NINA_PRINTF(...) do { if (debug) { ets_printf(__VA_ARGS__); } } while (0) +// dev, dma, mosi, miso, sclk, cs, ready +SPISClass SPIS(SPI2_HOST, SPI_DMA_CH_AUTO, AIRLIFT_MOSI, AIRLIFT_MISO, AIRLIFT_SCK, AIRLIFT_CS, AIRLIFT_BUSY); +#endif -// Adafruit: prevent initArduino() to release BT memory +// prevent initArduino() to release BT memory extern "C" bool btInUse() { return true; } +//-------------------------------------------------------------------- +// +//-------------------------------------------------------------------- uint8_t* commandBuffer; uint8_t* responseBuffer; @@ -122,12 +164,14 @@ void setup() { setDebug(0); #endif +#if !AIRLIFT // put SWD and SWCLK pins connected to SAMD as inputs pinMode(15, INPUT); pinMode(21, INPUT); +#endif - pinMode(5, INPUT); - if (digitalRead(5) == LOW) { + pinMode(AIRLIFT_CS, INPUT); + if (digitalRead(AIRLIFT_CS) == LOW) { setupBluetooth(); } else { setupWiFi(); @@ -149,8 +193,7 @@ void setupBluetooth() { // TX GPIO1 & RX GPIO3 on ESP32 'hardware' UART // RTS on ESP_BUSY (GPIO33) // CTS on GPIO0 (GPIO0) - // uart_set_pin(UART_NUM_1, 1, 3, 33, 0); - uart_set_pin(UART_NUM_1, 14, 18, 33, 0); + uart_set_pin(UART_NUM_1, 1, 3, AIRLIFT_RTS, AIRLIFT_CTS); #elif defined(UNO_WIFI_REV2) uart_set_pin(UART_NUM_1, 1, 3, 33, 0); // TX, RX, RTS, CTS #elif defined(NANO_RP2040_CONNECT) diff --git a/sdkconfig.debug b/sdkconfig.debug index caf3bc1..fa7e7f9 100644 --- a/sdkconfig.debug +++ b/sdkconfig.debug @@ -1 +1 @@ -#CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG=y \ No newline at end of file +CONFIG_LOG_DEFAULT_LEVEL_INFO=y \ No newline at end of file diff --git a/sdkconfig.defaults b/sdkconfig.defaults index cedd94b..ed1deb0 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -1,11 +1,13 @@ # This file was generated using idf.py save-defconfig. It can be edited manually. # Espressif IoT Development Framework (ESP-IDF) 5.3.1 Project Minimal Configuration # +CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_AUTOSTART_ARDUINO=y CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN=y +CONFIG_ARDUHAL_ESP_LOG=y CONFIG_ARDUINO_SELECTIVE_COMPILATION=y CONFIG_COMPILER_OPTIMIZATION_SIZE=y CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y diff --git a/sdkconfig.defaults.esp32 b/sdkconfig.defaults.esp32 index abf1068..b7844ea 100644 --- a/sdkconfig.defaults.esp32 +++ b/sdkconfig.defaults.esp32 @@ -1,2 +1,2 @@ CONFIG_BTDM_CTRL_HCI_MODE_UART_H4=y -CONFIG_BTDM_CTRL_HCI_UART_BAUDRATE=115200 \ No newline at end of file +CONFIG_BTDM_CTRL_HCI_UART_BAUDRATE=115200 diff --git a/sdkconfig.defaults.esp32c6 b/sdkconfig.defaults.esp32c6 index 4733827..c7df769 100644 --- a/sdkconfig.defaults.esp32c6 +++ b/sdkconfig.defaults.esp32c6 @@ -1,9 +1,8 @@ # BT_LE_HCI CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y -CONFIG_BT_LE_HCI_UART_PORT=1 -CONFIG_BT_LE_HCI_UART_BAUD=115200 CONFIG_BT_LE_HCI_UART_FLOWCTRL=y CONFIG_BT_LE_HCI_UART_TX_PIN=16 CONFIG_BT_LE_HCI_UART_RX_PIN=17 -CONFIG_BT_LE_HCI_UART_RTS_PIN=6 -CONFIG_BT_LE_HCI_UART_CTS_PIN=0 +CONFIG_BT_LE_HCI_UART_RTS_PIN=18 +CONFIG_BT_LE_HCI_UART_CTS_PIN=9 +CONFIG_BT_LE_HCI_UART_BAUD=115200