diff --git a/arch/esp32/esp32.ini b/arch/esp32/esp32.ini index 810c9780ed6..4c37f157f18 100644 --- a/arch/esp32/esp32.ini +++ b/arch/esp32/esp32.ini @@ -6,7 +6,7 @@ platform = # renovate: datasource=custom.pio depName=platformio/espressif32 packageName=platformio/platform/espressif32 platformio/espressif32@6.11.0 -build_src_filter = +build_src_filter = ${arduino_base.build_src_filter} - - - - - upload_speed = 921600 @@ -32,7 +32,9 @@ build_flags = -DAXP_DEBUG_PORT=Serial -DCONFIG_BT_NIMBLE_ENABLED -DCONFIG_BT_NIMBLE_MAX_BONDS=6 # default is 3 + -DNIMBLE_TWO -DCONFIG_NIMBLE_CPP_LOG_LEVEL=2 + -DCONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED -DCONFIG_BT_NIMBLE_MAX_CCCDS=20 -DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192 -DESP_OPENSSL_SUPPRESS_LEGACY_WARNING @@ -53,7 +55,7 @@ lib_deps = # renovate: datasource=git-refs depName=meshtastic-esp32_https_server packageName=https://github.com/meshtastic/esp32_https_server gitBranch=master https://github.com/meshtastic/esp32_https_server/archive/3223704846752e6d545139204837bdb2a55459ca.zip # renovate: datasource=custom.pio depName=NimBLE-Arduino packageName=h2zero/library/NimBLE-Arduino - h2zero/NimBLE-Arduino@^1.4.3 + h2zero/NimBLE-Arduino@^2.3.6 # renovate: datasource=git-refs depName=libpax packageName=https://github.com/dbinfrago/libpax gitBranch=master https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip # renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib @@ -63,7 +65,7 @@ lib_deps = # renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto rweather/Crypto@0.4.0 -lib_ignore = +lib_ignore = segger_rtt ESP32 BLE Arduino diff --git a/arch/esp32/esp32c3.ini b/arch/esp32/esp32c3.ini index 2ba3036d0be..4d8a10f9e6d 100644 --- a/arch/esp32/esp32c3.ini +++ b/arch/esp32/esp32c3.ini @@ -4,3 +4,8 @@ custom_esp32_kind = esp32c3 monitor_speed = 115200 monitor_filters = esp32_c3_exception_decoder + +build_flags = + ${esp32_base.build_flags} + -DCONFIG_BT_NIMBLE_EXT_ADV=1 + -DCONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES=2 \ No newline at end of file diff --git a/arch/esp32/esp32s3.ini b/arch/esp32/esp32s3.ini index 8d8b6899e91..441a31463bf 100644 --- a/arch/esp32/esp32s3.ini +++ b/arch/esp32/esp32s3.ini @@ -3,3 +3,8 @@ extends = esp32_base custom_esp32_kind = esp32s3 monitor_speed = 115200 + +build_flags = + ${esp32_base.build_flags} + -DCONFIG_BT_NIMBLE_EXT_ADV=1 + -DCONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES=2 \ No newline at end of file diff --git a/src/nimble/NimbleBluetooth.cpp b/src/nimble/NimbleBluetooth.cpp index 69da258848d..5f48cf0c4bc 100644 --- a/src/nimble/NimbleBluetooth.cpp +++ b/src/nimble/NimbleBluetooth.cpp @@ -3,6 +3,7 @@ #include "BluetoothCommon.h" #include "NimbleBluetooth.h" #include "PowerFSM.h" +#include "PowerStatus.h" #include "StaticPointerQueue.h" #include "concurrency/OSThread.h" @@ -16,7 +17,9 @@ #ifdef NIMBLE_TWO #include "NimBLEAdvertising.h" +#ifdef CONFIG_BT_NIMBLE_EXT_ADV #include "NimBLEExtAdvertising.h" +#endif #include "PowerStatus.h" #endif @@ -401,7 +404,6 @@ class NimbleBluetoothToRadioCallback : public NimBLECharacteristicCallbacks virtual void onWrite(NimBLECharacteristic *pCharacteristic, NimBLEConnInfo &connInfo) #else virtual void onWrite(NimBLECharacteristic *pCharacteristic) - #endif { // CAUTION: This callback runs in the NimBLE task!!! Don't do anything except communicate with the main task's runOnce. @@ -777,7 +779,6 @@ bool NimbleBluetooth::isConnected() int NimbleBluetooth::getRssi() { -#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C6) if (!bleServer || !isConnected()) { return 0; // No active BLE connection } @@ -803,8 +804,6 @@ int NimbleBluetooth::getRssi() return rssi; } LOG_DEBUG("BLE RSSI read failed, rc=%d", rc); -#endif - return 0; } @@ -816,7 +815,11 @@ void NimbleBluetooth::setup() LOG_INFO("Init the NimBLE bluetooth module"); NimBLEDevice::init(getDeviceName()); +#ifdef NIMBLE_TWO + NimBLEDevice::setPower(9); +#else NimBLEDevice::setPower(ESP_PWR_LVL_P9); +#endif #if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C6) int mtuResult = NimBLEDevice::setMTU(kPreferredBleMtu); @@ -869,7 +872,8 @@ void NimbleBluetooth::setupService() ToRadioCharacteristic = bleService->createCharacteristic(TORADIO_UUID, NIMBLE_PROPERTY::WRITE); // Allow notifications so phones can stream FromRadio without polling. FromRadioCharacteristic = bleService->createCharacteristic(FROMRADIO_UUID, NIMBLE_PROPERTY::READ); - fromNumCharacteristic = bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ); + fromNumCharacteristic = + bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ, 4); logRadioCharacteristic = bleService->createCharacteristic(LOGRADIO_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ, 512U); } else { @@ -877,9 +881,9 @@ void NimbleBluetooth::setupService() TORADIO_UUID, NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_AUTHEN | NIMBLE_PROPERTY::WRITE_ENC); FromRadioCharacteristic = bleService->createCharacteristic( FROMRADIO_UUID, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC); - fromNumCharacteristic = - bleService->createCharacteristic(FROMNUM_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ | - NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC); + fromNumCharacteristic = bleService->createCharacteristic( + FROMNUM_UUID, + NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC, 4); logRadioCharacteristic = bleService->createCharacteristic( LOGRADIO_UUID, NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_AUTHEN | NIMBLE_PROPERTY::READ_ENC, 512U); @@ -912,7 +916,7 @@ void NimbleBluetooth::setupService() void NimbleBluetooth::startAdvertising() { -#ifdef NIMBLE_TWO +#if defined(NIMBLE_TWO) && defined(CONFIG_BT_NIMBLE_EXT_ADV) NimBLEExtAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); NimBLEExtAdvertisement legacyAdvertising; @@ -944,8 +948,17 @@ void NimbleBluetooth::startAdvertising() pAdvertising->reset(); pAdvertising->addServiceUUID(MESH_SERVICE_UUID); pAdvertising->addServiceUUID(NimBLEUUID((uint16_t)0x180f)); // 0x180F is the Battery Service - pAdvertising->start(0); +#if defined(NIMBLE_TWO) + NimBLEAdvertisementData scan; + scan.setName(getDeviceName()); + pAdvertising->setScanResponseData(scan); + pAdvertising->enableScanResponse(true); +#endif + if (!pAdvertising->start(0)) { + LOG_ERROR("BLE failed to start advertising"); + }; #endif + LOG_DEBUG("BLE Advertising started"); } /// Given a level between 0-100, update the BLE attribute diff --git a/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini index c87baa7bf88..2dca8e1a906 100644 --- a/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini +++ b/variants/esp32c3/diy/esp32c3_super_mini/platformio.ini @@ -4,7 +4,7 @@ extends = esp32c3_base board = esp32-c3-devkitm-1 build_flags = - ${esp32_base.build_flags} + ${esp32c3_base.build_flags} -D PRIVATE_HW -I variants/esp32c3/diy/esp32c3_super_mini -D ARDUINO_USB_MODE=1 diff --git a/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini index 5a72b9d7409..af386a6e2a1 100644 --- a/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini +++ b/variants/esp32c3/hackerboxes_esp32c3_oled/platformio.ini @@ -2,8 +2,8 @@ extends = esp32c3_base board = esp32-c3-devkitm-1 board_level = extra -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32c3_base.build_flags} -D PRIVATE_HW -D ARDUINO_USB_MODE=1 -D ARDUINO_USB_CDC_ON_BOOT=1 diff --git a/variants/esp32c3/heltec_esp32c3/platformio.ini b/variants/esp32c3/heltec_esp32c3/platformio.ini index 705e2e99691..350071a0894 100644 --- a/variants/esp32c3/heltec_esp32c3/platformio.ini +++ b/variants/esp32c3/heltec_esp32c3/platformio.ini @@ -2,8 +2,8 @@ extends = esp32c3_base board = esp32-c3-devkitm-1 board_level = pr -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32c3_base.build_flags} -D HELTEC_HT62 -I variants/esp32c3/heltec_esp32c3 monitor_speed = 115200 diff --git a/variants/esp32c3/heltec_hru_3601/platformio.ini b/variants/esp32c3/heltec_hru_3601/platformio.ini index b5ff63eae3c..bfc3799b3e9 100644 --- a/variants/esp32c3/heltec_hru_3601/platformio.ini +++ b/variants/esp32c3/heltec_hru_3601/platformio.ini @@ -2,7 +2,7 @@ extends = esp32c3_base board = adafruit_qtpy_esp32c3 build_flags = - ${esp32_base.build_flags} + ${esp32c3_base.build_flags} -D HELTEC_HRU_3601 -I variants/esp32c3/heltec_hru_3601 lib_deps = ${esp32c3_base.lib_deps} diff --git a/variants/esp32c3/m5stack-stamp-c3/platformio.ini b/variants/esp32c3/m5stack-stamp-c3/platformio.ini index 1072df664fd..5d99dc41095 100644 --- a/variants/esp32c3/m5stack-stamp-c3/platformio.ini +++ b/variants/esp32c3/m5stack-stamp-c3/platformio.ini @@ -2,8 +2,8 @@ extends = esp32c3_base board = esp32-c3-devkitm-1 board_level = extra -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32c3_base.build_flags} -D PRIVATE_HW -I variants/esp32c3/m5stack-stamp-c3 monitor_speed = 115200 diff --git a/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini index 57af0da82f8..d1727f0deb6 100644 --- a/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini +++ b/variants/esp32s3/bpi_picow_esp32_s3/platformio.ini @@ -10,7 +10,7 @@ upload_protocol = esptool lib_deps = ${esp32_base.lib_deps} caveman99/ESP32 Codec2@^1.0.1 -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D PRIVATE_HW -I variants/esp32s3/bpi_picow_esp32_s3 diff --git a/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini index 267544c40f5..f6edbd67d61 100644 --- a/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini +++ b/variants/esp32s3/diy/my_esp32s3_diy_eink/platformio.ini @@ -15,8 +15,8 @@ lib_deps = build_unflags = ${esp32s3_base.build_unflags} -DARDUINO_USB_MODE=1 -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D PRIVATE_HW -I variants/esp32s3/diy/my_esp32s3_diy_eink -Dmy diff --git a/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini index aa3e6e48221..5f735b7c526 100644 --- a/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini +++ b/variants/esp32s3/diy/my_esp32s3_diy_oled/platformio.ini @@ -14,8 +14,8 @@ lib_deps = build_unflags = ${esp32s3_base.build_unflags} -DARDUINO_USB_MODE=1 -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D PRIVATE_HW -I variants/esp32s3/diy/my_esp32s3_diy_oled -DBOARD_HAS_PSRAM diff --git a/variants/esp32s3/link32_s3_v1/platformio.ini b/variants/esp32s3/link32_s3_v1/platformio.ini index 8d88075c4fa..89d445e5cc3 100644 --- a/variants/esp32s3/link32_s3_v1/platformio.ini +++ b/variants/esp32s3/link32_s3_v1/platformio.ini @@ -1,8 +1,8 @@ [env:link32-s3-v1] extends = esp32s3_base board = esp32-s3-devkitc-1 -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D LINK_32 -I variants/esp32s3/link32_s3_v1 -DARDUINO_USB_CDC_ON_BOOT diff --git a/variants/esp32s3/m5stack_cores3/platformio.ini b/variants/esp32s3/m5stack_cores3/platformio.ini index 9973abfcec1..5f44a50a518 100644 --- a/variants/esp32s3/m5stack_cores3/platformio.ini +++ b/variants/esp32s3/m5stack_cores3/platformio.ini @@ -5,8 +5,8 @@ board = m5stack-cores3 board_check = true board_build.partitions = default_16MB.csv upload_protocol = esptool -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D PRIVATE_HW -D M5STACK_CORES3 -I variants/esp32s3/m5stack_cores3 diff --git a/variants/esp32s3/nibble_esp32/platformio.ini b/variants/esp32s3/nibble_esp32/platformio.ini index 2f6960d2e1d..2d9d4efd18c 100644 --- a/variants/esp32s3/nibble_esp32/platformio.ini +++ b/variants/esp32s3/nibble_esp32/platformio.ini @@ -2,7 +2,7 @@ extends = esp32s3_base board = esp32-s3-zero board_level = extra -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D PRIVATE_HW -I variants/esp32s3/nibble_esp32 diff --git a/variants/esp32s3/rak3312/platformio.ini b/variants/esp32s3/rak3312/platformio.ini index 0de36498f69..d7ce7cfec27 100644 --- a/variants/esp32s3/rak3312/platformio.ini +++ b/variants/esp32s3/rak3312/platformio.ini @@ -5,7 +5,7 @@ board_level = pr board_check = true upload_protocol = esptool -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D RAK3312 -I variants/esp32s3/rak3312 diff --git a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini index 25ec3ebfcbb..b13a44fe698 100644 --- a/variants/esp32s3/seeed-sensecap-indicator/platformio.ini +++ b/variants/esp32s3/seeed-sensecap-indicator/platformio.ini @@ -9,7 +9,8 @@ board_check = true board_build.partitions = partition-table-8MB.csv upload_protocol = esptool -build_flags = ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -Ivariants/esp32s3/seeed-sensecap-indicator -DSENSECAP_INDICATOR -DCONFIG_ARDUHAL_LOG_COLORS diff --git a/variants/esp32s3/t-deck-pro/platformio.ini b/variants/esp32s3/t-deck-pro/platformio.ini index 0b3c7843a35..2df75e48d37 100644 --- a/variants/esp32s3/t-deck-pro/platformio.ini +++ b/variants/esp32s3/t-deck-pro/platformio.ini @@ -4,8 +4,9 @@ board = t-deck-pro board_check = true upload_protocol = esptool -build_flags = - ${esp32_base.build_flags} -I variants/esp32s3/t-deck-pro +build_flags = + ${esp32s3_base.build_flags} + -I variants/esp32s3/t-deck-pro -D T_DECK_PRO -D USE_EINK -D EINK_DISPLAY_MODEL=GxEPD2_310_GDEQ031T10 diff --git a/variants/esp32s3/t-watch-s3/platformio.ini b/variants/esp32s3/t-watch-s3/platformio.ini index 59ff8891dcd..42575d6c778 100644 --- a/variants/esp32s3/t-watch-s3/platformio.ini +++ b/variants/esp32s3/t-watch-s3/platformio.ini @@ -6,7 +6,8 @@ board_check = true board_build.partitions = default_16MB.csv upload_protocol = esptool -build_flags = ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -DT_WATCH_S3 -Ivariants/esp32s3/t-watch-s3 -DPCF8563_RTC=0x51 diff --git a/variants/esp32s3/tlora_t3s3_epaper/platformio.ini b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini index eca052f5796..5e209829924 100644 --- a/variants/esp32s3/tlora_t3s3_epaper/platformio.ini +++ b/variants/esp32s3/tlora_t3s3_epaper/platformio.ini @@ -4,8 +4,8 @@ board = tlora-t3s3-v1 board_check = true upload_protocol = esptool -build_flags = - ${esp32_base.build_flags} +build_flags = + ${esp32s3_base.build_flags} -D TLORA_T3S3_EPAPER -I variants/esp32s3/tlora_t3s3_epaper -DUSE_EINK diff --git a/variants/esp32s3/tlora_t3s3_v1/platformio.ini b/variants/esp32s3/tlora_t3s3_v1/platformio.ini index 56ece0d6215..aec33cd1175 100644 --- a/variants/esp32s3/tlora_t3s3_v1/platformio.ini +++ b/variants/esp32s3/tlora_t3s3_v1/platformio.ini @@ -4,5 +4,5 @@ board = tlora-t3s3-v1 board_check = true upload_protocol = esptool -build_flags = - ${esp32_base.build_flags} -D TLORA_T3S3_V1 -I variants/esp32s3/tlora_t3s3_v1 +build_flags = + ${esp32s3_base.build_flags} -D TLORA_T3S3_V1 -I variants/esp32s3/tlora_t3s3_v1